Formular aus anderer DB verwenden

Hallo liebe Datenbankgemeinde,
ich bin als VBA-Laie mal wieder sehr schnell an meine Grenzen gestoßen und brauche Eure Hilfe (Access 2002).

Folgender Sachverhalt:
Ich habe eine „Haupt-“ Datenbank (HDB) und eine „externe“ Datenbank (extDB). In beiden werden Informationen zu Objekten geliefert, die durch eine T-Nummer definiert sind (die T-Nummern können doppelt vorkommen und sind nicht zwangsläufig in beiden DB enthalten und im Textformat).

Mein Ziel: aus einem Formular der HDB mit Infos zu einer T-Nummer ein Formular der extDB öffnen, in dem die dortigen Infos zur selben T-Nummer angezeigt werden.

Bereits erledigt: Ich habe in der extDB ein Standardmodul geschrieben:
Public Function fct_oeffnenFrmTObject()
DoCmd.OpenForm „frm_TObject“
End Function
In der HDB habe ich über Extras/Verweise die extDB ausgewählt, so dass mir das Modul von dort hier zur Verfügung steht. Über meinen „Verlinkungsbutton“ rufe ich dann die Funktion aus dem Modul der extDB auf und komme auch so weit, dass deren Formular geöffnet wird.

Mein Problem: der Filter und die Fehlermeldung: Wo und wie muss ich filtern, damit mir der/die Datensätze derselben T-Nummer wie in der HDB angezeigt werden?? In der bereits geschriebenen Funktion im Standardmodul der extDB? Und: wie kann ich verhindern, dass das Formular der extDB geöffnet wird, wenn es dort keinen Datensatz derselben T-Nummer gibt (mgl. noch ein Meldungsfenster anzeigen mit Info)?

Ich bin bereits jetzt dankbar für jede Hilfe! Wer die Lösung kennt, bitte wenn möglich den ganzen Code schreiben, denn ich habe es bisher noch nicht geschafft, wirklich dahinterzusteigen, wie diese Sprache funktioniert… Danke!!

Gruß Alex

Hallo,

Public Function fct_oeffnenFrmTObject(strKrit as String)

If Dcount ("*",„tblTabelle“,strKrit) > 0 Then
DoCmd.OpenForm „frm_TObject“,strKrit
Else
Msgbox „Keine Datensätze vorhanden“
End If
End Function

Ich denke mal, der Code und der Sinn dahinter ist selbsterklärend.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Franz!
Dank Dir erstmal für die Hilfe. Leider komm ich trotzdem nicht weiter. Fehlermeldung „Argument ist nicht optional“, wenn ich die Funktion Formular öffnen aus der HDB aufrufe. Vielleicht liegts an den unterschiedlichen Bezeichnungen in den Datenbanken (wurden von verschiedenen Leuten entwickelt). Und an meiner Unwissenheit, wann ich was wie in Deinem Code einzusetzen habe:

Dein Vorschlag war:
Public Function fct_oeffnenFrmTObject(strKrit as String)
If Dcount ("*",„tblTabelle“,strKrit) > 0 Then
DoCmd.OpenForm „frm_TObject“,strKrit
Else
Msgbox „Keine Datensätze vorhanden“
End If
End Function

Ich habe geschrieben:
Public Function fct_oeffnenFrm(TNummer, TGesamt As String)
If DCount(TNummer, „tbl_Hauptdaten“, TGesamt) > 0 Then
DoCmd.OpenForm „frm_Hauptdaten“, , , TGesamt
Else
MsgBox „Keine Datensätze vorhanden“
End If
End Function

wobei: „TNummer“ die Nummer des Objekts in der extDB ist, die mit der Nummer „TGesamt“ der HDB übereinstimmen soll, tbl_Hauptdaten ist die Tabelle der extDB, die dem zu öffnenden Formular zugrunde liegt. Anmerkung: TGesamt der HDB ist in keiner Tabelle definiert, sondern wird in einer Abfrage aus mehreren Nummern zusammengesetzt und dann im Formular der HDB als TGesamt angezeigt.

Vielleicht hast Du noch ein paar Minuten Zeit, die Du meinem Problem widmen kannst? Danke!!

Gruß Alex

Hallo Franz!
Dank Dir erstmal für die Hilfe. Leider komm ich trotzdem nicht
weiter. Fehlermeldung „Argument ist nicht optional“, wenn ich
die Funktion Formular öffnen aus der HDB aufrufe. Vielleicht
liegts an den unterschiedlichen Bezeichnungen in den
Datenbanken (wurden von verschiedenen Leuten entwickelt). Und
an meiner Unwissenheit, wann ich was wie in Deinem Code
einzusetzen habe:

Dein Vorschlag war:
Public Function fct_oeffnenFrmTObject(strKrit as String)
If Dcount ("*",„tblTabelle“,strKrit) > 0 Then
DoCmd.OpenForm „frm_TObject“,strKrit
Else
Msgbox „Keine Datensätze vorhanden“
End If
End Function

Ich habe geschrieben:
Public Function fct_oeffnenFrm(TNummer, TGesamt As String)
If DCount(TNummer, „tbl_Hauptdaten“, TGesamt) > 0 Then
DoCmd.OpenForm „frm_Hauptdaten“, , , TGesamt
Else
MsgBox „Keine Datensätze vorhanden“
End If
End Function

wobei: „TNummer“ die Nummer des Objekts in der extDB ist, die
mit der Nummer „TGesamt“ der HDB übereinstimmen soll,
tbl_Hauptdaten ist die Tabelle der extDB, die dem zu öffnenden
Formular zugrunde liegt. Anmerkung: TGesamt der HDB ist in
keiner Tabelle definiert, sondern wird in einer Abfrage aus
mehreren Nummern zusammengesetzt und dann im Formular der HDB
als TGesamt angezeigt.

Public Function fct_oeffnenFrm(strKrit As String)
If DCount("*", „tbl_Hauptdaten“, strKrit) > 0 Then
DoCmd.OpenForm „frm_Hauptdaten“, , , strKrit
Else
MsgBox „Keine Datensätze vorhanden“
End If
End Function

Aufruf (irgendwo) im Form der HDB:
.
.
fct_oeffnenFrmTObject(„TNummer=“ & Me!Tgesamt)
.
.

wobei TNummer als vom Datentyp Zahl,Long angenommen ist.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Falls Du nochmal reinschauen solltest:
Es funktioniert leider immer noch nicht, ich nehme an, weil TNummer (wie auch TGesamt) keine Zahl, sondern Text ist.
Ich habe geschrieben:
fct_oeffnenFrmTObject(„TNummer=’“ & Me!TGesamt) oder auch
fct_oeffnenFrmTObject(„TNummer=’“ & Me!TGesamt & „’“)

Bekomme dann entweder Laufzeitfehler 3075 fehlender Operator, oder Syntaxfehler in Zeichenfolge in Abfrageausdruck, oder auch Laufzeitfehler 2001 vorige Operation abgebrochen. Er markiert mir immer die DCount - Zeile der Public Function.

Alternativ habe ich jetzt die Tabellen der DBs verknüpft, das Formular und die qrys importiert und ein Makro geschrieben. Das funktioniert, ist nur eben leider nicht so elegant gelöst. Und ich kann in der ext. DB keine direkten Änderungen vornehmen…

Gruß Alex