Access: Zeitpunkt gesucht, wann Formular fertig geladen

deusfalsus

Erfahrenes Mitglied
Hallo,

ich übergebe von einem Formular Informationen in ein weiteres.
so:
Code:
Dim stDocName As String
Dim stLinkCriteria As String

'Öffnen des Formulares
stDocName = "blablabla"
DoCmd.OpenForm stDocName, , , stLinkCriteria
    
'Übertragen der Info
[Form_blablabla]![feldname] = Me![feldname]


Um im neu geöffneten Formular damit arbeiten zu können, brauche ich die übergebenen Werte. Aber bei allen Ereignissen (onload, current etc) sind die Werte noch NULL.
Wann kann ich denn darauf zugreifen?

Gibt es vielleicht eine bessere, mir bislang unbekannte Variante, Werte bzw. Variablen ans nächste Formular zu übergeben?
Sollte dies Frage vielleicht besser ins VB-Forum?
 
Hi, wie bekommst Du die die Werte in das erste Formular; ich meine ist es ein ungebundenes oder ist es mit irgendwelchen Tabellen verknüpft?

Als Lösungsansätze (bei gebundenen! Formularen) würde ich folgendes vorschlagen:

1. Du könntest dir die Daten direkt aud den zugrundeliegenden Tabellen holen (DomWert-Funktion)

2. Access hat (bei mir jedenfalls) öfters mal ein Problem mit dem Speichern. Man sieht die Daten, sie sind aber noch nicht gespeichert, man kann sie also nicht nutzen. Dieses Problem umgehen ich meistens mit einen Datensatz zurück und einem Datensatz vor. (Funktioniert nicht beim allerersten Datensatz ;-) ). Vielleicht liegt es ja daran.
 
Ich übergebe unter anderem Werte, die gar nicht in irgendwelchen Tabellen stehen.
Zum Beispiel den Namen des Formulares, welches das neue Formular aufruft, um dort die Herkunft zu wissen, wegen Ergebnisrückgabe.
Sollte ich vielleicht eher mit globalen Variablen arbeiten?
 
Hmm, bei diesen Feldern sollte es eigentlich reichen, wenn Du dich auf Dein geöffnetes Formular beziehst. Allerdings, wenn ich richtig lese, scheint es mehrere Formulare zu geben, die Dein neues Formular öffnen.

Und beim genaueren Lesen ist mir etwas aufgefallen.

Code:
[Form_blablabla]![feldname] = Me![feldname]

Müsste es nicht heissen
Me![feldname]=[Form_blablabla]![Feldname]
?
 
Im öffnenden Formular schiebe ich die Werte ins neue per:
Code:
[Form_blablabla]![feldname] = Me![feldname]

ich könnte sie theoretisch auch im geöffneten ziehen per
Code:
Me![feldname] = [Form_blubb]![feldname]

Aber da es mehrere Formulare gibt, die jenes (im übrigen Such-)Formular verwenden, weiß ich ja im geöffneten Formular nicht, welches das öffnende war. Oder gibt es da Möglichkeiten, das Auszulesen? Quasi den "Referer" oder sowas zu ermitteln?

Ansonsten stellt sich für mich nach wie vor die Frage nach dem Zeitpunkt, an dem die Werte im neuen Formular angekommen sind.
 
Zuletzt bearbeitet:
Gut, also mehrere ungebundene Formulare.

Ich würde so vorgehen, eine zentrale Prozedure/Funktion, die jedesmal ausgelöst wird, wenn Du in einem Deiner Formulare das Suchformular öffnest. Die Prozedur braucht den Namen des ungebundenen Formulars (ME).
Die Prozdure öffnet dein Suchformulare und übergibt den Formularnamen.
Die Werte im Suchformular setzt du wie gehabt mit dem übergebenem Formularnamen aus der Prozedur und den Feldnamen.

Hilft Dir das erst mal weiter?
 
Versteh ich nicht.
Wie und wo soll eine "zentrale Prozedur" stehen?
Wie löst das mein Timing-Problem? Ich will doch unmittelbar nach dem Öffnen des Formulares mit den übergebenen Werten arbeiten. Bei den Ereignissen "load" und "current" sind diese aber noch nicht da.

Kann ich mittels "call" auch eine Prozedur im geöffneten Formular aufrufen? Wie wäre die Syntax?
 
Wie und wo soll eine "zentrale Prozedur" stehen?

Zum Beispiel in einem Modul. Im Datenbankfenster auf Module gehen, dort dann auf einfügen. Dann öffnet sich Dein Visual Basic Editor. Und dort kann man Prozeduren/Funktionen schreiben, die sich nicht nur auf ein Formular/Bericht beziehen, sondern eben auch in mehreren.

Wie löst das mein Timing-Problem? Ich will doch unmittelbar nach dem Öffnen des Formulares mit den übergebenen Werten arbeiten. Bei den Ereignissen "load" und "current" sind diese aber noch nicht da.

Deshalb sollst Du auch die Werte an die Prozedur übergeben, diese öffnet Dein Formular und die Prozedur gibt Deine Werte an das geöffnete Formular weiter.
 
Zurück