# Access-VBA: Aufruf eines Dialogs und Übergabe eines Werts?



## dreamer2007 (6. November 2007)

Hallo,

ich habe ein Problem mit dem Aufruf eines Formulars.
Mit Hilfe des Assistenten habe in Access ein Abfrageformular erstellt, welches als Endlosliste eine Tabelle ausgibt. Nun möchte ich allerdings einen Button neben jeder Zeile so belegen, das der Button ein Formular aufruft, worin die Daten der Zeile nochmals detailiert dargestellt werden.
Das Besondere an meine Variante ist, dass dieses Detail-Formular von mir aus Excel importiert wurde und es die Tabelle über den ADODB Adapter aufruft. Dementsprechend muss ich das Detail-Formular aufrufen und einer Unterfunktion dieses Formulars die ID des Datensatzes aus der Übersichtstabelle übergeben.


```
// Code in dem Übersichtsformular

Private Sub btn_edit_Click()
        Dim dlg As dlg_project
        Set dlg = New dlg_project
        dlg.Show
        dlg.load_database (Me!text_ID)
End Sub
```

Was allerdings hierbei nicht klappt ist, dass gleich nach Öffnen des Formular die Unterfunktion load_database( ) ausgeführt wird. Erst nachdem ich z.B. den Button für die Schließen-Prozedur klicke geht es nach dlg.Show weiter.

Hat jemand zufällig eine Erklärung dafür?

Mein zweites Problem ist, dass wenn denn nun endlich die Anweisung dlg.load_database() erreicht ist, kommt die Fehlermeldung "Der Aufgerufene (Server, nicht die Serveranwendung) ist nicht verfügbar und kann nicht gefunden werden. Alle Verbindungen sind ungültig". Mir ist diese Fehlermeldung neu und kann damit nicht so recht was anfangen.

Hat jemand einen Tipp?

Gruß

Dreamer


----------



## BitByter (6. November 2007)

Hallo,

ist das nun VBA-Code oder PHP?

Wenn VBA, Access Version ?



> Was allerdings hierbei nicht klappt ist, dass gleich nach Öffnen des Formular die Unterfunktion load_database( ) ausgeführt wird. Erst nachdem ich z.B. den Button für die Schließen-Prozedur klicke geht es nach dlg.Show weiter.



Kopiere diese Funktion in ein öffentliches Modul.


```
Public Sub WaitForm(strForm As String)

    While SysCmd(SYSCMD_GETOBJECTSTATE, A_FORM, strForm)
        DoEvents
    Wend

End Sub
```

Füge den Aufruf 





> WaitForm("DeinFormularName")



vor 





> dlg.load_database (Me!text_ID)


 ein.


----------



## dreamer2007 (7. November 2007)

Hallo,

es ist VBA Code unter Access 2000 (9.0).


Gruß


----------

