Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
Avant toute chose je suis sous PB11 et Sybase 12.5.1.
Dans mon code PB, je fais un dw_1.Update () (après avoir faire un SetTransObject ()),
cependant la mise à jour des colonnes que j'ai indiqué dans le Update column dans
le painter datawindow et en activant la mise à jour effective ne se fait pas.
Par ailleurs, le code de retour de l'Update () est bien 1, donc tout s'est bien passé.
Quelqu'un a-t-il une idée ? J'ai du code qui suit cet Update (), mais ce dernier ne
devrait-il pas écrire dans la base de données ?
Par avance, merci.
Doctor Z.
Hors ligne
Bonjour,
Il te manque peut-être tout simplement un commit après l'update :
COMMIT USING itr_mytransaction;
Hors ligne
buck a écrit:
Bonjour,
Il te manque peut-être tout simplement un commit après l'update :Code: pb
COMMIT USING itr_mytransaction;
Bonjour buck,
Même avec le COMMIT, il ne prend pas en compte l'Update ().
Hors ligne
bonjour, il te manquerait pas un
dw_1.accepttext()
?
Sinon tu peux coder un event ficitif sur updatestart / updateend et y mettre des points d’arrêts pour voir si tu y passes.
Hors ligne
xlat a écrit:
bonjour, il te manquerait pas un
Code: pb
dw_1.accepttext()?
Sinon tu peux coder un event ficitif sur updatestart / updateend et y mettre des points d’arrêts pour voir si tu y passes.
xlat,
Par défaut l'Update () contient un AcceptText implicite.
En outre, je viens de faire ton test sur les évènements updatestart et updateend et je passe effectivement
dans les deux sans pour autant faire la mise à jour que je souhaite dans la base de données.
Hors ligne
donc dans le updateend, tu as rowsupdated = 0 ?
(pour info un update sur une datawindow ne vera pas de modification si tu n'es pas passé dans un itemchanged en amont (ex, si tu modifis un edit sans changer le focus ni faire "enter"..., pour çà j'utilise parfois l'accepttext)
Dernière modification par xlat (19-05-2011 15:40:32)
Hors ligne
xlat a écrit:
donc dans le updateend, tu as rowsupdated = 0 ?
(pour info un update sur une datawindow ne vera pas de modification si tu n'es pas passé dans un itemchanged en amont (ex, si tu modifis un edit sans changer le focus ni faire "enter"..., pour çà j'utilise parfois l'accepttext)
Dans l'évènement updateend, le rowsupdated vaut 1.
Par ailleurs, en plus du AcceptText () implicite de l'Update (), j'en ai rajouté un explicite
en début de code, mais malheureusement sans succès.
Hors ligne
c'est étonnant qu'il dise rowsupdated = 1 sans que cela ne mette à jour dans ta base,
essai de vérifier ce qui a changé depuis l'event updatestart ( getfirstmodified, getitemstatus, en comparant les buffers original / primary, ... ), au du côté serveur créer un trigger espion en update, sinon vérifie vien toute ta syntaxe d'update dans la datawindow
Hors ligne
Le mieux, dans un cas comme cela, est de controler dans la routine SQLPreview() la syntaxe qui est effectivement envoyée au moteur de la base de données.
Hors ligne
c'est un update de la dw tout bete ou c'est lié à une procédure stockée ?
il y a un grant sur la table ?
ou peut etre que cet update est à l'interieure d'une transaction ?
Hors ligne
Bonjour à tous,
En fait, après des recherches plus poussées, il s'avère que le problème venait d'une
procédure stockée.
Il n'y a donc pas de problème au niveau de l'Update (), j'indique donc le sujet comme
résolu.
Merci à tous.
Doctor Z.
Hors ligne