Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J'ai besoin de votre expérience sur PB pour m'aider à comprendre pourquoi l'appel de la fonction Update me renvoie toujours -1
Donc j'ai une datawindow construite sur une procédure stockée qui est un simple
select <mes_colonnes> from <ma_table> where <cle_primaire> = <paramètre>
J'ai bien défini les "Updates Properties" de ma datawindow (coche de "Allow updates", "<ma_table" dans "Table to update", etc ...)
J'ai deux champs que j'ai défini comme des dropdownlistbox et c'est ceux ci qui peuvent être mis à jour.
Pour le test j'ai créé un bouton spécial pour le script de sauvegarde (après ça sera directement dans l'événement ItemChanged) :
integer li_code_retour li_code_retour = dw_1.Update() IF li_code_retour = 1 AND SQLCA.SQLNRows > 0 THEN MessageBox('Debug', 'UPDATE Reussi') ELSE MessageBox('Debug', 'UPDATE Raté' + String(li_code_retour)) END IF
Bien sûr je tombe sur "Update raté-1" et je ne vois pas trop d'où ça pourrais venir (le retrieve fonctionne bien)
J'oubliais aussi de dire que je ne passe jamais par l'événement SqlPreview lors de l'appel de Update() (on sait jamais, ça peut aider )
Merci pour vos éclaircissements
Dernière modification par Nephtis (17-04-2009 14:50:59)
Hors ligne
Bonjour,
La raison la plus courant de l'échec d'un "update" est le non respect de l'intégrité référentielle de la base de données.
Une de tes colonnes de la table fait partie d'une clé étrangère et tu tentes de sauvegarder une valeur non autorisée dans cette colonne.
Tu sauves une valeur "null" sur une colonne alors que les propriétés de la colonne l'interdisse (valeur nulle non autorisée sur la colonne). etc ...
Il faut que tu actives la trace SQL sur la base de données pour te rendre compte de la véritable raison de l'échec de la mise à jour.
(Commence tout simplement par vérifier les propriétés de chaque colonne faisant partie de la table)
Hors ligne
As-tu vérifié SQLCA.SQLErrText
? Normalement, ça devrait te mettre sur la piste du problème.
Hors ligne
Merci FMolinas, je viens de tester le SQLErrText et j'ai reçu le message "Transaction non connectée"
Un CONNECT USING SQLCA résous donc mon problème
> Buck
C'est une table référentiel qui n'a pas de lien avec les autres tables de ma base.
Merci tout de même pour ta réponse
0000 pépites pour vous deux
[EDIT] : je suis billionnaire
Dernière modification par Nephtis (17-04-2009 14:57:07)
Hors ligne