Borland - TDBGrid et recherche rapide

Borland - TDBGrid et recherche rapide - C++ - Programmation

Marsh Posté le 09-03-2005 à 21:47:08    

Je dispose d'un TDBGrid associé à un datasource lui même associé à un dataset.  
Ce truc n'est pas optimal mais je ne peux pas le changer pour des raisons de continuité que je ne peux expliquer ici ...  
 
Bref, c'est une appli de gestion de CD qui fonctionne parfaitement bien mais j'aimerais ajouter une fonctionnalité :  
Quand un utilistateur appuie sur une touche du clavier, je voudrais que le premier enregistrement correspondant à cette touche ait le focus dans la grille.  
Par exemple, si il appuie sur R, je voudrais que le dataset se positionne tout seul sur les enregistrements commençants pas "R". Attention, je ne veux pas changer la requete SQL, je veux juste repositionner le dataSet.  
 
j'ai essayé ceci mais je suis bloqué :  

Code :
  1. if ( (Key >= 65 && Key <=90) || (Key >= 97 && Key <= 122))
  2.       {
  3.         AnsiString Ch = GetCharByAscii(Key);
  4.         TDataSet *pDS = GrilleConsultation->DataSource->DataSet;
  5.         AnsiString fieldName = Ch + "*";
  6.         TBookmark tB = *pDS->FieldByName(fieldName);
  7.         pDS->GotoBookmark((void *) fieldName.c_str());
  8.       }


 
 
Evidement, il plante en me disant qu'il ne connait aucun champ commençans par Ch* (f* par exemple).  
 
Comment faire ? je voudrais que ce ne soit pas trop lent non plus donc je voudrais éviter de reparcourir toutes la table car il peut y avoir à long terme plus de 500 enregistrements..  
 
merci baucoup

Reply

Marsh Posté le 09-03-2005 à 21:47:08   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed