Hallo,
ich habe eine funktionierende Suche für meine Sammlung welche über ein eigens erstelltes Formular läuft. Ich kann dann von dort aus in den gesuchten Datensatz im Erfassungsformular springen. Jetzt ist mir aber aufgefallen, dass wenn ich Spiele aus der Sammlung vergleiche, dass ich dann doch immer sehr oft zum zuvor aufgerufenen Datensatz noch einmal zurück muss. Gerade bei Dupletten kommt dies sehr häufig vor. Dann muss ich wieder ins Suchformular zurück, den Datensatz anwählen was ein wenig umständlich ist bzw. sein kann. Gibt es eine Möglichkeit, dass wenn man sich im Erfassungsformular befindet, von dort aus den zuvor ausgewählten Datensatz wieder aufrufen kann, z.B. via Commandbutton? Wenn ja, wie ist dies lösbar? VBA technisch bin ich leider ein ziemlicher Ausfall. Für Tips wäre ich dankbar.
mfG
Andreas Müller
Hallo,,
das sollte weiterhelfen:
http://www.donkarl.com/?FAQ4.5
der vorhergehende DS muss halt gemerkt werden.....
Hallo Andreas,
dazu brauchst du eine Variable, in der du dir die aktuelle Spiele-ID merken kannst.
Vermutlich genügt hier eine im Klassenmodul des Erfassungsformulars prozedur-übergreifend deklarierte Variable.
Letzteres wird mit einer Dim-Anweisung vor der ersten Prozedur im Klassenmodul des Formulars definiert.
Dim lastID as Long
Ich könnte mir folgenden Ablauf vorstellen:
- beim (bzw. vor dem) Öffnen des Suchformulars über den Button aus dem Erfassungsformular heraus wird die aktuelle ID der Variablen zugewiesen
lastID = Me!SpielID
Das Erfassungsformular bleibt dabei ja geöffnet, also geht nichts verloren.
- anschließend wird nach Auswahl im Suchformular ein anderes Spiel angezeigt
- über einen neuen Button im Erfassungsformular kannst du dann das zuvor gesuchte Spiel anzeigen
Me.Recordset.FindFirst "SpielID=" & lastID
Wenn du den Rücksprung auf das zuvor angezeigte Spiel unabhängig vom Suchformular umsetzen möchtest, wird es schwierig (wenn nicht gar unmöglich), weil es kein Ereignis beim Verlassen eines Datensatzes gibt, wenn es sich um eine reine Anzeigefunktion handelt (obwohl das Formular mit "Erfassung" betitelt ist).
Hallo,
ZitatWenn du den Rücksprung auf das zuvor angezeigte Spiel unabhängig vom Suchformular umsetzen möchtest, wird es schwierig (wenn nicht gar unmöglich), weil es kein Ereignis beim Verlassen eines Datensatzes gibt, wenn es sich um eine reine Anzeigefunktion handelt (obwohl das Formular mit "Erfassung" betitelt ist).
Was hindert daran, zwei globale Variable ("AktDS" , "PreDS" ) zu nutzen und beim Form-Ereignis "Beim Anzeigen" "AktDS" in "PreDS" umzuspeichern und danach "AktDS" auf den aktuellen ID-Wert zu setzen ...?
Hi Maggie,
Zitat von: MaggieMay am April 13, 2016, 22:41:58
.....Vermutlich genügt hier eine im Klassenmodul des Erfassungsformulars prozedur-übergreifend deklarierte Variable.
Letzteres wird mit einer Dim-Anweisung vor der ersten Prozedur im Klassenmodul des Formulars definiert.
Dim lastID as Long
Okay dann lass mich mal sagen, ich muss also erst einmal ein Klassenmodul erstellen.
(siehe Bild)
Option Compare Database
Dim lastID As LongBeim Button zum starten der Suche würde ich jetzt beim Ereignis klicken eine Ergänzung hinzufügen.
Private Sub cmdSpielsuchen_Click()
On Error GoTo Err_cmdSpielsuchen_Click
lastID = Me!SpielID
DoCmd.OpenForm "frmQuartettSuche"
Exit_cmdSpielsuchen_Click:
Exit Sub
Err_cmdSpielsuchen_Click:
MsgBox Err.Description
Resume Exit_cmdSpielsuchen_Click
End Sub
Aber da sagt er schon, Variable nicht definiert und verweist auf lastID. Ich gehe davon aus, das Klassenmodul ist falsch platziert bzw. nicht komplett , oder?
Zitat
Wenn du den Rücksprung auf das zuvor angezeigte Spiel unabhängig vom Suchformular umsetzen möchtest, wird es schwierig (wenn nicht gar unmöglich), weil es kein Ereignis beim Verlassen eines Datensatzes gibt, wenn es sich um eine reine Anzeigefunktion handelt (obwohl das Formular mit "Erfassung" betitelt ist).
Das habe ich so nicht auf dem Schirm, da ich diese Funktion bisher wirklich nur bei der Suche und dem damit einhergehenden editieren 2er Datensätze als wünschenswert und gut erachtet habe.
Gruß Andreas
Hallo Andreas,
nein, kein neues Klassenmodul, ich meinte mit
Zitatim Klassenmodul des Erfassungsformulars
das zum Formular gehörende (Klassen-)Modul.
Hi,
okay, da habe ich mich mal wieder irre leiten lassen. Das hat nach der Änderung jetzt gepasst. Danke dafür.
Gruß Andreas