Parcourir une BD

cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 - 28 oct. 2004 à 16:05
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 - 4 nov. 2004 à 14:27
Hello

Je voudrais parcourir une base de données comme suit
champ1 champ2
je suis
tu es
il est

Le but est d'avoir:
je-suis
je-es
je-est
tu-suis
tu-es etc

Pour ça, je devrais utiliser deux boucles FOR, mais comment sont paramétrés les enregistrements dans les recordset dans les bases de données par ADO ? Les champs sont paramétrés recordset.Fields(1) mais les enregistrements ? Dois-je utiliser MoveNext ?

Merci

17 réponses

cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
28 oct. 2004 à 16:55
Pour être plus précis, je voudrais quelque chose comme
For i = 0 to ubound (recordset.fields(1))
for j= 0 to ubound (recordset.fields(2))
monresul= texteàcomparer Like "*" & recordset.fields(1).value(i) & " " & recorset.fields(2).value(j)
next j
next i

Naturellement ca ne marche pas, vu que le recordset n'est pas un array
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
28 oct. 2004 à 16:59
en DAO
en cochant Projet...Références---Microsoft DAO 3.51 Object Library

Set Db = OpenDatabase("C:\MaBase.mdb")
Set Req= Db.OpenRecordset("SELECT Champ1, Champ2 FROM TaTable")
If Req.recordcount<>0 then
Do Until Req.eof
List1.Additem Req("Champ1") & "-" & Req("Champ2")
Req.movenext
loop
End if
Set Req=Nothing
Set Db=Nothing

It@li@
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
29 oct. 2004 à 09:04
Elle est en quoi ta BD : ACCESS...EXCEL ??

It@li@
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
29 oct. 2004 à 09:38
Elle est en ACCESS 2000
j'utilise VB6
Bien merci ppour le code que je n'ai pas encore essayé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
29 oct. 2004 à 11:05
Si je comprends bien le code (qui ne marche pas: objet requis), List.Additem fait la liste de tous les enregistrements, les uns après les autres. De tous les enregistrements mais pas de toutes les cellules...
et donc, j'aurais (pour l'exemple précédent):
je suis
tu es
il est

alors que je voudrais
je suis
je es
je est
tu suis
tu es ..

en fait je voudrais que le prog aille chercher le premier mot du champ 1 et le premier mot du champ 2 (etc) pour les mettre dans:
 texte like "*" & mot1champ1 & " " & mot1champ2
texte like "*" & mot2champ1 & " " & mot1champ2
texte like "*" & mot3champ1 & " " & mot1champ2
texte like "*" & mot1champ1 & " " & mot2champ2
texte like "*" & mot1champ1 & " " & mot3champ2


Donc je me disais que peut-être finalement il faudrait mettre chaque champ dans un array, est-ce possible et comment ?
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
29 oct. 2004 à 11:42
List est un objet à rajouter de type Liste

ok essayes alors ca :

en DAO
en cochant Projet...Références---Microsoft DAO 3.51 Object Library

Set Db = OpenDatabase("C:\MaBase.mdb")
Set Req= Db.OpenRecordset("SELECT DISTINCT Champ1 FROM TaTable")
Set Req2= Db.OpenRecordset("SELECT DISTINCT Champ2 FROM TaTable")
If Req.recordcount <>0 and Req.recordcount <>0 then
Do Until Req.eof
Do Until Req2.eof
List1.Additem Req("Champ1") & "-" & Req2("Champ2")
Req2.movenext
loop
Req.movenext
loop
End if
Set Req=Nothing
Set Req2=Nothing
Set Db=Nothing

It@li@
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
29 oct. 2004 à 12:11
Désolé, je ne comprend pas bien cet objet 'list', c'est un datalist que je dois ajouter ? c'est un objet lié à un combobox ? c'est un type que je dois définir ? mais comment le définir ? comme ceci ?:

type liste
champ1 as string
champ2 as string
end type
dim list1as liste
mais ca ne marche pas

Pour la suite, j'ai l'impression de piger quand même un peu
Grand merci de ta patience
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
29 oct. 2004 à 13:13
Composant ListBox en standard dans les composants VB, mais effectivement tu peux le remplacer par une ComboBox

It@li@
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
29 oct. 2004 à 14:34
OK pour list1
Par contre, la requête suivante marche:
rst1.open "SELECT * from MATABLE", DB
rst.movefirst
do while not rst1.eof
msgbox rst1(1)
rst1.movenext
loop

Mais pas celle-ci:
rst1.open "SELECT Champ1 from MATABLE", DB
(..)
msgbox rst1(1)
(..)
(impossible de trouver l'objet dans la collecion correspondant au nom ou à la référence ordinale demandée)
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
29 oct. 2004 à 14:44
Désolé pour les multi-posts, mais j'ai trouvé une petite partie:`

pour le champ 1, il faut faire rst(0), car s'il y a 2 champs ca commence à 0, puis 1
par contre, pour le champ 2, rst(1), ca ne marche pas ..
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
29 oct. 2004 à 15:20
En fait, il semble qu'on ne puisse ouvrir le champ2 sans ouvrir le champ1
comme ceci
rst1.open "SELECT DISTINCT Champ1 , Champ2 from MATABLE", DB
et
list1. additem rst("champ1") & "" & rst("champ2") marche

ce qui me donne de nouveau
je - suis
tu - es
il - est

par contre

list1.additem rst("champ2") ne marche pas
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
29 oct. 2004 à 15:38
non car c'est :
rst2("champ2")

It@li@
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
29 oct. 2004 à 15:47
non plus, invalid use of null
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
29 oct. 2004 à 16:03
iif(isnull(rst2("champ2")),"",rst2("champ2)) au lieu de rst2("champ2")

It@li@
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
29 oct. 2004 à 16:28
Bravo on y est presque, j'ai pour l'instant:
je - suis
je - es
je - est

mais pas encore la suite !
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
2 nov. 2004 à 08:04
utilise mon code

It@li@
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
4 nov. 2004 à 14:27
Désolé, j'ai vérifié 10 fois mon code:

If rent11.RecordCount <> 0 And rent12.RecordCount <> 0 Then
        Do Until rent11.EOF
            Do Until rent12.EOF
            List1.AddItem rent11("num") & " " & IIf(IsNull(rent12("essai")), "", rent12("essai"))
            rent12.MoveNext
            Loop
            rent11.MoveNext
            Loop
            End If
        Set rent12 = Nothing
        Set rent11 = Nothing
        Set ccadre_ent = Nothing



et je n'ai qu'une partie de la boucle
0
Rejoignez-nous