2010-04-17 4 views
1

Est-il possible de fournir le type de fonctionnalité suivant avec des outils client informix?Fonctionnalité de type boîte de liste déroulante déroulante pour les requêtes

Lorsque l'utilisateur tape les deux premiers caractères d'un nom, la liste déroulante est vide. Au troisième caractère, la liste se remplit seulement des noms commençant par ces trois caractères. Au quatrième caractère, MS-Access termine le premier nom correspondant (en supposant que l'AutoExpand du combo est activé). Une fois que suffisamment de caractères sont tapés pour identifier le client, l'utilisateur passe au champ suivant.

Le temps nécessaire pour charger le combo entre les séquences de touches est minime. Cela se produit une seule fois pour chaque entrée, à moins que l'utilisateur ne répète les trois premiers caractères.

Si votre liste contient encore trop d'enregistrements, vous pouvez les réduire par un autre ordre de grandeur en changeant la valeur de conSuburbMin constante de 3 à 4.

Répondre

1

Cela nécessite une combinaison de deux choses, dont un seul est partiellement sous le contrôle d'Informix l'API DBMS ou Informix the Client. Tout d'abord, vous avez besoin du gadget qui accepte l'entrée de l'utilisateur pour générer de manière asynchrone une requête correspondant à ce que l'utilisateur a tapé, récupère certains des résultats du SGBD et les affiche. Deuxièmement, vous avez besoin du SGBD pour répondre rapidement à de telles requêtes. Une partie du problème est "quelle forme prend la requête". Mais la fonctionnalité de base est:

SELECT TitleCaseName 
    FROM ReferenceTable 
    WHERE LowerCaseName[1,3] = 'abc'; 

Vous pouvez ou ne pouvez pas vous préoccuper de l'optimisation des premières lignes; vous pourriez ou ne pourriez pas vous embêter avec un ORDRE PAR. Votre code ne sélectionnerait que les N premières lignes. Vous pouvez le faire avec certaines informations de priorisation - les noms les plus fréquemment utilisés, etc.

Mais cette logique est fondamentalement la même pour tout SGBD - donner ou prendre des détails tels que le choix de la technique pour traiter la cartographie des cas (appel de fonction vs colonne) et notation pour sous-chaînes vs LIKE 'abc%'. Cependant, ce qui est délicat, c'est la combinaison asynchrone de l'entrée utilisateur et de la collecte des données du SGBD; Il est préférable de gérer plusieurs threads, l'un traitant de l'entrée de l'utilisateur, l'autre du SGBD et (éventuellement) de l'affichage (ou de l'entrée de l'utilisateur). Et cela nécessite un accrochage dans l'interface utilisateur API - pas quelque chose que les API Informix font de leur propre chef. L'interface utilisateur peut accéder à Informix (ou à tout autre SGBD) facilement via ODBC ou toute autre API faiblement similaire.

Questions connexes