Après windows pour les nuls, voici PB pour les bons (ou presque).

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

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 14-09-2006 15:32:04

Deedoo2000  
Membre Geek
Date d'inscription: 13-09-2006
Messages: 91
Pépites: 408
Banque: 0

[RESOLU] SQLCA.autocommit

Bonjour,

Je ne comprends pas bien le fonctionnement de ce point.

Voici mon problème :

J'ai une datawindow pour laquelle je peux updater un champ (un checkbox)
Dans le bouton fermer de la fenêtre contenant cette dw, je code dw_1.update()

Si je laisse le code en l'état, tant que je n'ai pas quitté l'application je ne peux pas faire de select * from toto (la tble qui a été updatée), on dirait qu'il y a une transaction ouverte.

Pour que je puisse consulter la table en question, il faut que j'encadre mon update d'un SQLCA.autocommit = true, puis false à la fin du update.

Quelqu'un pourrait-il m'expliquer le fonctionnement de cela.

Si je nespécifie pas ce autocommit, ma base est bloquée ?

Hors ligne

 

#2 14-09-2006 15:39:05

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] SQLCA.autocommit

il y a une explication sur l'autocommit et le commit :
http://pbadonf.fr/forum/viewtopic.php?id=128

c'est normale que tu n'aies pas la main apres un update. car on attend apres, un commit ou un rollback.
ca , ce sont des notions de SQL !


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#3 01-12-2006 11:10:36

Flanagan  
Membre
Lieu: Thimister-Clermont
Date d'inscription: 30-11-2006
Messages: 8
Pépites: 38
Banque: 0

Re: [RESOLU] SQLCA.autocommit

Bonjour,

Une autre solution, plutôt que changer tes paramètres de connexion de ton SQLCA, est de scripter le commit après ton dw_1.update() avec un "commit using sqlca;", celà libèrera les enregistrements bloqués par ta transaction.

Hors ligne

 

#4 01-12-2006 11:12:32

Flanagan  
Membre
Lieu: Thimister-Clermont
Date d'inscription: 30-11-2006
Messages: 8
Pépites: 38
Banque: 0

Re: [RESOLU] SQLCA.autocommit

oups, sorry pick ouic, j'avais pas vu ta réponse

Hors ligne

 

#5 08-12-2006 13:06:08

PB2  
Membre Geek
Date d'inscription: 05-06-2006
Messages: 36
Pépites: 280
Banque: 0

Re: [RESOLU] SQLCA.autocommit

Bonjour,

Comme cette question reste toujours ouverte, je suppose que Deedoo2000 n'a pas encore trouvé l'info recherchée, je tente d'une autre approche, j'espère que cela pourrait aider.

L'attribut autocommit de l'objet transaction permet de dire à PB d'ajouter systématiquement ou non un "commit" après chaque "ordre" envoyé vers SGBD. Le commit valide la transaction passée.

Vue les problèmes cités, je suppose que Deedoo2000 travaille avec Sybase (comme moi). Car Sybase bloque aussi la table en mode lecture.

Pour faire court, il faut toujours positionner l'autocommit à true, repasser à false juste avant de faire dw.update() pour pouvoir faire un rollback.

Quand autocommit est à true, PB ajoute systématiquement un commit après chaque dw.retrieve() par exemple, ce qui permet de ne pas bloquer les tables.

Passer obligatoirement autocommit à false avant de faire dw.update car sinon on ne peut pas faire rollback en cas d'erreur.

Code: pb

sqlca.autocommit=false
dw.update()
if sqlca.sqlcode <> 0 then
   ...
   rollback;
else
   ...
   commit;
end if
sqlca.autocommit = true


A+

Hors ligne

 

#6 08-12-2006 13:13:51

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] SQLCA.autocommit

tres bien repondu.
je clos le topic.

et je te rajoute 50 pepites.


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22