Im Beitrag RDBMS-Tools: Verbindungen verwalten haben wir ein Formular vorgestellt, mit dem Sie die Verbindungszeichenfolgen für eine oder mehrere Verbindungen konfigurieren können. Da wäre es doch praktisch, wenn wir auf ähnliche Weise ein Formular bauen, mit dem Sie auch noch die in der angesprochenen Datenbank enthaltenen Tabellen anzeigen und für Verknüpfungen oder Importe auswählen können. Dies erledigen wir im vorliegenden Beitrag.
Das Formular zum Verknüpfen von Tabellen soll eng mit dem Formular zum Erstellen von Verbindungszeichenfolgenden aus dem Beitrag RDBMS-Tools: Verbindungen verwalten (www.access-im-unternehmen.de/976) zusammenarbeiten.
Das bedeutet, dass es erstens die Verbindungszeichenketten zur Auswahl anbieten soll, die Sie mit dem Formular des genannten Beitrags zusammengestellt haben. Dazu greift es demzufolge auf die Tabelle tblVerbindungszeichenfolgen zu (s. Bild 1).
Bild 1: Auswahl der Verbindungszeichenfolge
Nachdem wir so die Verbindungszeichenfolge auswählen und somit den Server und die Datenbank festgelegt haben, aus der die Tabellen verknüpft werden sollen, soll das Formular die enthaltenen Tabellen anzeigen (s. Bild 2).
Bild 2: Anzeige der Tabellen der gewählten Verbindungszeichenfolge
Da etwa Datenbanken von CMS- oder Shopsystemen mitunter eine große Menge Tabellen enthalten, haben wir noch eine kleine Suchfunktion zum Formular hinzugefügt.
Wenn Sie in das Textfeld Filter einen Wert eingeben, zeigt die Liste mit den Tabellen nur noch die passenden Einträge an – und diese wird nach der Eingabe eines jeden einzelnen Zeichens aktualisiert.
Bild 3 zeigt beispielsweise, wie die Liste nur noch die Einträge anzeigt, welche die Zeichenfolge s_user enthalten.
Bild 3: Filtern der angezeigten Tabellen
Aus dem Listenfeld können Sie einen oder mehrere Einträge auswählen und die gewählten Tabellen dann mit einem Mausklick auf die Schaltfläche mit dem Text Tabellen verknüpfen als Verknüpfung in der Datenbank anlegen.
Das Ergebnis finden Sie schließlich in Bild 4.
Bild 4: Verknüpfung einiger Tabellen
Formular erstellen
Schauen wir uns nun an, wie das Formular zum Verknüpfen von Tabellen aufgebaut ist. Das Formular frmTabellenVerknuepfen sieht im Entwurf wie in Bild 5 aus.
Bild 5: Entwurf des Formulars frmTabellenVerknuepfen
Die Steuerelemente sind sämtlich ungebunden. Auch die Listen- und Kombinationsfelder werden erst zur Laufzeit gefüllt.
Da das Formular keine Datensätze anzeigen soll, stellen Sie die Eigenschaften Datensatzmarkierer, Navigationsschaltflächen, Trennlinien und Bildlaufleisten auf Nein sowie Automatisch zentrieren auf Ja ein.
Für ausreichend Platz im Listenfeld zur Anzeige der Tabellen legen wir für seine Eigenschaften Horizontaler Anker und Vertikaler Anker jeweils den Wert Beide fest. Auf diese Weise wächst und schrumpft das Listenfeld, wenn der Benutzer die Größe des Formulars ändert.
Kombinationsfeld beim Laden einstellen
Wenn der Benutzer das Formular öffnet, soll das Kombinationsfeld bereits alle Einträge der Tabelle tblVerbindungszeichenfolgen anzeigen. Dazu stellen wir die Eigenschaft Datensatzherkunft auf die folgende SQL-Abfrage ein:
SELECT VerbindungszeichenfolgeID, Verbindungszeichenfolge, Bezeichnung FROM tblVerbindungszeichenfolgen;
Nun soll das Kombinationsfeld allerdings auch noch direkt einen Datensatz auswählen. Welcher das ist, hängt von der Art des öffnens ab.
Wenn der Benutzer das Formular einfach öffnet, soll es einfach die in der Tabelle tblVerbindungszeichenfolgen als aktiv markierte Verbindungszeichenfolge selektieren. Mit dem öffnungsargument kann man dem Formular jedoch auch die ID der anzuzeigenden Verbindungszeichenfolge übergeben. Ein solcher Aufruf würde wie folgt aussehen:
DoCmd.OpenForm "frmTabellenVerknuepfen", OpenArgs:=1
Dieser Aufruf soll beispielsweise die Verbindungszeichenfolge mit dem Wert 1 im Feld VerbindungszeichenfolgeID liefern.
Damit dies gelingt, statten wir das Ereignis, das beim Laden des Formulars ausgelöst wird, mit der Ereignisprozedur aus Listing 1 aus.
Private Sub Form_Load() Dim lngVerbindungszeichenfolgeID As Long If Not IsNull(Me.OpenArgs) Then Me!cboVerbindung = Me.OpenArgs Else lngVerbindungszeichenfolgeID = Nz(DLookup("VerbindungszeichenfolgeID", "tblVerbindungszeichenfolgen", "Aktiv = -1")) If lngVerbindungszeichenfolgeID = 0 Then lngVerbindungszeichenfolgeID = Nz(DLookup("VerbindungszeichenfolgeID", "tblVerbindungszeichenfolgen")) End If Me!cboVerbindung = lngVerbindungszeichenfolgeID End If End Sub
Listing 1: Ereignisprozedur beim Laden des Formulars
Diese prüft, ob das über die Eigenschaft OpenArgs abfragbare öffnungsargument einen Wert enthält.
Ist dies der Fall, stellt die Prozedur einfach den Wert des Kombinationsfeldes auf diesen Wert ein. Anderenfalls versucht sie, mit einem DLookup-Aufruf die ID der Verbindungszeichenfolge zu ermitteln, deren Feld Aktiv den Wert -1 enthält und die somit als aktive Verbindungszeichenfolge ausgewählt wurde.
Dies liefert, wenn keiner der Datensätze als aktiv markiert ist, den Wert 0. Dies prüft die folgende If…Then-Bedingung.
Hat lngVerbindungszeichenfolgeID danach noch den Wert 0, stellt die Prozedur diese Variable einfach auf die ID des ersten Datensatzes ein, den die Tabelle tblVerbindungszeichenfolgen liefert.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo