2010-08-15 3 views
1

J'ai une question à propos de DBLookupComboBox.dblookupcombobox a une ligne null

J'ai un programme qui a une base de données que j'ai écrite. Il a tout, sauf quand j'ouvre DBLookupComboBox il doit avoir une ligne avec une valeur nulle lorsque l'utilisateur ne veut rien sélectionner. Mais il n'y en a pas. Comment puis-je faire apparaître une ligne nulle?

Répondre

1

Vous devez ajouter une ligne qui indique 'Rien' ou 'Tout', ce qui convient le mieux. La solution habituelle est une requête UNION, qui peut être utilisée comme RowSource de la liste déroulante. La requête Union peut être utilisée pour ajouter des champs virtuels.

Si le combo comtains que des valeurs uniques, vous pouvez dire:

SELECT "Nothing" As Description 
FROM ATable 
UNION 
SELECT Description 
FROM ATable 

UNION élimine les doublons, UNION ALL < n'a pas, donc s'il y a des lignes correspondantes, vous pouvez dire:

SELECT DISTINCT "Nothing" As Description 
FROM ATable 
UNION ALL 
SELECT Description 
FROM ATable 

Si vous voulez "Rien" pour trier d'abord, vous devez jongler un peu et utiliser "Rien", ou "-Neuf", mais si vous avez un ID ou une colonne clé, vous pouvez obtenir un bon tri, comme ça:

SELECT 0 As ID, "Nothing" As Description 
FROM ATable 
UNION 
SELECT ID, Description 
FROM ATable 
+0

Lorsque je veux retourner 1 ligne, comme dans le SELECT pour le choix "Tout" ou "Rien", j'utilise SELECT TOP 1 sur la plus petite table indexée dans mon application (locale, si possible). Cela semble être plus efficace que DISTINCT, mais je n'ai jamais vraiment testé. –

+0

Je suppose que tant que la table choisie est garantie pour rester pendant la vie de la base de données. Il pourrait être assez déroutant si la suppression d'une petite table causait de nombreux problèmes. – Fionnuala

+1

Je ne supprime pas les tables car une fois que j'ai implémenté l'application, le schéma reste en place pour la durée de vie de l'application. Je ne choisirais jamais une table qui ne faisait pas partie du schéma de données principal, ou dont dépendait l'interface utilisateur (comme le tblConfig que j'ai dans la partie frontale de presque toutes mes applications). –

Questions connexes