Parcourir 2 champs d'une BD (2)

Résolu
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 - 17 nov. 2004 à 12:08
  - 18 nov. 2004 à 22:46
Bonjour à tous,

J'ai déjà posé le problème il y a quelques semaines et grâce à alitalia, j'ai bien progressé, cependant, je suis encore coincé:
je voudrais que chaque élément du champ 1 soit associé à chaque élément du champ 2.
champ 1: champ 2:
homme grand
femme petit
enfant
Pour obtenir:
homme grand
homme petit
femme grand
etc.
J'ai deux problèmes avec le code qui suit:
- j'ai une erreur runtime 3021 de fin de fichier atteinte ou pas d'enregistrement
- tout le champ 1 est parcouru mais seulement les 3 premiers élément du champ 2

Voici le code:

Dim ccadre_ent As New ADODB.Connection
Dim rent11 As New ADODB.Recordset
Dim rent12 As New ADODB.Recordset

ccadre_ent.Provider = "Microsoft.Jet.OLEDB.4.0"
ccadre_ent.ConnectionString = "C:\cadre_ent.mdb"

Set rent11 = New ADODB.Recordset
Set rent12 = New ADODB.Recordset

ccadre_ent.Open
rent11.Open "SELECT DISTINCT num FROM ent1", ccadre_ent
rent12.Open "SELECT DISTINCT essai FROM ent1", ccadre_ent

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"))
If rent12.Fields(0).Value = "fof" Then
rent12.MoveFirst
rent11.MoveNext
End If

rent12.MoveNext

If rent11.Fields(0).Value = "fif" Then Exit Do
Loop

rent11.MoveNext
Loop
End If
Set rent12 = Nothing
Set rent11 = Nothing
Set ccadre_ent = Nothing

je précise que les fof et fif sont des valeurs pour indiquer la fin de fichier, je sais c'est pas très élégant mais j'essaie un peu tout.

Merci de votre aide

5 réponses

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
17 nov. 2004 à 23:41
oupsssssssss...........
Essayes ça

Dim ccadre_ent As New ADODB.Connection
Dim rent11 As New ADODB.Recordset
Dim rent12 As New ADODB.Recordset

ccadre_ent.Provider = "Microsoft.Jet.OLEDB.4.0"
ccadre_ent.ConnectionString = "C:\cadre_ent.mdb"

Set rent11 = New ADODB.Recordset
Set rent12 = New ADODB.Recordset

If rent11.RecordCount <> 0 And rent12.RecordCount <> 0 Then
Do While Not rent11.EOF
Do While Not rent12.EOF
List1.AddItem rent11("num") & " " & IIf(IsNull(rent12("essai")), "", rent12("essai"))
rent12.MoveNext
Loop
rent12.MoveFirst
rent11.MoveNext
Loop

End If
Set rent12 = Nothing
Set rent11 = Nothing
Set ccadre_ent = Nothing


_______________________________________

Jean-Paul

Le Savoir n'a de valeur que s'il est partagé
3
cs_samy56 Messages postés 39 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 27 janvier 2005
17 nov. 2004 à 13:20
salut lacomm

pourquoi ne pas créer 2 tables
1 avec (hommes, femmes, enfants..)
1 avec (grand , petit..)

puis tu fai ta requete

select * from table1, table2

et ensuite tu rempli ton listbox

samy56
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
17 nov. 2004 à 23:38
Dim ccadre_ent As New ADODB.Connection
Dim rent11 As New ADODB.Recordset
Dim rent12 As New ADODB.Recordset

ccadre_ent.Provider = "Microsoft.Jet.OLEDB.4.0"
ccadre_ent.ConnectionString = "C:\cadre_ent.mdb"
Essayes ça

Set rent11 = New ADODB.Recordset
Set rent12 = New ADODB.Recordset

If rent11.RecordCount <> 0 And rent12.RecordCount <> 0 Then
   Do While Not rent11.EOF
      Do While Not  rent12.EOF
        List1.AddItem rent11("num") & " " & IIf(IsNull(rent12("essai")), "", rent12("essai"))
        rent12.MoveNext
      Loop
      rent12.MoveFirst
      rent11.MoveNext
    Loop

End If
Set rent12 = Nothing
Set rent11 = Nothing
Set ccadre_ent = Nothing

______________________________________

Jean-Paul

Le Savoir n'a de valeur que s'il est partagé
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
18 nov. 2004 à 10:37
Merci à tous les deux:
samy56: c'est comme ça que j'avais commencé, mais ca me faisait un nombre incroyable de table à ouvrir
valtrase: GENIAL ! ton code marche, avec juste une petite réserve (c'est pas grave pour moi mais j'aimerais comprendre): c'est pas dans l'ordre.
homme cinq
homme deux
homme huit
homme un
homme quatre
homme sept
homme six
homme trois

..alors que le champ 2 est dans l'ordre.
Encore merci de votre aide
0

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

Posez votre question
pour que ton code soit dans l'ordre fait une requette SQL à l'ouverture de ta table
bonne prog.
_______________________________________

Jean-Paul

Le Savoir n'a de valeur que s'il est partagé
0
Rejoignez-nous