Comment puis-je obtenir le Bon Élément dans un Delphi DBLookupComboBox pour être Sélectionné
J'ai un DBLookupComboBox qui est relié à une requête de base de données. Cette partie fonctionne bien. Lorsque je lance le programme, la DBLookupComboBox est remplie avec les résultats de la requête. J'aimerais voir la DBLookupComboBox rempli avec le premier élément "Veuillez Sélectionner" lorsque le programme s'exécute en premier ou lorsqu'un nouvel élément d'action est initiée. (Voir image ci-dessous)
Aussi, si je suis le chargement d'une base de données d'enregistrement qui avait choisi Indice 2 "l'Élimination Rapide" comment puis-je obtenir le DBLookupComboBox, pour afficher l'entrée sélectionnée?
Oui, "Veuillez Sélectionner" est à l'index 0 et il est récupéré dans le cadre de la requête.
OriginalL'auteur Michael Riley - AKA Gunny | 2011-08-27
Vous devez vous connecter pour publier un commentaire.
J'imagine que la valeur de la table sous-jacente champ est NULL plutôt que zéro, qui raconte l'DBComboBox qu'aucune valeur n'a encore été sélectionné et affiche en conséquence.
Si la valeur dans la table étaient à zéro, je thinkg le texte dans le champ d'édition de la liste serait sélectionné pour indiquer que, mais permettez-moi de rappeler ce tort.
De toute façon, il suffit de cocher pour Champ1.IsNull (ou IsEmpty) et puis le mettre à zéro. Cela signifie que vous ne pouvez plus faire la distinction entre une "valeur inconnue" (NULL) et "sans valeur sélectionnée" (zéro), à moins que vous éviter le zéro de la valeur de le faire revenir dans la table...
Wellcome retour à Delphes. Espérons qu'il n'est pas de la frustration pour vous et il y a au moins un couple de "oh yeah!"'s autour de.
J'ai juste eu un de ces "oh oui!" moments. J'ai acheté Cary Jensens nouveau livre "Delphi en Profondeur: ClienDataSets", et le portage de son BDE-DBDEMOS exemples au cours de MS Access et en apprendre beaucoup. ClientDataSets avoir beaucoup d'utilité. Quand je l'ai fait avec le portage d'Accès, je vais essayer de portage à ElevateDB.
OriginalL'auteur Marjan Venema
Vous pourriez essayer ceci (je sais que vous avez probablement résolu maintenant, comme vous l'a demandé il y a 2 ans), mais au cas où quelqu'un d'autre est intéressé...
Qui définit simplement KeyValue pour le premier enregistrement dans la ListSource dataset, qui doit être la ligne "s'il vous Plaît Sélectionnez'.
OriginalL'auteur Steve Childs
Une façon de le faire serait d'ajouter "s'il vous Plaît sélectionnez" à la table sous-jacente à partir de laquelle vous sélectionnez, où la clé de ce n-uplet de 0. Ensuite, lorsque vous affichez la zone de liste déroulante et la valeur du champ est 0, 's'il vous Plaît sélectionnez" sera affiché. Bien sûr, vous devez vous assurer que cette valeur n'est jamais sélectionné!
Ensuite, vous devez vous assurer que les champs d'un nouvel enregistrement sont initialisées à la valeur 0 et non pas la valeur NULL.
OriginalL'auteur No'am Newman
La
DBLookupComboBox
affiche par défaut laListField(s)
dontKeyField
dans leListSource
correspond à laDataField
dans leDataSource
. Ainsi, afin d'afficher une certaine valeur pour laDataField
NUL, vous devez fournir unKeyField
de la valeur NULL dans laListSource
. Mais on pourrait imaginer de ne pas vouloir une valeur NULL dans la sous-jacente de la table associée à laListSource
.Une façon de contourner cela est d'ajouter de la valeur NULL pour le jeu de données derrière le
ListSource
avec unUNION SELECT
. Qui devrait fonctionner très bien, depuis que dataset ne doit pas être modifiable.Maintenant, pour assurer cette spéciale jeu de données est disponible uniquement lorsque vous ajoutez un nouvel enregistrement de l'ensemble de données associé à la
DataSource
, de gérer la requête pourListSource.DataSet
dansDataSource.OnStateChange
. LorsqueDataSource.State = dsInsert
, puis mise à jourListSource.DataSet
.OriginalL'auteur NGLN
Modification de Steve Childs réponse dans TwwDBLookupCombo, InfoPower composant
Merci Steve Il fonctionne pour moi
OriginalL'auteur Mohammad Yusuf