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 10: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