Accès au contenu des cellules d'un dbgrid [Résolu]

Signaler
Messages postés
6
Date d'inscription
dimanche 4 décembre 2005
Statut
Membre
Dernière intervention
29 décembre 2005
-
Messages postés
6
Date d'inscription
dimanche 4 décembre 2005
Statut
Membre
Dernière intervention
29 décembre 2005
-
Bonjour,

je veux parcourir le contenu du premier champ (toutes les lignes) d'un
DBGrid afin d'en comparer le contenu avec le contenu d'une cellule d'un
TStringgrid..comment faire?

J'ai trouvé la valeur Query.RecordCount comme limite de ma boucle....(nombre d'enregistrements contenu dans le DBGrid donc)

mais je ne sais pas comment récupérer la valeur du champ de l'enregistrement n puis n+1..puis n+2 etc...?

DBGrid.Fields[0].AsString...mais comment sélectionner la valeur
du champ dans la première ligne...puis la deuxième ligne etc?

OU est ce que je suis positionné par défaut pour lire le contenu d'un champ?

4 réponses

Messages postés
198
Date d'inscription
mardi 6 août 2002
Statut
Membre
Dernière intervention
29 octobre 2008

Voici une solution, il en existe toujours un max ...


Tu vas utiliser un DBNavigator que tu va mettre en "hide" afin de ne pas le voir à l'écran et le connecter à ta DBGrid.

Ensuite il te reste à faire ce genre de code :

For vCptChamps:=0 To DataSource.DataSet.RecordCount-1 Do
Begin
// Ton traitement champ 1
... := DBGridW.Fields[0].AsString;
// Ton traitement champ 2
...:= DBGridW.Fields[1].AsString;
// Ligne suivante Suivant
DBNaviW.BtnClick(nbNext);
End;

Attnetion si tu navige dans ta DBGrid remettre le DBNavigator à la première occurence avant traitement ...

Pour Avoir les informations de la ligne sélectionnée, simplement faire :

// Ton traitement champ 1
... := DBGridW.Fields[0].AsString;

vaughan
Messages postés
40
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
29 janvier 2006

Si je comprends bien tu utilises une requete.Alors ton probleme est facile à résourdre.Le DBGrid est simplement un outil de visualisation.C'est la requete que tu vas utiliser pour parcourir les champs.C'est la meme chose qu'avec une table.
Dans ton exemple: Query.RecordCount est le nombre d'enregistrement. Admettons que vous avez un champs nommé NomCl:
Query.FieldByName('NomCl').AsString donne accés au champs NomCl.
En résumé c'est comme tu utilises une table.j'espere vous avoir un peu aidé.
Messages postés
637
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017

Avec
DBGrid1.Colums[nc].FieldName tu as le nom du champ

DBGrid1.Colums[nc].asString tu as la valeur de l'enregistrement sélectionné

yvessimon
Messages postés
6
Date d'inscription
dimanche 4 décembre 2005
Statut
Membre
Dernière intervention
29 décembre 2005

Merci,

réponse très...complète.