Datensatzwechsel im Ufo auf Hfo anwenden
Moin,
komme nicht so recht weiter, folgendes Problem: Ich habe ein Formular mit einem Unterformular (Ufo) in Datenblattansicht. Bei einem Datensatzwechsel im Ufo (der Benutzer klickt in einen anderen Satz) soll dieser neu ausgewählte Datensatz auch im Hfo angezeigt werden. Leider funktionieren die ganzen Ereignisse irgendwie im Ufo nicht (Form_Current, Click, etc.) und der Satz im Hfo wird nicht gewechselt. Dabei ist es egal, ob das Ufo verknüpft oder nicht verknüpft ist
Habe auch schon versucht über ein Textfeld im Hfo die Datensatznummer anzeigen zu lassen. Dies geht auch wunderbar, aber die normalen Ereignisse greifen nicht, da der Inhalt selbst ja nicht geändert wird (=me!Ufo!Steuerelement).
Kennt Jemand ein Ereignis was bei dem Textfeld greifen würde, bzw. eine andere Lösung um den Datensatz im Hfo zu wechseln ?
Das ganze ist noch in einer mdb-DB realisiert (Access 2003).
Danke schon einmal
Janni
komme nicht so recht weiter, folgendes Problem: Ich habe ein Formular mit einem Unterformular (Ufo) in Datenblattansicht. Bei einem Datensatzwechsel im Ufo (der Benutzer klickt in einen anderen Satz) soll dieser neu ausgewählte Datensatz auch im Hfo angezeigt werden. Leider funktionieren die ganzen Ereignisse irgendwie im Ufo nicht (Form_Current, Click, etc.) und der Satz im Hfo wird nicht gewechselt. Dabei ist es egal, ob das Ufo verknüpft oder nicht verknüpft ist
Habe auch schon versucht über ein Textfeld im Hfo die Datensatznummer anzeigen zu lassen. Dies geht auch wunderbar, aber die normalen Ereignisse greifen nicht, da der Inhalt selbst ja nicht geändert wird (=me!Ufo!Steuerelement).
Kennt Jemand ein Ereignis was bei dem Textfeld greifen würde, bzw. eine andere Lösung um den Datensatz im Hfo zu wechseln ?
Das ganze ist noch in einer mdb-DB realisiert (Access 2003).
Danke schon einmal
Janni
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 156498
Url: https://administrator.de/contentid/156498
Ausgedruckt am: 21.11.2024 um 16:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
eine Lösung (ich weiß nicht, ob es die eleganteste ist), ist folgende:
Im Unterformular definierst Du folgende Prozedur, wobei "Key" der Primärschlüssel oder zumindest ein eindeutiger Schlüssel ist:
Damit schaltet das Hauptformular um, wenn Du auf den "Datensatzbezeichner" klickst. Wenn das Hauptformular auch bei jedem Klick in ein Datenfeld umschalten soll, musst Du die Zeile
in die "Beim Klicken"-Ereignisprozedur jedes Datenfeldes schreiben.
Im Code des Hauptformulars (frmHfo) wir dann die Prozedur OpRecord definiert:
Das ist jetzt alles natürlich nur ein Grundgerüst ohne Fehlerbehandlung etc. Wenn man das Ganze in der Entwurfsansicht von Access erstellt, muss man ziemlich aufpassen, beim Schreiben der Ereignisprozeduren auch das richtige Objekt ausgewählt zu haben. Es empfiehlt sich auf jeden Fall im VBA-Editor eine Kontrolle, dass die Form_Click() und FeldXY_Click()-Prozeduren auch dem Unterformular und die OpRecord-Prozedur dem Hauptformular zugeordnet sind bzw. ist.
Grüße
eine Lösung (ich weiß nicht, ob es die eleganteste ist), ist folgende:
Im Unterformular definierst Du folgende Prozedur, wobei "Key" der Primärschlüssel oder zumindest ein eindeutiger Schlüssel ist:
Private Sub Form_Click()
Rem Prozedur OpRecord des Hauptformulars mit dem Schlüssel des angeklickten Datensatzes als Argument aufrufen
Form_frmHfo.OpRecord(Me.Key)
End Sub
Damit schaltet das Hauptformular um, wenn Du auf den "Datensatzbezeichner" klickst. Wenn das Hauptformular auch bei jedem Klick in ein Datenfeld umschalten soll, musst Du die Zeile
Form_frmHfo.OpRecord(Me.Key)
Im Code des Hauptformulars (frmHfo) wir dann die Prozedur OpRecord definiert:
Public Sub OpRecord(Key As Long)
Dim rst As DAO.Recordset
Dim stcond As String
Set rst = Me.Recordset
Rem Bedingung formulieren
stcond = "Key=" & Key
Rem Ersten passenden Datensatz suchen, da Schlüssel eindeutig, braucht man keine weiteren zu suchen
rst.FindFirst (stcond)
End Sub
Das ist jetzt alles natürlich nur ein Grundgerüst ohne Fehlerbehandlung etc. Wenn man das Ganze in der Entwurfsansicht von Access erstellt, muss man ziemlich aufpassen, beim Schreiben der Ereignisprozeduren auch das richtige Objekt ausgewählt zu haben. Es empfiehlt sich auf jeden Fall im VBA-Editor eine Kontrolle, dass die Form_Click() und FeldXY_Click()-Prozeduren auch dem Unterformular und die OpRecord-Prozedur dem Hauptformular zugeordnet sind bzw. ist.
Grüße
Hallo,
beim Kombinationsfeld wird das Ereignis "Click" offenbar erst ausgelöst, wenn ein Wert aus der Liste angeklickt wird. Daher braucht man zusätzlich den Aufruf der OpRecord-Prozedur beim Fokuserhalt oder Hingehen, also Ereignis "GotFocus" oder "Enter". Bei "Click" muss der Aufruf aber bleiben, da sonst das Hfo nach der Auswahl aus der Liste nicht sofort, sondern erst bei der nächsten Auswahl aktualisiert wird. Auch im Tectfeld kann man statt Click natürlich Enter oder GotFocus wählen, was sogar geschickter ist, da dann das Hfo auch aktualisiert wird, wenn man das Textfeld nicht mit der Maus, sondern per Tab-Taste auswählt.
Der Gesamtcode im sieht dann so aus:
Das Neu-Hinzufügen von Datensätzen über das Ufo muss auch noch extra abgefangen werden.
Grüße
beim Kombinationsfeld wird das Ereignis "Click" offenbar erst ausgelöst, wenn ein Wert aus der Liste angeklickt wird. Daher braucht man zusätzlich den Aufruf der OpRecord-Prozedur beim Fokuserhalt oder Hingehen, also Ereignis "GotFocus" oder "Enter". Bei "Click" muss der Aufruf aber bleiben, da sonst das Hfo nach der Auswahl aus der Liste nicht sofort, sondern erst bei der nächsten Auswahl aktualisiert wird. Auch im Tectfeld kann man statt Click natürlich Enter oder GotFocus wählen, was sogar geschickter ist, da dann das Hfo auch aktualisiert wird, wenn man das Textfeld nicht mit der Maus, sondern per Tab-Taste auswählt.
Der Gesamtcode im sieht dann so aus:
Private Sub Form_Click()
Form_frmHfo.OpRecord (Me.Key)
End Sub
Private Sub Kombinationsfeld_Click()
Form_frmHfo.OpRecord (Me.Key)
End Sub
Private Sub Kombinationsfeld_Enter()
Form_frmHfo.OpRecord (Me.Key)
End Sub
Private Sub Textfeld_Enter()
Form_frmHfo.OpRecord (Me.Key)
End Sub
Das Neu-Hinzufügen von Datensätzen über das Ufo muss auch noch extra abgefangen werden.
Grüße
Moin,
komisch, meine Antwort von gestern ist irgendwie "wech"...
Also nochmal:
Wann genau kommt die Fehlermeldung? Was ist markiert, wenn Du dann auf "Debuggen" klickst? Was für Code entsteht denn, wenn Du im Eigenschaftenfenster des Steuerelements beim Ereignis "Hingehen" dann "Code" auswählst?
Vielleicht postest Du hier einmal Deinen Code, bei mir funktioniert das nämlich (getestet unter Access 2010, 2007 und 2002).
Grüße
komisch, meine Antwort von gestern ist irgendwie "wech"...
Also nochmal:
Wann genau kommt die Fehlermeldung? Was ist markiert, wenn Du dann auf "Debuggen" klickst? Was für Code entsteht denn, wenn Du im Eigenschaftenfenster des Steuerelements beim Ereignis "Hingehen" dann "Code" auswählst?
Vielleicht postest Du hier einmal Deinen Code, bei mir funktioniert das nämlich (getestet unter Access 2010, 2007 und 2002).
Grüße