PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Comparaison entre deux tables
Comparaison entre deux tables
Iniciado por Jeremy, jan., 23 2020 9:41 AM - 7 respostas
Membro registado
12 mensagems
Popularité : +1 (1 vote)
Publicado em janeiro, 23 2020 - 9:41 AM
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 :)
Mensagem modificada, janeiro, 23 2020 - 9:41 AM
Membro registado
449 mensagems
Popularité : +31 (43 votes)
Publicado em janeiro, 23 2020 - 11:32 AM
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
Membro registado
12 mensagems
Popularité : +1 (1 vote)
Publicado em janeiro, 23 2020 - 1:55 PM
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
Membro registado
449 mensagems
Popularité : +31 (43 votes)
Publicado em janeiro, 23 2020 - 2:17 PM
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
Membro registado
12 mensagems
Popularité : +1 (1 vote)
Publicado em janeiro, 23 2020 - 2:23 PM
Super, ça fonctionne du tonnerre.

Merci beaucoup de ton aide !
Membro registado
449 mensagems
Popularité : +31 (43 votes)
Publicado em janeiro, 23 2020 - 3:01 PM
:merci:
Membro registado
12 mensagems
Popularité : +1 (1 vote)
Publicado em janeiro, 23 2020 - 4:28 PM
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
Membro registado
449 mensagems
Popularité : +31 (43 votes)
Publicado em janeiro, 23 2020 - 5:36 PM
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