2016-07-26 12 views
0

Das sollte so einfach sein, aber es öffnet die zweite Form aus irgendeinem Grund als neuer Rekord! Ich habe seit Jahren keine Datenbank erstellt und habe seither zwei Kinder, also gehen Sie bitte vorsichtig mit meinem Gelee-Gehirn!Zugriff: Wie öffnet man ein zweites Formular zum selben Datensatz wie das erste?

Dies ist eine Unfallberichtdatenbank, die wir in jedem Abschnitt von Fragen jedes Mal in einem neuen Fenster ausführen möchten, ähnlich einem Assistenten. Der erste Abschnitt fragt, ob Sie einen neuen Vorfall oder die anderen Navigationsoptionen melden möchten, der Befehl zum Melden eines neuen Vorfalls war in Ordnung, Makro-Builder, openform, Formularname: Über die betroffene Person 02, legen Sie den Datenmodus auf "Hinzufügen" fest gehe jedes Mal in einen neuen Rekord. Alles gut bis jetzt.

Eine Formular-ID-Autonummer wird generiert, wenn Sie Name, Adresse usw. eingeben, und dann gibt es eine Schaltfläche zum Klicken für den nächsten Abschnitt. Ich nahm an, dass, da die ID bereits ausgefüllt war und der Datensatz in der Tabelle erstellt wurde, wenn ich die Befehlsschaltfläche zum Öffnen von Formular und Filter basierend auf der ID einrichten würde, würde es im nächsten Formular angezeigt (das ID-Feld ist sichtbar) in der oberen Ecke jedes Formulars), aber aus irgendeinem Grund filtert es nicht, sondern bringt jedes Mal in jedem Abschnitt eine neue Aufzeichnung. Jeder Abschnitt speichert unabhängig wie sein eigener Datensatz.

Ich habe versucht, durch den Makro-Builder (Einrichten der Datenmodus "Bearbeiten" für diese nachfolgenden Formulare) zu filtern und ich habe versucht, die Befehlsschaltfläche Assistenten und verknüpfen die beiden, die Beziehungen sind da, die erste Form ist immer noch offen zu dieser Zeit, als ich dachte, dass, wenn ich das Makro einrichten würde, um es zu schließen, als das andere geöffnet wurde, dann hätte es nicht die Daten zu suchen? Ich klammere mich jetzt an Strohhalme, um zu versuchen, es zur Arbeit zu bringen, aber ich habe das schon so oft gemacht und hatte dieses Problem nie !!

Jede Hilfe oder Vorschläge würden massiv geschätzt werden, danke!

Antwort

0

Die Tatsache, dass die Auto-Nummer erstellt wird, bedeutet nicht, dass der Datensatz erstellt wurde, noch bedeutet dies, dass der Datensatz gespeichert wurde. Wenn die Treffer des Benutzers rückgängig gemacht werden und beendet werden, werden die Daten niemals gespeichert und tatsächlich wird die automatische Nummer übersprungen und nie verwendet. Dies erklärt, warum Sie häufig Lücken in der Auto-Nummer sehen, wenn kein Löschen aufgetreten ist.

Die einfache Lösung ist, bevor Sie das andere/nächste Formular starten, ist sicherzustellen, dass die Daten in der aktuellen Form in die Tabelle geschrieben werden. Der folgende Code wird dieses Ziel erreichen:

If me.dirty = true then me.dirty = false 

Docmd.OpenForm "Form2",,,"id = " & me!id 

So die erste Zeile zwingt ein Datensatz zu speichern, und die zweite Zeile des Codes wird die zweite Form auf den gleichen aktuellen Datensatz wir sind auf starten.

+0

Guter Punkt! Danke für deine frischen Augen! Ich werde nach einer Weile zurückgehen und mein Makro noch einmal überprüfen, ich dachte, ich würde es einrichten, um automatisch zu speichern, wenn ich das neue Formular öffne, aber vielleicht in all dem Hin und Her wurde dieser Teil vergessen! –

+0

Nein, leider scheint das auch keinen Unterschied zu machen. Ich bin auch zurückgegangen und habe die Master-Tabelle doppelt überprüft, die Datensätze werden definitiv gespeichert, jeder Abschnitt erzeugt einen neuen Datensatz und nicht einen kontinuierlichen Fluss von einem Abschnitt zum nächsten, der zu diesem einen Datensatz hinzugefügt wird. –

0

Ich denke, ich habe da ... nach viel Frust !! Wenn jemand anders nach einer Lösung für dieses Problem sucht, hatte Albert D. Kallal Recht, er speicherte die Daten, aber es öffnete zuerst das neue Formular, und als dann das vorherige Formular geschlossen wurde, speicherte es die Daten so, dass sie auftauchten in meinem Tisch aber noch nicht vorhanden, um zur nächsten Form durchgezogen zu werden. Einfacher Fix, änderte die Reihenfolge der Befehle im Makro. Ich erwarte, dass der Code, den er vorgeschlagen hat, auch funktioniert hätte, wenn es nicht in den Händen von jemandem mit einem ernsten Fall von Babygehirn gewesen wäre ...