Neues Formular öffnen und aktuelles schließen - Access 2000

  • VB6

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Sascha1974.

    Neues Formular öffnen und aktuelles schließen - Access 2000

    Hallo,

    ich habe ein echtes Anfängerproblem mit Access VBA!

    Ich habe zwei geöffnete Formulare. Das eine ist ein Suchformular für Kundendaten und heisst "frm_Kundensuche". Das Suchergebnis wird in einem Formular "frm_ErgebnisKundensuche" angezeigt. Aufgerufen wird "frm_ErgebnisKundensuche" durch Klicken der Schaltfläche "cmd_Suchen" im Formular "frm_Kundensuche".

    Wenn nun das Formular "frm_ErgebnisKundensuche" angezeigt wird, soll das Suchformular "frm_Kundensuche" geschlossen werden, da es nicht mehr benötigt wird.

    Folgende Varianten habe ich probiert und stehen als Sub-Routinen unter dem Formular "frm_Kundensuche":

    (1)
    Private Sub cmd_suchen_Click()
    DoCmd.OpenForm "frm_ErgebnisKundensuche"
    DoCmd.Close
    End Sub

    Führt dazu, dass "frm_ErgebnisKundensuche" wieder geschlossen wird.


    (2)
    Private Sub cmd_suchen_Click()
    DoCmd.OpenForm "frm_ErgebnisKundensuche"
    DoCmd.Close "frm_Kundensuche"
    End Sub

    Führt zum Laufzeitfehler '13' =Typen unverträglich


    (3)
    Private Sub cmd_suchen_Click()
    DoCmd.OpenForm "frm_ErgebnisKundensuche"
    Unload frm_Kundensuche
    End Sub

    Fürst zum Laufzeitfehler '424' = Objekt erforderlich

    Ich bin mit meinem Latein am Ende. Wie lautet denn der richtige Syntax?

    Gruß
    Sascha

    Hallo Markus,

    danke für deinen Hinweis!

    Eine Frage habe ich jedoch noch. Im "frm_Kundensuche" gibt es zwei Felder, nämlich "txt_name" und "txt_ort". Nun wollte ich es so programmierten, dass für Start der Abfrage, also vor dem öffnen des "frm_ErgebnisKundensuche" die beiden Textfelder auf leeren Inhalt überprüft werden und ggf. ein '*' gesetzt wird, also

    If txt_name = "" Then txt_name.Text = "*"
    If txt_ort = "" Then txt_ort.Text = "*"

    In VB funktioniert das, aber bei Access VBA nicht. Ich habe es im Einzelschritt überprüft. Er übergibt den '*' nicht an das Textfeld. Was kann das wieder sein?

    Gruß
    Sascha

    PS: Irgendwie weichen VB und VBA doch teilweise stark voneinander ab, oder täuscht das?
    Hallo Sascha,

    Probiere es mal so:

    If Nz(txt_name) = "" Then txt_name.Value= "*"
    If Nz(txt_ort) = "" Then txt_ort.Value= "*"

    Evtl wird der Inhalt der Felder als Null gewertet und Null ist ungleich "" (deshalb Nz, es ist immer von Vorteil wenn man Felder, die Null werden können mit Strings vergleicht oder an Strings zuweisen muß), eine Zuweisung mit Objekt.Text ist nur möglich wenn das Steuerelement den Fokus hat, deshalb Objekt.Value.

    Naja VBA und VB ist nicht so verschieden aber Access-VBA ist schon etwas ganz anderes, das hat mich schon oft Stunden gekostet.

    Gruß Markus
    Hallo Markus,

    ich bin echt begeistert. Genau so hat es funkioniert. Hatte es auch mit

    If txt_name = Null Then txt_name.Text = "*"
    If txt_ort = Null Then txt_ort.Text = "*"

    versucht, da ich mir schon dachte, dass "" ungleich Null ist, aber ich wäre aber nie darauf gekommen, bei einem Textfeld die Eigenschaft "value" zu setzen.

    Gruß
    Sascha