Le deuxième champ d'une DB peut-il être indépendant du premier ?

Résolu
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 - 6 oct. 2004 à 14:53
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Derniè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..

5 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
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
3
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
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.
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
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
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
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
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
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.
0
Rejoignez-nous