cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 2013
-
6 oct. 2004 à 14:53
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 2013
-
7 oct. 2004 à 09:15
J'utilise une BD par exemple qui contient une table 'végétaux' et des champs comme suit: 1=légumes, 2=fruits, 3=arbres etc.
Les champs sont donc indépendants (contrairement à la philosophie des SGDBR..). Je souhaite comparer une entrée source à chaque cellules de chaque champ, et une fois que le champ 1 est fini, passer au champ 2 etc. Je me demande si c'est possible, finalement !
Voici le code, les explications et là où ca coince.
'on compare le texte source avec chaque cellule du champ 1 de la base 2
rst2.MoveFirst
Do While Not rst2.EOF
monresul = InStr(1, source(i), rst2(1), 1)
If monresul <> 0 Then
Exit Do
End If If source(i) "" And rst2.Fields(1).Value "fof" Then
Exit Do
rst2.MoveNext If monresul 0 And rst2.Fields(1).Value "fof" Then
'tout marchait bien jusqu'à ce que j'introduise la comparaison dans le champ 2..
Do While Not rst2.EOF
monresul = InStr(1, source(i), rst2(2), 1)
If monresul <> 0 Then
Exit Do
End If If source(i) "" And rst2.Fields(2).Value "fof" Then Exit Do
rst2.MoveNext If monresul 0 And rst2.Fields(2).Value "fof" Then
rst3.MoveFirst
Do While Not rst3.EOF
monresul = InStr(1, source(i), rst3(1), 1)
If monresul <> 0 Then
Exit Do
End If
'la comparaison du champ 1 de la base 3 marche bien quand il n'y a pas de champ 2 de la base 2
If source(i) "" And rst3.Fields(1).Value "fof" Then Exit Do
rst3.MoveNext If monresul 0 And rst3.Fields(1).Value "fof" Then
Exit Do
End If
Loop
Exit Do
End If
Loop
Exit Do
End If
Loop
End If
Next i
PS: la valeur "fof", c'est tout ce que j'ai trouvé pour terminer la comparaison, pas très élégant..
A voir également:
Le deuxième champ d'une DB peut-il être indépendant du premier ?
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 6 oct. 2004 à 20:10
Pour ta table 'végétaux', en respectant la "philosophie SGBDR", rien ne t'interdit de tout mettre dans la même table. Un exemple :
Champ1 = le nom de ton végétal (carotte, citron, chêne, ...)
Champ2 = le type de ton végétal (légume, fruit, arbre, ... ou un code '1,2,3,...' qui le représente).
Ainsi, tu auras un enreg par végétal, ce qui évitera d'avoir une multitude de tables dans ta base.
Comme ça dans tes requetes, tu n'interroges qu'une table avec juste un critère en plus du genre : ' ... where champ2 = type de végétal ...'
Cordialement, CanisLupus
Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 6 oct. 2004 à 14:57
dsl, j'oublie le message d'erreur:
BOF ou EOF est égal à True ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel.
J'avais ce message quand la comparaison = o et qu'il n'y avait pas de "fof", que j'ai mis pour signaler la fin du fichier.
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 6 oct. 2004 à 16:38
Là, je crois que tu t'embarques dans une galère qui te mène tout droit vers le pays des usines à gaz.
Tu ferais peut-être mieux de revenir à la "philosophie des SGBDR".
Cordialement, CanisLupus
Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 6 oct. 2004 à 16:58
Ben c'est bien dommage ca aurait été bien pratique..
est-ce que je pourrais utiliser des tables en cascade, plutôt que des champs ?
(en fait, j'ai plusieurs comparaisons à faire, des dizaines de base à ouvrir, j'aurais préféré n'en ouvrir qu'une et voyager de champ en champ)
si quelqu'un l'a sous la main est-ce que rst.tables (i) est disponible ?
merci bien
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 7 oct. 2004 à 09:15
Le problème avec cette manière de faire, c'est la redondance: si j'ai 100 noms d' arbres dans le champ 1, le champ 2 sera rempli de 100 fois la cellule 'arbre'. Je sais que c'est comme ça que ca marche mais dans mon cas où je n'ai que deux infos reliées, c'est peu économique. Je croyais qu'il y avait moyen de nommer les colonnes, mais tu m'a s évité de perdre mon temps dans cette direction, grand merci.