Utilisation des contrôles DataCombo et DataList
Les contrôles DataCombo et DataList sont très similaires aux contrôles de zone de liste et de zone de liste déroulante standard, mais présentent quelques différences importantes qui les rendent extrêmement adaptables et utiles dans les applications de base de données. Les deux contrôles peuvent être automatiquement renseignés par les champs de base de données auxquels ces contrôles sont liés. De plus, ils peuvent éventuellement transmettre un champ sélectionné à un deuxième contrôle de données, ce qui les rend adaptés à la création d'applications de « table de recherche ».
Utilisation possible
1. Dans une base de données relationnelle, utilisez les données d'une table pour fournir des valeurs à saisir dans une deuxième table (liée). Par exemple, dans une base de données d'inventaire, les noms des fournisseurs sont stockés dans une table et chaque fournisseur possède un identifiant unique. Un autre tableau montrant les produits utilise ces identifiants pour indiquer quel fournisseur fournit le produit. Vous pouvez utiliser le contrôle DataList pour afficher le nom du fournisseur tout en fournissant (de manière invisible) l'identifiant du fournisseur à la table des produits.
2. Permettez aux utilisateurs d'affiner leur recherche en sélectionnant un critère dans une liste déroulante. Par exemple, une application de base de données de rapports sur les ventes pourrait utiliser un contrôle DataList pour permettre à l'utilisateur de sélectionner un état ou une région de vente. Une fois la sélection effectuée, elle est automatiquement transmise à un deuxième contrôle de données, chargé de rechercher les enregistrements de ventes pour la zone sélectionnée.
Comme leurs contrôles intrinsèques correspondants, la principale différence entre les contrôles DataList et DataCombo réside dans le fait que le contrôle DataCombo fournit une zone de texte dans laquelle le contenu peut être modifié.
Pour une description de la capacité des contrôles DataList et DataCombo à joindre des tables de base de données, consultez « Jointure de deux tables à l'aide des contrôles DataCombo et DataList ». Pour créer une application de base de données simple utilisant des tables liées, consultez « Création d'une application DataCombo simple ».
Propriétés de contrôle remarquables
Certaines propriétés importantes des contrôles DataList et DataCombo incluent :
Notez que la propriété DataFormat du contrôle DataCombo est une propriété Extender. Il est donc toujours visible sur la feuille de propriétés et peut être défini dans le code. Toutefois, le contrôle DataCombo formate uniquement l’élément le plus haut de sa liste. Cela peut être moins important pour l'utilisateur final qui voit l'élément principal formaté et peut simplement sélectionner dans la liste non formatée. Les éléments formatés peuvent également induire les utilisateurs finaux en erreur en leur faisant croire que les éléments sont formatés avant d'être saisis dans la base de données. Pour ces raisons, il est recommandé de ne pas définir la propriété DataFormat lors de l'utilisation du contrôle DataCombo.
Détails Pour obtenir un didacticiel étape par étape illustrant l'utilisation de la propriété BoundText, consultez « Création d'un DataGrid avec un contrôle DataList connecté ». Pour une liste complète des propriétés et des méthodes de ces contrôles, consultez « Contrôle DataList » et « Contrôle DataCombo ».
Connectez deux tables à l'aide des contrôles DataCombo et DataList
La particularité des contrôles DataCombo et DataList est la possibilité d'accéder à deux tables différentes et de lier les données de la première table à un champ de la deuxième table. Cela se fait à l'aide de deux sources de données (telles que le contrôle ADOData ou l'environnement Data).
Tables relationnelles et valeurs « hostiles »
Dans une base de données relationnelle, toutes les informations destinées à être réutilisées ne sont pas stockées à plusieurs endroits. La plupart de ces informations sont stockées dans un jeu d'enregistrements composé de plusieurs champs ; parmi ces champs se trouve un champ « identifiant » qui identifie de manière unique le jeu d'enregistrements. Par exemple, la base de données Biblio fournie par Visual Basic stocke les noms de plusieurs sociétés d'édition dans une table appelée Publishers. Ce tableau comprend de nombreux champs, tels que l'adresse, la ville, le code postal et le numéro de téléphone. Mais par souci de simplicité, seuls les deux champs essentiels de cette table, Name et PubID, sont considérés. Le champ Nom stocke le nom d'un éditeur, tandis que le champ PubID stocke une valeur relativement « peu conviviale », telle qu'un nombre ou un code. Mais cette valeur peu conviviale est importante car elle identifie de manière unique l'éditeur et sert à relier l'ensemble de l'ensemble des enregistrements. De plus, cette valeur sera stockée dans plusieurs jeux d'enregistrements dans la deuxième table.
Le nom de la deuxième table est Titres, et chaque jeu d'enregistrements contient des informations telles que le titre, l'année de publication, l'International Standard Book Number (ISBN), etc. Le nom de l'un de ces champs est PubID. Le nom de ce champ est le même que celui du champ correspondant dans la table Éditeurs, car ce champ stocke la valeur qui lie ce titre à un éditeur spécifique.
Cette solution possible présente un petit problème : étant donné une application de base de données qui permet aux utilisateurs d'insérer de nouveaux titres, l'utilisateur doit d'une manière ou d'une autre saisir un nombre entier qui identifie l'éditeur. Si l'utilisateur peut se souvenir de l'identifiant unique de chaque éditeur, alors cela reste faisable, mais si d'une part l'utilisateur peut voir le nom de l'éditeur, et d'autre part la valeur correspondante est stockée dans la base de données, alors il apparaîtra plus pratique. Les contrôles DataList et DataCombo peuvent facilement résoudre ce problème.
Deux sources de données, trois champs, pas d'encodage
Les contrôles DataList et DataCombo utilisent deux sources de données pour résoudre ce problème. Tout en affichant uniquement le nom de l'éditeur (depuis la table Publishers), le contrôle DataList ou DataCombo écrit uniquement la valeur du champ PubID dans la table Titles. Dans la fenêtre Propriétés, définissez RowSource sur la source de données qui fournit les données à écrire (c'est-à-dire la table Publishers). Définissez ensuite la propriété DataSource sur la source de données dans laquelle les données doivent être écrites (c'est-à-dire la table Titres). Enfin, définissez les propriétés DataField, ListField et BoundColumn. La figure suivante montre comment attribuer deux sources de données (sous la forme de deux contrôles Data) et trois champs à un contrôle DataCombo :
En bref, la propriété ListField détermine quel champ est affiché par le contrôle. Dans ce cas, il s'agit du nom de l'éditeur. D'autre part, la propriété BoundColumn détermine quel champ de la table Publishers fournit la valeur réelle requise à la table Title. Notez que le champ PubID de la table Publishers ne peut pas (et ne doit pas) être modifié. Au lieu de cela, la valeur du champ PubID est écrite dans le champ spécifié par la propriété DataField. Dans cet exemple, cet attribut est le champ PubID de la table Titres.
Le tableau suivant donne un aperçu de ces propriétés et de la manière de les utiliser.
Notez que les contrôles DataList et DataCombo peuvent également être utilisés avec un seul contrôle de données. Pour y parvenir, vous pouvez définir les propriétés DataSource et RowSource sur le même contrôle de données et définir les propriétés DataField et BoundColumn sur le même champ dans le jeu d'enregistrements du contrôle de données. Dans ce cas, la liste sera remplie avec les valeurs ListField du même jeu d'enregistrements en cours de mise à jour. Si une propriété ListField est spécifiée mais que la propriété BoundColumn n'est pas définie, BoundColumn sera automatiquement définie sur le champ ListField.
Détails Si vous souhaitez créer une application de base de données simple étape par étape à l'aide du contrôle DataCombo, consultez « Création d'une application DataCombo simple ».
->