PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Comparaison entre deux tables
Comparaison entre deux tables
Débuté par Jeremy, 23 jan. 2020 09:41 - 7 réponses
Membre enregistré
12 messages
Popularité : +1 (1 vote)
Posté le 23 janvier 2020 - 09:41
Bonjour, je vous écris car j'ai 2 petits problèmes concernant mon code,

L'application permet de comparer deux "formules" et doit mettre en avant les différences.
Le client sélectionne la première formule, ce qui remplit mon premier tableau via une requête, même chose pour la seconde formule. (Une formule peut avoir un nombre différent d'entrées)
Le client clique alors sur comparer.

J'ai donc écris ceci :

nPosTrouvée est un entier
j est un entier = 1

POUR TOUTE LIGNE j de Table_Rq_CompoFormuleB1

nPosTrouvée = TableCherche(Table_Rq_CompoFormuleB1.Designation,Table_Rq_CompoFormuleB2.Designation[j])
Trace(nPosTrouvée)

SI nPosTrouvée = -1 ALORS
// je n'ai pas trouvé de correspondance donc je passe la ligne de désignation en rouge
Table_Rq_CompoFormuleB1.Designation[j]..Couleur=RougeClair

FIN
j++
FIN


Premiere erreur : le trace me renvoie systématiquement un -1 sur ma première ligne (meme si je compare deux formules similaires). Le débug me montre bel et bien deux désignation similaire avec un -1 sur mon TableCherche (???)

Seconde erreur : Si le tableau B1 a un nombre d'entrées supérieur au tableau B2, l'appli crash car elle ne trouve pas l'indice j (comment détourner cette erreur ?)

Merci de votre aide :)
Message modifié, 23 janvier 2020 - 09:41
Membre enregistré
446 messages
Popularité : +31 (43 votes)
Posté le 23 janvier 2020 - 11:32
Bonjour

Et comme ca ?

nPosTrouvée est un entier

POUR TOUTE LIGNE de Table_Rq_CompoFormuleB1
nPosTrouvée = TableCherche(Table_Rq_CompoFormuleB2.Designation,Table_Rq_CompoFormuleB1.Designation)
Trace(nPosTrouvée)

SI nPosTrouvée = -1 ALORS
// je n'ai pas trouvé de correspondance donc je passe la ligne de désignation en rouge
Table_Rq_CompoFormuleB1.Designation..Couleur = RougeClair
FIN
FIN


cdlt

DG
Membre enregistré
12 messages
Popularité : +1 (1 vote)
Posté le 23 janvier 2020 - 13:55
Re Bonjour, avec cette solution, je n'ai plus d'erreur sur l'indice j vu qu'il a disparu, par contre, j'aimerai que seulement les lignes qui sont différentes passent au rouge, actuellement, n'ayant pas d'indicateur de ligne, si nPosTrouvée renvoie -1, toutes les lignes passent au rouge.

Merci de ton aide
Membre enregistré
446 messages
Popularité : +31 (43 votes)
Posté le 23 janvier 2020 - 14:17
et comme ça du coup ?

nPosTrouvée est un entier
J est un entier

pour j = 1 _A_ Table_Rq_CompoFormuleB1..occurence

nPosTrouvée = TableCherche(Table_Rq_CompoFormuleB2.Designation,Table_Rq_CompoFormuleB1[J].Designation)
Trace(nPosTrouvée)

SI nPosTrouvée = -1 ALORS
// je n'ai pas trouvé de correspondance donc je passe la ligne de désignation en rouge
Table_Rq_CompoFormuleB1[J].Designation..Couleur = RougeClair
FIN
FIN
Membre enregistré
12 messages
Popularité : +1 (1 vote)
Posté le 23 janvier 2020 - 14:23
Super, ça fonctionne du tonnerre.

Merci beaucoup de ton aide !
Membre enregistré
446 messages
Popularité : +31 (43 votes)
Posté le 23 janvier 2020 - 15:01
:merci:
Membre enregistré
12 messages
Popularité : +1 (1 vote)
Posté le 23 janvier 2020 - 16:28
Re, c'est encore moi, j'ai donc utilisé ce qui a été définit précédemment, et j'ai essayer de faire la même chose dans l'autre sens, c'est a dire, maintenant que la table 1 scrute les donnée de la table 2 en colorant les différences, je tente de scruter la table 1 avec la deuxieme,
J'ai malheureusement un retour étrange, en mode débug, je peux voir que les lignes de la table 1 se colores correctement, mais quand la fonction passe sur la table 2, toutes les couleurs de la 1 disparraissent. C'est a n'y rien comprendre

//Table 1 qui scrute la 2
POUR K = 1 _A_ TableB1Size

nPosTrouvée1 = TableCherche(Table_Rq_CompoFormuleB2.Designation,Table_Rq_CompoFormuleB1[K].Designation)
Trace(nPosTrouvée1)

SI nPosTrouvée1 = -1 ALORS

Table_Rq_CompoFormuleB1[K].Designation..Couleur = RougeClair

SINON
Table_Rq_CompoFormuleB1[K].Designation..Couleur = VertFoncé

FIN
FIN

//Table 2 qui scrute la 1
POUR J = 1 _A_ TableB2Size

nPosTrouvée3 = TableCherche(Table_Rq_CompoFormuleB1.Designation,Table_Rq_CompoFormuleB2[J].Designation)
Trace(nPosTrouvée3)

SI nPosTrouvée3 = -1 ALORS
// je n'ai pas trouvé de correspondance donc je passe la ligne de désignation en rouge
Table_Rq_CompoFormuleB2[J].Designation..Couleur = RougeClair
SINON
Table_Rq_CompoFormuleB2[J].Designation..Couleur = VertFoncé
FIN
FIN
Membre enregistré
446 messages
Popularité : +31 (43 votes)
Posté le 23 janvier 2020 - 17:36
euh idem cela devrait fonctionner et si on reprend la première version du code légerement modifié comme ce qui suit ? sinon après je vois que le support technique car pour moi cela devrait déjà fonctionner comme vous l'avez ecrit

j'ai modifié cette ligne : Table_Rq_CompoFormuleB1[Table_Rq_CompoFormuleB1].Designation..Couleur = RougeClair
voir aussi si besoin de modifié cette ligne :nPosTrouvée = TableCherche(Table_Rq_CompoFormuleB2.Designation Table_Rq_CompoFormuleB1[Table_Rq_CompoFormuleB1].Designation)

nPosTrouvée est un entier

POUR TOUTE LIGNE de Table_Rq_CompoFormuleB1
nPosTrouvée = TableCherche(Table_Rq_CompoFormuleB2.Designation,Table_Rq_CompoFormuleB1.Designation)
Trace(nPosTrouvée)

SI nPosTrouvée = -1 ALORS
// je n'ai pas trouvé de correspondance donc je passe la ligne de désignation en rouge
Table_Rq_CompoFormuleB1[Table_Rq_CompoFormuleB1].Designation..Couleur = RougeClair
FIN
FIN