OpenArgs Null Fehler
Ich bin mit der OpenArgs
parameter um einen Wert zu senden, wenn Sie mit DoCmd.OpenForm
:
DoCmd.OpenForm "frmSetOther", acNormal, , , acFormAdd, acDialog, "value"
Dann benutze ich Me.OpenArgs
innerhalb der geöffneten form zu greifen, die Wert. Er schickt manchmal eine Null Wert anstelle der ursprünglichen Zeichenfolge. Was ist falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine sehr interessante alternative zu diesem "openArgs" - argument ist die zu benutzen .properties-Auflistung des currentProject.allforms("myFormName") Objekt. Wenn Sie brauchen, um einen Wert an ein Formular (wie ein filter geerbt von einem anderen Steuerelement oder in einer anderen form, zum Beispiel), fügen Sie einfach die entsprechende Eigenschaft für das Formular, und fügen Sie Ihren Wert für diese Eigenschaft.
Beispiel:
Die aufgerufene Funktion wird versuchen, aktualisieren Sie den Wert von "formFilter" - Eigenschaft des Objekts. Wenn die Eigenschaft nicht vorhanden (err 2455 ausgelöst wird), wird es Hinzugefügt, als eine neue Eigenschaft in das Fehler-management-code.
Dies passiert oft während der Entwicklung whem die form ist schon oppened (im edit-Modus zum Beispiel) und das aufrufen der docmd.OpenForm-Funktion. In diesem Fall, die form gelegt, im normal - (Sicht) - Modus und die OnOpen-und OnLoad-Ereignisse ausgelöst werden, aber die OpenArgs-Eigenschaft auf null gesetzt ist, kein mater, was Sie übergeben docmd.Öffnenformular.
Die Lösung ist offensichtlich die form zu schließen, bevor Sie es aufrufen mit docmd.Öffnenformular. Aber es ist eine Problemumgehung, die ich gerne verwenden. Im Ereignis OnOpen ich prüfen, ob mir.OpenArgs null ist, und wenn es Sie ich ersetzen Sie es mit einigen debug-Werte.
Ich hatte gerade dieses problem. Die
Arg
string nicht übergeben bekommen, da der Bericht bereits geöffnet war, aber nicht sichtbar. Hatte es offen gelassen wurde, wenn der code crashed mit derNull string error
.War die Lösung schließen Sie den Bericht in das Direktfenster ein, mit
Es fixiert mein Fehler und die Argumente wurden ordnungsgemäß weitergeleitet.
Könnte es sein, dass Sie hatte Ihre form schon offen (wie vorgeschlagen), sondern nur auf null prüfen und das Formular-handle öffnen mit fehlenden Argumenten auch.
Dies wird es ermöglichen, die öffnung der form für einen schnellen überblick (von Ihnen oder dem Benutzer), wenn die Argumente nicht entscheidend.
Einen null-Wert übergeben werden kann, um OpenArgs durch weglassen der Wert in der OpenForm-Aufruf oder durch einen Doppelklick auf die form, in die Access-Objekte sidebar.
Wenn es ein modal form, ausdrücklich zu prüfen, ob es sich öffnen und schließen, bevor Sie öffnen es, wenn so. Dies ist ein häufiges Problem.
Könnte das gleiche geht natürlich für alle Formen, nicht nur modal, und dann würden Sie nicht die Notwendigkeit, die null-check (vorausgesetzt, Sie geben niemals null ist). Aber oft gibt es eine Menge Formulare in einem Projekt, und noch mehr OpenForm nennt als Formen...
Ist der Wert, der von einem Benutzer ausgefüllt Steuern? Stellen Sie sicher, dass der Fokus verschoben wird von der Steuerung vor der Ausführung der openform-Zeile?
EDIT: Die value-Eigenschaft des Steuerelements wird gleich dem vorherigen Wert kann null sein, es sei denn, Sie dies tun.
Denke ich, dass ich die Antwort gefunden zu meinem problem:
Habe ich überprüft diese, indem Sie eine Pause, bevor Sie versuchen, verwenden Sie die OpenArgs-Wert, und es war null. Aber wenn ich entfernen Sie die Pause, das Programm zeigt keine Fehler. Dies muss erst geschehen, während der Entwicklung.
Antwort hier. Ihre form kann bereits geöffnet sein, auch im Design-Modus:
http://www.tech-archive.net/Archive/Access/microsoft.public.access.formscoding/2007-02/msg00928.html