|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Étudiant Inscription : juin 2011 Messages : 75 ![]() |
Bonjour,
J'ai un problème au niveau du résultat dans une comparaison de champs. En effet, sur deux fichiers access différents, j'ai exactement le même code vba. Sur les 2 fichiers, je réalise Code :
Sur le fichier access original, j'obtiens comme résultat cmp = 1, et sur l'autre, dans exactement la même situation, j'obtiens cmp = -1. Quelqu'un aurait une idée sur ce problème? |
||
|
|
00
|
|
|
#2 | |
|
Membre du Club
![]() Pierrick Étudiant Inscription : avril 2011 Messages : 57 ![]() |
Citation:
(réponse très utile hein?? Plus sérieusement, vérifie les types de tes variables, ça peut venir de la. Sinon, exécute le code en mode pas à pas (touche f8 après avoir inséré un point d'arrêt sur le if) et survole toutes tes variables avec la souris. Tu te rendras surement compte que tu n'est pas "dans exactement la même situation". A bientot!! |
|
|
|
00
|
|
|
#3 | ||||
|
Nouveau Membre du Club
![]() Étudiant Inscription : juin 2011 Messages : 75 ![]() |
Les types sont les mêmes, et les valeurs des variables sont pareilles (j'ai évidemment déjà vérifié tout ça en débugant pas à pas avant de poster mon message). D'ailleurs, pour tester, j'ai créer dans mes 2 fichiers un nouveau bouton, dans lequel j'ai copié-collé le code suivant
Code :
Code :
|
||||
|
|
00
|
|
|
#4 | ||
|
Membre du Club
![]() Pierrick Étudiant Inscription : avril 2011 Messages : 57 ![]() |
Désolé de t'avoir demandé pour le débuggage, mais il y a beaucoup de gens qui viennent poser une question en ayant brulé des étapes!!
Et ton problème me semble tellement "mystique"... J’espère ne pas passer pour un bouffon (qui à dit "Trop tard!!" ?)en te demandant: dans ta fonction "Function compare_champs(nb_champs, champs1(), champs2())" j'ai l'impression que tu ne déclare pas ta variable "cmp". Si cette fonction se situe dans un module a part, ça peut poser problème non? J’espère que quelqu'un de plus expérimenté que moi viendra t'aider =) Bon courage! EDIT: au passage, truc un peu futile mais qui peut t'aider a pas avoir trop mal au crane quand tu debug, tu peux modifier Code :
|
||
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : juin 2011 Messages : 75 ![]() |
au niveau de la déclaration de cmp, effectivement, je n'avais même pas remarqué que je ne l'avais pas déclaré dans la fonction. Mais, je viens de tester, et ça ne change rien à mon problème
|
|
|
00
|
|
|
#6 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Bonjour,
Le mieux, pour vérifier la comparaison, serait de traduire la chaine issue du fichier en caractère asccii (utiliser la fonction ASC) pour vérifier que les caractères sont bien identiques
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : juin 2011 Messages : 75 ![]() |
Bonne idée ! Je viens de le faire et...... c'est bien les mêmes
J'ai même essayé, dans mon deuxième fichier (celui qui ne donne pas le résultat voulu) de lancer la comparaison sur les valeurs ascii correspondant à mes chaines de caractères, soit champs1(1) = "84726595727649549584828380115" et champs2(1) = "8472958287455295848280" , et ça me renvoie toujours comme résultat cmp = -1, donc que champs2(1) > champs1(1).... Je n'y comprend plus rien |
|
|
00
|
|
|
#8 | |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Citation:
champs2(1)=8472958287455295848280 champs1(1)=84726595727649549584828380115 C'est bien le cas non ?
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
|
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : juin 2011 Messages : 75 ![]() |
Dans ce cas, dans l'autre fichier, pourquoi ça me dit l'inverse avec les mêmes valeurs? vu que c'est exactement le même code, les mêmes variables, etc, je devrais logiquement obtenir le même résultat, non?
|
|
|
00
|
|
|
#10 | ||
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Citation:
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
||
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : juin 2011 Messages : 75 ![]() |
le code de mon message n°3 est exactement identique sur les 2 fichiers (j'ai fait un copié-collé, et j'ai du vérifier une bonne dizaine de fois, lol), quand aux valeurs, je viens de les revérifier, et retester, et j'ai toujours le même résultat, et je ne sais pas pourquoi.... le pire, c'est que cette erreur de comparaison ne se fait pas tout le temps : sur 6546 champs testés, seulement 78 sont faux.....
|
|
|
00
|
|
|
#12 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Il n'y aurait pas d'espaces ou de caractères non-imprmables par hasard ? (d'où mon idée de mettre en binaires TOUS les enregistrements pour vérifier (cf. le ASC)
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
|
|
00
|
|
|
#13 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : juin 2011 Messages : 75 ![]() |
les seules caractères sont des lettres majuscules ou minuscules, des chiffres, underscore, ou un trait d'union... ce sont tous des caractères imprimables, non?
Ce qui est encore plus étrange, c'est que j'ai fait le même test en utilisant la fonction StrComp, et je retrouve le même problème !!! De plus, j'ai quand même réussi à cibler le caractère qui fait planter la conversion, apparemment ça serait l'underscore. |
|
|
00
|
|
|
#14 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Peux-tu nous fournir en PJ un échantillon du jeux d'essai qui plante ? (voire-même les tables complètes)
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
|
|
00
|
|
|
#15 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : juin 2011 Messages : 75 ![]() |
Malheureusement, je suis stagiaire au sein d'une entreprise, et je n'ai pas le droit de divulguer le code et les tables utilisées, désolé...
De toute façon, grâce à l'astuce d'utiliser le code ascii, j'ai pu bidouiller mon code pour que ça marche de la manière suivante : j'ai copié dans une variable tampon mes chaines de caractères à comparer, puis j'ai remplacé dans ces copies le caractère underscore (qui entrainait une mauvaise comparaison) par un autre caractère (trouvé grâce à la table ascii), qui lui, donnait un bon résultat de comparaison. C'est barbare, mais au moins, je n'ai plus aucune erreur dans mes tables.... Merci encore pour avoir réfléchi sur mon problème
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com