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


j'ai souvent ce type de message en particulier quand je fais un Update aprés un retrieve alors que les données n'ont pas été modifiées.
Comment éviter ce dysfonctionnement sachant que je suis en version 9 de PB avec MySQL Version 5.
Merci
Hors ligne











Bonsoir,
Regarde comment est générée la clause where de ton Update: Tu as peut-être un champ date initialisé automatiquement dans ta datawindow (par exemple)
Hors ligne


je n'ai pas de date initialisée par défaut.
tu as une autre idée ?
Hors ligne

Hors ligne


cela ne marche toujours pas. j'ai également essayé la méthode indiquée sur le site tek_tips.
est-ce que cela ne viendrait pas du fait de la version MySQL V5 que j'utilise et qu'il faudrait juste positionner le bon parametre associé à ma connextion ODBC ?
Hors ligne







Bonjour,
N'aurais-tu pas un SetItem ou un dw.object.column = xx qui est fait après le retrieve ??
Hors ligne


Bonjour,
J'ai eu le même problème il y a quelques jours après avoir repris une application développée il y a quelques années.
Initialement, cette application tournait sous ASA 7 sans aucun soucis. Et le problème a commencé lors de son passage sur SqlAnywhere 10.
Après contrôle, j'ai simplement passé les 'Update properties' comme suit :
Key Columns et Use delete and insert.
Et depuis ça marche.
J'espère que cela t'aidera,
SugarRc
Hors ligne











Bonjour,
Il n'y a rien dans le retrieveend, ou le retrieverow de ta datawindow?
Pas de trigger sur ta table?
Quel paramétrage as-tu dans tes Update Properties?
As-tu regardé la requête SQL générée par ta datawindow en sauvegarde?
Hors ligne


oui j'ai pleins de Setitem aprés mon retrieve puisque effectivement je modifie les données mais en réalité les données ne changent pas ( elles sont identiques à celles qui sont déjà présentes en base).
Pour info - je n'ai pas de triggers sur la table. Mes Update properties sont "Key column" et "Delete & Insert". La requete est générees proprement.
Ma séquence de code est la suivante :
dw.SetTransObject(SQLCA)
dw.Retrieve()
...
...
// pas de saisie dans ma dw mais un traitement de calcul avec plusieurs dw.SetItem()
....
// suite à mon traitement et mes setitem les données qui ont été modifiées sont identiques aux données qui ont été ramenées par le retrieve
dw.Update()
commit;
Dernière modification par pinto (01-04-2008 12:10:07)
Hors ligne











Tes SetItem concernent-ils des champs date, datetime ou time?
Tu ne fais pas de ResetUpdate?
Hors ligne







pinto a écrit:
oui j'ai pleins de Setitem aprés mon retrieve puisque effectivement je modifie les données mais en réalité les données ne changent pas ( elles sont identiques à celles qui sont déjà présentes en base).
Pour info - je n'ai pas de triggers sur la table. Mes Update properties sont "Key column" et "Delete & Insert". La requete est générees proprement.
Ma séquence de code est la suivante :
dw.SetTransObject(SQLCA)
dw.Retrieve()
...
...
// pas de saisie dans ma dw mais un traitement de calcul avec plusieurs dw.SetItem()
....
// suite à mon traitement et mes setitem les données qui ont été modifiées sont identiques aux données qui ont été ramenées par le retrieve
dw.Update()
commit;
Et si tu essaye de mettre tous les SetItem en commentaire, as tu le même symptôme ?
Si oui, tu n'a plus qu'a chercher quel est le Setitem qui provoque ton erreur.
Hors ligne


je ne fais de resetupdate et je n'utilise que des champs de date
mon pb n'est tjrs pas résolu
Hors ligne
Des pistes en vrac :
- transformation de caractères ansi/unicode entre la BDD et PB qui font que la clause where ne trouve plus ses petits.
- un identifiant interne à l'enregistrement (type counter), non associé à l'ID des updates properties de la DW.
- un problème de grant sur la table
Peux-tu transmettre le code de ta DW et le schéma de ta table source ?
Ce serait plus facile pour t'aider.
Hors ligne