OpenArgs ist Null Fehler

7

Ich verwende den Parameter OpenArgs , um einen Wert zu senden, wenn DoCmd.OpenForm :

verwendet wird %Vor%

Ich verwende dann Me.OpenArgs innerhalb des geöffneten Formulars, um den Wert zu erfassen. Es sendet manchmal einen Null -Wert anstelle der ursprünglichen Zeichenfolge. Was ist los?

    
lamcro 03.11.2008, 12:59
quelle

7 Antworten

1

Eine sehr interessante Alternative zu diesem Argument "openArgs" ist die Verwendung der Auflistung .properties des Objekts currentProject.allforms ("myFormName"). Wenn Sie einen Wert an ein Formular übergeben müssen (z. B. einen Filter, der von einem anderen Steuerelement oder einem anderen Formular geerbt wurde), fügen Sie einfach die entsprechende Eigenschaft für Ihr Formular hinzu und fügen Sie diesen Wert zu dieser Eigenschaft hinzu.

Beispiel:

%Vor%

Die aufgerufene Funktion versucht, den Wert der Eigenschaft "formFilter" des Objekts zu aktualisieren. Wenn die Eigenschaft nicht vorhanden ist (err 2455 wird ausgelöst), wird sie als neue Eigenschaft im Fehlerverwaltungscode hinzugefügt.

%Vor%     
Philippe Grondier 03.11.2008, 14:28
quelle
20

Dies tritt häufig während der Entwicklung auf, wenn das Formular bereits geschlossen ist (z. B. im Bearbeitungsmodus) und Sie die Funktion docmd.OpenForm aufrufen. In diesem Fall wird das Formular in den normalen (Ansichts-) Modus versetzt und die OnOpen- und OnLoad-Ereignisse werden ausgelöst, aber die OpenArgs-Eigenschaft wird auf null gesetzt, nicht auf das, was Sie an docmd.OpenForm übergeben haben.

Die Lösung besteht offensichtlich darin, das Formular zu schließen, bevor Sie es mit docmd.OpenForm aufrufen. Es gibt jedoch eine Problemumgehung, die ich gerne verwende. Im OnOpen-Ereignis überprüfe ich, ob me.OpenArgs null ist und wenn es ist, ersetze ich es durch einige Debug-Werte.

%Vor%     
Mathieu Pagé 03.11.2008 15:28
quelle
8

Ich hatte gerade dieses Problem. Die Zeichenfolge Arg wurde nicht übergeben, da der Bericht bereits geöffnet, aber nicht sichtbar war. Es war offen geblieben, als der Code mit Null string error abgestürzt ist.

Die Lösung bestand darin, den Bericht im unmittelbaren Fenster mit

zu schließen %Vor%

Es hat meinen Fehler behoben und die Argumente wurden richtig übergeben.

    
George Elam 14.10.2012 04:01
quelle
1

Es könnte sein, dass Sie Ihr Formular bereits geöffnet haben (wie vorgeschlagen), aber prüfen Sie einfach auf Null und das Formular wird auch mit fehlenden Argumenten umgehen.

Dies ermöglicht das Öffnen des Formulars für einen kurzen Blick (durch Sie oder die Benutzer), wenn die Argumente nicht entscheidend sind.

%Vor%

Ein Nullwert kann an OpenArgs übergeben werden, indem der Wert im OpenForm-Aufruf weggelassen wird oder indem auf das Formular in der Seitenleiste "Zugriffsobjekte" doppelgeklickt wird.

Wenn es ein modales Formular ist, dann sollte explizit prüfen, ob es geöffnet ist und schließen Sie es vor dem Öffnen, wenn dies der Fall ist. Dies ist eine häufige Frage.

Dasselbe könnte natürlich für alle Formen gemacht werden, nicht nur für modale, und dann würden Sie die Null-Prüfung nicht benötigen (vorausgesetzt, Sie geben niemals null an). Aber oft gibt es in einem Projekt viele Formulare und sogar noch mehr OpenForm-Aufrufe als Formulare ...

    
Henrik Erlandsson 07.09.2017 07:01
quelle
0

Ist der Wert von einem Benutzer abgeschlossen Kontrolle? Stellen Sie sicher, dass der Fokus vom Steuerelement verschoben wird, bevor Sie die OpenForm-Linie ausführen?

EDIT: Die Werteigenschaft des Steuerelements wird dem vorherigen Wert entsprechen, der null sein kann, es sei denn, Sie tun dies.

    
Fionnuala 03.11.2008 13:04
quelle
0

Ich glaube, ich habe die Antwort auf mein Problem gefunden:

  

Nach meiner Erfahrung muss OpenArgs sofort nach dem Öffnen des Formulars behandelt werden. (Link)

Ich habe dies geprüft, indem ich eine Pause gemacht habe, bevor ich versucht habe, den OpenArgs-Wert zu verwenden, und es war null. Aber wenn ich die Pause entferne, zeigt das Programm keinen Fehler an. Dies muss nur während der Entwicklung geschehen.

    
lamcro 03.11.2008 13:10
quelle
0

Antworte hier. Ihr Formular ist möglicherweise bereits im Design-Modus geöffnet: Ссылка

    
Anabase 02.05.2009 06:36
quelle