Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J'utilise PB version 9.0 et grand debutant en PB.
Je suis confronté a petit probléme.
Je fais un soft qui permet de gérer des clients avec leurs CV
J'utilise plusieur datawindow pour visualiser des infos et je les sauvegarde en XML en local, cependant ces données doivent être centraliser sur une base de donnée type MySQL.
Pour garder une certaine concordance j'utilise une datawindow pour géré le referencement des clients puis une autre pour chaque "produit" (exp pro et formation).
le referencement s'éffectue par une donnée (refindex) qui sert de reference entre chaque datawindow.
j'ai donc une datawidow qui affiche la ligne unique du client (avec son refindex) puis une autre datawindow qui affiche les produits de se client (qui ont donc le même refindex).
Actuellement, lorsque j'essaye d'integrer un nouveau client je dois donc mettre obligatoirement initialiser refindex. le probléme c'est qu'il semblerait que lorsque j'essaye de faire un additem il ne le prend pas en compte.
ma question est :
Est ce que les filtres associé a la datawindow peuvent avoir une incidence sur les données que l'on désire inséré ?
Hors ligne
tu fais un insertrow(0) avant le additem?
Hors ligne
oui voici le code :
result = w_main.dw_list.insertrow(0) //w_main.dw_list.setredraw(true) if Debug = true then messagebox("Debug Mode","nombre de ligne inséré : " + string(result)) if result <> 0 then //MaxRefIndex = result //w_main.initfilter(w_main.dw_list, "refindex = " + string(maxrefindex + 1)) if result = 1 then if Debug = true then messagebox("Debug Mode","refindex = " + string(MaxRefIndex)) result = w_main.dw_list.setitem(maxrefindex,"refindex",(maxrefindex + 1)) maxrefindex++ w_main.dw_list.setfilter("refindex = " + string(MaxRefIndex)) w_main.dw_list.filter() changed = true elseif result = -1 then messagebox("Création", "Erreur lors de la création du consultant", exclamation!) changed = false end if else messagebox("Création", "Erreur lors de la création du consultant", exclamation!) end if
[edit] [ code=pb ]
Hors ligne
Le probléme est qu'a l'affichage je vois apparaitre la ligne que j'avais précédement filtré plus la nouvelle ligne... sachant que la nouvelle ligne n'a pas de donnée dans refindex, deplus j'ai rajouter un champ qui donne le numero de ligne et celui ci n'est pas raffraichit immediatement mais que lorsque je clique sur un champ de la datawindow... C'est assez bizarre.
Hors ligne
reinitialise ton filtre avant chaque nouveau filtre, il arrive que ca bug..
Hors ligne
thezerg a écrit:
reinitialise ton filtre avant chaque nouveau filtre, il arrive que ca bug..
dw.SetFilter( '' )
dw.Filter()
dw.SetFilter( ls_filtre )
dw.Filter()
Hors ligne
Toujours même chose cependant je viens de remarquer que le champ currentrow que j'ai rajouter ne se modifi pas lorsque je passe d'une ligne a une autre ????!!!!!!!
Hors ligne
Bonjour,
Fais-tu bien un SetRow ou un ScrollToRow après chaque insertion de ligne?
Seules ces instructions mettent à jour le numéro de la ligne courante.
De plus, le long retourné par la fonction InsertRow correspondant au numéro de la ligne insérée, ton test de ta variable result en début de code ne devrait pas être :
if result = 1 then //blabla elseif result = -1 then messagebox("Création", "Erreur lors de la création du consultant", exclamation!) changed = false end if
mais plutôt:
if result > 0 then //blabla else messagebox("Création", "Erreur lors de la création du consultant", exclamation!) changed = false end if
Hors ligne
Bien jouer. Probléme Résolu Merci Beaucoup. J'arrive à entrer la bonne donnée dans le bon champ par contre mon champ currentrow ne se modifi toujours pas mais cela doit etre un autre probléme... Dans tout les cas merci beaucoup.
Hors ligne
Bonjour,
tu peux aussi récupérer le currentRow par la fonction GetRow()
Hors ligne