|
Recherche table dans deux colonnes |
Débuté par Squiz, 31 mar. 2015 11:07 - 3 réponses |
| |
| | | |
|
| |
Membre enregistré 2 messages |
|
Posté le 31 mars 2015 - 11:07 |
Bonjour, J'ai une table par programmation avec trois colonnes : Intitulé, type et quantité. Deux lignes peuvent avoir le même intitulé mais un type différent. Je souhaite faire en sorte que lorsque je clique sur un bouton qui est censé ajouté un élément intitulé "Produit 1" de type "A" à la table, il vérifie que l'élément est déjà présent dans la table, si oui il ajoute simplement la quantité à la ligne déjà présente, sinon il ajoute une nouvelle ligne.
Mon problème vient du fait que la fonction tableCherche ne me permet que de chercher sur une condition, soit la première colonne, soit la deuxième, par conséquent en utilisant uniquement tableCherche il me trouve le "Produit 1" même s'il est de type "B". Du coup je me dis qu'une solution viable serait de parcourir la table et de faire une double condition : si je trouve avec tableCherche, l'intitulé "Produit 1" alors je cherche le type "A" sur la même ligne. Ca me donne ça comme code :
RechercheIntitulé est un booléen bRechercheTypeEXPRESS est un booléen i est un entier RechercheIntitulé = Faux bRechercheTypeEXPRESS = Faux i=1
TANTQUE i <= TableSelectOccurrence(TABLE_Commande) RechercheIntitulé = TableCherche(COL_Intitulé,"Produit1",Vrai,i) SI RechercheIntitulé ALORS bRechercheTypeEXPRESS = TableCherche(COL_Type,"A", i) SI bRechercheTypeEXPRESS ALORS TABLE_Commande.COL_Quantité[i]++ FIN
FIN FIN
SI RechercheIntitulé = Faux ALORS SI bRechercheTypeEXPRESS = Faux ALORS TableAjouteLigne(TABLE_Commande,"Produit1", "A", 1) FIN FIN
Dès que j'essaye d'ajouter une deuxième fois le produit avec ce code, le programme plante... Je crois avoir repéré une erreur du fait que TableCherche cherche à partir de la ligne i et non uniquement sur la ligne i, mais dans tous les cas je ne trouve pas d'autre solution....
Merci à ceux qui voudront bien m'aider! |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 186 messages Popularité : +5 (11 votes) |
|
Posté le 31 mars 2015 - 11:17 |
Salut, Pourquoi pas une colonne cachée qui contient l'intitulé et le type de produit. Comme ça tu peux faire ta recherche sur cette colonne en concaténant les 2 informations à rechercher.
-- Seb |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 186 messages Popularité : +5 (11 votes) |
|
Posté le 31 mars 2015 - 11:21 |
Dans le code que tu donnes si tu parcours la table tu n'as pas besoin d'un table cherche. Fais plutôt un truc du style :
POUR i = 1 a TableOccurrence(TABLE_Commande SI TABLE_Commande.COL_Intitulé[i] = "Produit1" _ET_ TABLE_Commande.COL_Type[i] = "A" ALORS
TABLE_Commande.COL_Quantité[i]++ SINON
TableAjouteLigne(TABLE_Commande,"Produit1", "A", 1) FIN FIN
-- Seb |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 messages |
|
Posté le 31 mars 2015 - 11:56 |
Sebinc a écrit :
Dans le code que tu donnes si tu parcours la table tu n'as pas besoin d'un table cherche. Fais plutôt un truc du style : POUR i = 1 a TableOccurrence(TABLE_Commande SI TABLE_Commande.COL_Intitulé[i] = "Produit1" _ET_ TABLE_Commande.COL_Type[i] = "A" ALORS // Tu as trouvé ta ligne donc tu modifie TABLE_Commande.COL_Quantité[i]++ SINON // Tu n'as pas trouvé donc tu ajoute TableAjouteLigne(TABLE_Commande,"Produit1", "A", 1) FIN FIN
-- Seb
Niquel! Effectivement c'est bien plus simple comme ça, avec une petite modif (j'ai sorti le tableajouteligne de la condition pour éviter qu'il l'écrive plusieurs fois), ça a l'air de marcher et avec beaucoup de lignes de code en moins, merci bien! |
| |
| |
| | | |
|
| | | | |
| | |
|