Bonjour tout le monde,
j'utilise les composants ADO pour me connecter à une base Access.
J'ai 2 problèmes qui ont la même cause, la méthode First plante et commence à la seconde ligne, je dois donc travailler sans faire adoQuery.First, ce qui me plaît moyen car je ne suis pas sûr qu'un adoQuery.Open garantit qu'on commence à la première ligne. Ceci est dans le cadre d'utilisation d'un adoQuery avec un simple adoConnection pour travailler sur des requêtes en ligne de commande.
Mon second problème est quand je veux afficher le résultat de la requête dans un DBGrid.
Voici la suite des composants :
adoQuery relié à un DataSetProvider relié à un ClientDataSet relié à un DataSource relié à un DBGrid.
DataSetProvider.DataSet := adoQuery
ClientDataSet.ProviderName := DataSetProvider
DataSource.DataSet := ClientDataSet
DBGrid.DataSource := DataSource
Si je fais un adoQuery.First, je perds la première ligne à l'écran.
Quand je souhait compter le nombre de lignes, l'adoQuery.RecordCount retourne toujours -1.
Je passe ainsi pour compter le nombre de lignes :
Je retrouve le bon nombre de ligne si je ne commence pas par un First mais je perds quand même la première ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 nbLigne := 0; adoQuery.Close; adoQuery.Open; while not adoQuery.Eof do begin nbLigne := nbLigne + 1; adoQuery.Next; end; adoQuery.Close; adoQuery.Open; ShowMessage( IntToStr( nbLigne ) );
Comment puis-je faire pour arriver à garder la première ligne à l'écran dans le DBGrid ?
Y-a-t-il un moyen pour ne plus avoir le bug avec le .First qui commence à la seconde ligne ?
Est-ce que ce bug est connu ?
Merci pour votre aide, je suis paumé.
Partager