Werte Forengemeinde!
Ich habe folgende Situation: In einem Formular werden die Elemente chronologisch nach Datum sortiert angezeigt. Bestehende Elemente sollen dort bearbeitet werden können, für die Neuanlage von Elementen wird ein Formular als PopUp zur Verfügung gestellt.
Nun zeigt sich das Verhalten, dass das ursprüngliche Formular bei einem requery auf den ersten Datensatz springt. Requery wird bei Schließen des PopUps ausgelöst. Nun habe ich den requery-Eintrag mit vorheriger Prüfung der Eigenschaft "geöffnet" (der für sich genommen auch funktioniert) versucht zu erweitern. Die Idee ist, wenn Formular geöffnet, dann wird die Position gespeichert und nach requery zurückgeschrieben. Ich habe das wie folgt umgesetzt:
Private Sub Form_Close()
Dim lngStore As Long
If (CurrentProject.AllForms("Redaktionsplan").IsLoaded) Then
lngStore = Forms!Redaktionsplan!ID
Forms!Redaktionsplan.Requery
Forms!Redaktionsplan.FindFirst "Id = " & lngStore
End If
If (CurrentProject.AllForms("Redaktionsplan2").IsLoaded) Then
lngStore = Forms!Redaktionsplan2!ID
Forms!Redaktionsplan2.Requery
Forms!Redaktionsplan2.FindFirst "Id = " & lngStore
End If
End Sub
Da es nicht funktioniert, habe ich es wohl falsch umgesetzt :P Kann das überhaupt so klappen? Oder mache ich einen grundsätzlichen Denkfehler?
Danke für Eure Hilfe im Vorhinein!
Herzliche Grüße
Wolfgang
Hallo,
steht in jedem(!) Modulkopf "Option Explicit" ?
Ist die DB fehlerfrei kompilierbar?
ZitatForms!Redaktionsplan.Recordset.FindFirst "Id = " & lngStore
Weiterhin kann ich die Notwendigkeit eines PopUp-Forms zur Dateneingabe nicht so recht erkennen.
Hallo,
Mit FindFirst wird im Recordset des Formulars (Me) gesucht. Versuche es daher mal so:
Private Sub Form_Close()
Dim lngStore As Long
lngStore = Me.ID
Me.Requery
Me.Recordset.FindFirst "Id = " & lngStore
End Sub
Ich glaube auch nicht, dass Du hier die Formulare Redaktionsplan und Redaktionsplan2 unterscheiden musst. Der Feldname ID ist ja gleich.
Zitat von: DF6GL am April 19, 2020, 19:38:49
Weiterhin kann ich die Notwendigkeit eines PopUp-Forms zur Dateneingabe nicht so recht erkennen.
Die Überlegungen dahinter intesessieren mich - ich hätte ein PopUp aus Gründen der Usability gewählt. Es ist für mich angesichts einer Vielzahl von Datensätzen deren Eledigungsstati in unterschiedlichen Bereichen im Bestand geändert werden müssen eine angenehme Lösung, ein leeres Eingabefeld bereitszustellen und den Bezug zur Gesamtliste beizubehalten.
Aber da lasse ich mich gerne eins Besseren belehren bevor ich in die Irre laufe! Danke!
Gruß
Wolfgang
Hallo,
ich will Dich nicht eines Bessern belehren... Es mag Gründe für ein Eingabe-Popup geben, den ich aber aus Deiner Beschreibung jetzt nicht ergründen kann.
Ich interpretiere so, als dass irgendeine Eingabe gemacht werden soll, die nicht einen direkten Bezug auf den aktuell angezeigten DS hat...
Wenn ich Deine Worte richtig deute, dann ist das PopUp eher dann ein Thema, wenn es einen unmittelbaren Bezug zu einem angezeigten Datensatz gibt. Das ist nämlich wirklich richtig, Bezug hat die Eingabe keinen - es geht viel mehr um die Neuanlage eines Datensatzes auf der sprichwörtlichen grünen Wiese.
Ich werde das mal umstellen - btw, wenn jemand Anhnung hat, dann ist auch Belehren ein Lernvorgang, mit dem ich kein Problem habe. Danke!
Gruß
Wolfgang
ZitatDa es nicht funktioniert ...
Wieviel Denkzeit ist für eine solche vollbeschreibende Aussage notwendig? Wieviel gelbe Blitze sind zu zählen?
Ansonsten zur Technik:
- Dem PopUp könnte man beim Öffnen per OpenArgs den Formularnamen mitgeben. Dann müsste man nicht rumprobieren, wo etwas offen ist, sondern man hätte den aufrufenden Übeltäter sofort im Zugriff.
Im gleichen Sinne würde man auch die ID übergeben können, statt diese nachermitteln zu müssen. Wenn ich einen Stein in der Hand habe, den ich brauche, werfe ich ihn nicht erst weg, um ihn zu suchen und wieder in die Hand zu nehmen. Das zweite ist mehr Aufwand und birgt die Gefahr des Nichtfindens und insgesamt von Fehlern.
- Ein Requery macht nur Sinn, wenn sich die Datenbasis geändert hat. Wenn das PopUp damit etwas zu tun hat, sollte man vielleicht erst sicherstellen, dass dessen Inhalte explizit in die Tabelle gespeichert werden und von dem Requery auch erfasst werden können.