PDA

Vollständige Version anzeigen : Schaltfläche anzeigen wenn ID in 2 Tabellen gleich ist


kayd
21.01.2008, 17:09
Hallo,

zum Thema Schaltfläche anzeigen habe ich einiges gefunden aber in meinem Fall finde ich keine Lösung.

Habe 1 Formular "Weitergeben" gebunden an die Tabelle "Weiergeben" und ein Formular "Weitergeben Hist" gebunden an die Tabelle "Weitergeben Hist". Wenn eine "id" in beiden Tabellen gleich ist, kann vom Forular "Weitergeben" aus über einen Button "History" das Formular "Weitergeben Hist" zur Ansicht der historischen Daten des aktuellen Datensatzes geöffnet werden.

Das funktioniert so:

Private Sub History_Click()
On Error GoTo Err_History_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "Weitergeben Hist"

stLinkCriteria = "[id]=" & Me![id]
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_History_Click:
Exit Sub

Err_History_Click:
MsgBox Err.Description
Resume Exit_History_Click

End Sub

Allerdings sind meist keine historischen Daten vorhanden. Da wäre es schön wenn der Button nur bei in beiden Tabellen vorhandener gleicher "id" eingeblendet wäre. Der Button befindet sich im Formularkopf.

Hat jemand eine Lösung?

Arne Dieckmann
21.01.2008, 17:13
Werte das Vorhandensein im Formular-Ereignis "Beim Anzeigen" aus.
If DCount("*","Weitergeben Hist","ID=" & Nz(Me!ID,0)) >0 Then
Me!History.Enabled=True
Else
Me!History.Enabled=False
End If

Oder verwende diesen Einzeiler im besagten Ereignis:
Me!History.Enabled = DCount("*","Weitergeben Hist","ID=" & Nz(Me!ID,0)) >0

Statt <span style="font-family:Courier New;color:#000080;">.Enabled </span>kannst du auch <span style="font-family:Courier New;color:#000080;">.Visible </span>nehmen (ich find's so aber schöner ;)).

peterffw
21.01.2008, 17:18
Hi,
hast Du in deinem Formular "Weitergeben" beide Tabellen im Zugriff?
Dann einfach per vergleich

if id = idhistorie then
me!DeinButtonhistorie.visible = true
else
me!DeinButtonhistorie.visible = false
end if

Wenn Du die Historientabelle nicht im Zugriff hast, dann z.B. mit einem "Dlookup" Befehl in der Historientabelle nachsehen ob ein Treffer gefunden wurde. "Dlookup" liefert dann true und dann den Button einblenden oder ausblenden.

Wenn Du genauere Befehle brauchst müsste man dein Umfeld kennen. Sind das Endlosformulare, Einzelformulare, gebunden oder nicht gebunden!!

Servus
Peter

kayd
21.01.2008, 17:31
Das Leben kann so einfach sein - wenn man Ahnung hat!

Code 2 von Arne ist der Volltreffer.

Danke Arne & Peter.