Le forum (ô combien francophone) des utilisateurs de Powerbuilder.






Bonjour,
Je cherche à pouvoir récupérer la valeur qui était précédemment dans la cellule où l'utilisateur vient de saisir.
Tant que c'est la première modification, je peux aller chercher dans le buffer "Primary", mais à partir de la 2e modif je suis perdue.
Y a-t-il un évenement qui ressemblerait à itemchanging dans lequel on aurait l'ancienne et la nouvelle valeur ?
Merci d'avance.
Dernière modification par abdelta (27-11-2007 16:56:32)
Hors ligne






Il semble que j'aie oublié de précisé que je ne veux pas enregistrer les modifications dans la base de données à chaque nouvelle saisie...
Dernière modification par abdelta (27-11-2007 15:49:24)
Hors ligne










Tu veux recuperer l'historique de l'ensemble des modifications d'un champs ?
Hors ligne











Bonjour,
En 6.5, un tel événement n'existe pas. Chez mon précédent client, le framework maison gérait ce genre de problème en effectuant des sauvegardes du buffer primary à chaque fois que nécessaire, mais c'est un mécanisme complexe à mettre en place et qui peut être coûteux
en terme de gestion mémoire.
A voir si quelqu'un a une autre solution
Hors ligne






JCZ a écrit:
Tu veux recuperer l'historique de l'ensemble des modifications d'un champs ?
non, je veux juste la dernière valeur avant la modification
Hors ligne
variable d'instance.
string is_old_valeur string is_new_valeur
et dans itemchanged, editchanged...
is_old_valeur = this.Getitemstring(row,"titi") is_new_valeur = data

Hors ligne






pick ouic a écrit:
et dans itemchanged, editchanged...
Code: pb
is_old_valeur = this.Getitemstring(row,"titi")
si je mets ça dans itemchanged, ca va prendre la nouvelle valeur ...
Hors ligne










ldt_old = dw_1.GetItemDateTime(1, 'col', Primary!, True ) ldt_new = dw_1.GetItemDateTime(1, 'col', Primary!, false )
Cela marche avec tous les GetItemX
Dernière modification par JCZ (27-11-2007 16:15:49)
Hors ligne






JCZ a écrit:
ou
Code: pb
ldt_old = dw_1.GetItemDateTime(1, 'col', Primary!, True ) ldt_new = dw_1.GetItemDateTime(1, 'col', Primary!, false )
C'est ce que je disais dans mon premier post : ca marche seulement pour la prmière modification.
Dès qu'on modifie une deuxième fois, on ne peux plus aller chercher l'ancienne valeur dans le buffer Primary!
On y trouvera la valeur d'origine mais pas celle qui était juste avant la modification...
Hors ligne






Bon, finalement, dans le même esprit que ce que pick ouic proposait :
je récupère ii_ancienne_valeur dans le itemfocuschanged() par un getitem()
je réaffecte ii_ancienne_valeur après mon traitement qui avait besoin de cette valeur par
ii_ancienne_valeur = data
dans itemchanged
et en ce qui concerne ii_nouvelle_valeur, elle ne m'est pas utile : j'utilise data puisque je suis dans itemchanged()
Merci à tous. 00 pour chacun
Dernière modification par abdelta (27-11-2007 16:54:50)
Hors ligne










Mais désolé , visiblement j'avais pas compris ton probleme
Hors ligne











Même chose pour moi: j'avais compris que tu voulais gérer un historique des modifications
Hors ligne






Même en ayant pas compris vous avez été très patients et c'est ça que je récompense. à tous
Hors ligne






juste un petit mot si certains ont le même problème.
Tant qu'on ne fait pas accepttext(), dans itemchanged on récupère la valeur du buffer par
getitemxx()
et la nouvelle valeur saisie est dans data.
Hors ligne