Verwendung von DataCombo- und DataList-Steuerelementen
Die DataCombo- und DataList-Steuerelemente sind den standardmäßigen Listenfeld- und Kombinationsfeld-Steuerelementen sehr ähnlich, weisen jedoch einige wichtige Unterschiede auf, die sie äußerst anpassungsfähig und nützlich in Datenbankanwendungen machen. Beide Steuerelemente können automatisch mit Datenbankfeldern gefüllt werden, an die diese Steuerelemente gebunden sind. Darüber hinaus können sie optional ein ausgewähltes Feld an ein zweites Datensteuerelement übergeben, wodurch sie sich für die Erstellung von „Lookup-Table“-Anwendungen eignen.
Mögliche Verwendung
1. Verwenden Sie in einer relationalen Datenbank Daten aus einer Tabelle, um Werte bereitzustellen, die in eine zweite (verwandte) Tabelle eingegeben werden sollen. In einer Bestandsdatenbank werden beispielsweise die Namen der Lieferanten in einer Tabelle gespeichert, und jeder Lieferant verfügt über eine eindeutige Kennung. Eine weitere Tabelle mit Produkten verwendet diese Kennungen, um anzugeben, welcher Lieferant das Produkt liefert. Sie können das DataList-Steuerelement verwenden, um den Namen des Lieferanten anzuzeigen und gleichzeitig (unsichtbar) die Lieferantenkennung in der Produkttabelle bereitzustellen.
2. Ermöglichen Sie Benutzern, ihre Suche einzugrenzen, indem sie ein Kriterium aus einer Dropdown-Liste auswählen. Beispielsweise könnte eine Datenbankanwendung für Verkaufsberichte ein DataList-Steuerelement verwenden, um dem Benutzer die Auswahl eines Bundeslandes oder einer Verkaufsregion zu ermöglichen. Sobald eine Auswahl getroffen wurde, wird die Auswahl automatisch an eine zweite Datensteuerung übergeben, die für die Suche nach Verkaufsdatensätzen für den ausgewählten Bereich zuständig ist.
Wie ihre entsprechenden intrinsischen Steuerelemente besteht der Hauptunterschied zwischen den DataList- und DataCombo-Steuerelementen darin, dass das DataCombo-Steuerelement ein Textfeld bereitstellt, in dem Inhalte bearbeitet werden können.
Eine Beschreibung der Fähigkeit der DataList- und DataCombo-Steuerelemente, Datenbanktabellen zu verknüpfen, finden Sie unter „Verbinden von zwei Tabellen mithilfe der DataCombo- und DataList-Steuerelemente“. Informationen zum Erstellen einer einfachen Datenbankanwendung, die verknüpfte Tabellen verwendet, finden Sie unter „Erstellen einer einfachen DataCombo-Anwendung“.
Bemerkenswerte Kontrolleigenschaften
Zu den wichtigen Eigenschaften der DataList- und DataCombo-Steuerelemente gehören:
Beachten Sie, dass die DataFormat-Eigenschaft des DataCombo-Steuerelements eine Extender-Eigenschaft ist. Daher ist es immer auf dem Eigenschaftenblatt sichtbar und kann im Code festgelegt werden. Das DataCombo-Steuerelement formatiert jedoch nur das oberste Element in seiner Liste. Für den Endbenutzer, der das formatierte oberste Element sieht und einfach aus der unformatierten Liste auswählen kann, ist dies möglicherweise weniger wichtig. Formatierte Elemente können Endbenutzer auch zu der Annahme verleiten, dass Elemente formatiert werden, bevor sie in die Datenbank eingegeben werden. Aus diesen Gründen wird empfohlen, die DataFormat-Eigenschaft bei Verwendung des DataCombo-Steuerelements nicht festzulegen.
Details Eine Schritt-für-Schritt-Anleitung, die die Verwendung der BoundText-Eigenschaft demonstriert, finden Sie unter „Erstellen eines DataGrids mit einem verbundenen DataList-Steuerelement“. Eine vollständige Liste der Eigenschaften und Methoden dieser Steuerelemente finden Sie unter „DataList-Steuerelement“ und „DataCombo-Steuerelement“.
Verbinden Sie zwei Tabellen mit den Steuerelementen DataCombo und DataList
Das Unterscheidungsmerkmal der DataCombo- und DataList-Steuerelemente ist die Möglichkeit, auf zwei verschiedene Tabellen zuzugreifen und Daten aus der ersten Tabelle mit einem Feld in der zweiten Tabelle zu verknüpfen. Dies erfolgt mithilfe von zwei Datenquellen (z. B. dem ADOData-Steuerelement oder der Datenumgebung).
Relationale Tabellen und „unfreundliche“ Werte
In einer relationalen Datenbank werden nicht alle Informationen zur Wiederverwendung an mehreren Orten gespeichert. Die meisten dieser Informationen werden in einem Recordset gespeichert, das aus mehreren Feldern besteht. Unter diesen Feldern befindet sich ein „Identifikator“-Feld, das das Recordset eindeutig identifiziert. Beispielsweise speichert die von Visual Basic bereitgestellte Biblio-Datenbank die Namen mehrerer Verlage in einer Tabelle namens „Publisher“. Diese Tabelle enthält viele Felder wie Adresse, Stadt, Postleitzahl und Telefonnummer. Der Einfachheit halber werden jedoch nur die beiden wesentlichen Felder dieser Tabelle, Name und PubID, berücksichtigt. Das Feld „Name“ speichert den Namen eines Herausgebers, während das Feld „PubID“ einen relativ „unfreundlichen“ Wert speichert, beispielsweise eine Zahl oder einen Code. Dieser unfreundliche Wert ist jedoch wichtig, da er den Herausgeber eindeutig identifiziert und als Mittel zur Verknüpfung des gesamten Datensatzes dient. Darüber hinaus wird dieser Wert in mehreren Recordsets in der zweiten Tabelle gespeichert.
Der Name der zweiten Tabelle lautet „Titel“, und jeder Datensatz enthält Informationen wie Titel, Erscheinungsjahr, International Standard Book Number (ISBN) usw. Der Name eines dieser Felder ist PubID. Der Name dieses Feldes ist mit dem entsprechenden Feld in der Tabelle „Herausgeber“ identisch, da in diesem Feld der Wert gespeichert ist, der diesen Titel mit einem bestimmten Herausgeber verknüpft.
Diese mögliche Lösung stellt ein kleines Problem dar: Bei einer Datenbankanwendung, die es Benutzern ermöglicht, neue Titel einzufügen, muss der Benutzer irgendwie eine Ganzzahl eingeben, die den Herausgeber identifiziert. Wenn sich der Benutzer die eindeutige Kennung jedes Herausgebers merken kann, ist dies immer noch möglich. Wenn der Benutzer jedoch einerseits den Namen des Herausgebers sehen kann und andererseits der entsprechende Wert in der Datenbank gespeichert ist, ist dies der Fall wird komfortabler erscheinen. Die Steuerelemente DataList und DataCombo können dieses Problem leicht lösen.
Zwei Datenquellen, drei Felder, keine Kodierung
Die Steuerelemente „DataList“ und „DataCombo“ verwenden zwei Datenquellen, um dieses Problem zu lösen. Während das DataList- oder DataCombo-Steuerelement nur den Namen des Herausgebers (aus der Tabelle „Publisher“) anzeigt, schreibt es nur den Wert des Felds „PubID“ in die Tabelle „Titel“. Legen Sie im Eigenschaftenfenster die RowSource auf die Datenquelle fest, die die zu schreibenden Daten bereitstellt (d. h. die Publishers-Tabelle). Legen Sie dann die DataSource-Eigenschaft auf die Datenquelle fest, in die die Daten geschrieben werden sollen (d. h. die Titles-Tabelle). Legen Sie abschließend die Eigenschaften DataField, ListField und BoundColumn fest. Die folgende Abbildung zeigt, wie Sie einem DataCombo-Steuerelement zwei Datenquellen (in Form von zwei Datensteuerelementen) und drei Felder zuweisen:
Kurz gesagt bestimmt die ListField-Eigenschaft, welches Feld vom Steuerelement angezeigt wird. In diesem Fall ist es der Name des Herausgebers. Andererseits bestimmt die BoundColumn-Eigenschaft, welches Feld in der Publishers-Tabelle den tatsächlich erforderlichen Wert an die Title-Tabelle liefert. Beachten Sie, dass das PubID-Feld in der Publishers-Tabelle nicht bearbeitet werden kann (und sollte). Stattdessen wird der Wert im PubID-Feld in das durch die DataField-Eigenschaft angegebene Feld geschrieben. In diesem Beispiel ist dieses Attribut das PubID-Feld in der Titles-Tabelle.
Die folgende Tabelle bietet einen Überblick über diese Eigenschaften und deren Verwendung.
Beachten Sie, dass die DataList- und DataCombo-Steuerelemente auch mit einem einzelnen Datensteuerelement verwendet werden können. Um dies zu erreichen, können Sie die Eigenschaften „DataSource“ und „RowSource“ auf dasselbe Datensteuerelement und die Eigenschaften „DataField“ und „BoundColumn“ auf dasselbe Feld im Recordset des Datensteuerelements festlegen. In diesem Fall wird die Liste mit ListField-Werten aus demselben Recordset gefüllt, das aktualisiert wird. Wenn eine ListField-Eigenschaft angegeben ist, die BoundColumn-Eigenschaft jedoch nicht festgelegt ist, wird BoundColumn automatisch auf das ListField-Feld festgelegt.
Details Wenn Sie mithilfe des DataCombo-Steuerelements Schritt für Schritt eine einfache Datenbankanwendung erstellen möchten, lesen Sie „Erstellen einer einfachen DataCombo-Anwendung“.
->