OVH Cloud OVH Cloud

[WD75 - MYSQL] Transactions

5 réponses
Avatar
jacques trepp
Bonjour,
je bute sur la syntaxe des transactions. Voici une requète qui me permet en
1 fois de déplacer toute une série de touches d'un éctan tactile.
L'écran est divisé en 2 plans de 81 touches virtuelles
les touches sont numérotées de 1 à 81, précédé du N° de plan soit :
plan 1 : 101 à 181
plan 2 : 201 à 281
bien sur les clés sont une concaténation des différentes touches : la 1ere
touche du plan 1 (101) peut distribuer 81 touches, donc les clés vont de :
101
101201 à 101281
si je déplace la touche 101 en 110, je veux déplacer en cascade toutes les
touches-filles concernées. Pour cela, j'ai la requète magique que voici :

update FTACTILE
SET TOUCHE = concat('110',substring(TOUCHE,4,3))
where substring(TOUCHE,1,3) = '101'

et ça marche ! :)
je voudrais simplement consolider le bazar par une transaction. comment
faire ?

merci

--
Jacques TREPP
AlbyGest


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.690 / Virus Database: 451 - Release Date: 22/05/2004

5 réponses

Avatar
roumegou
Salut Jacques,

jacques trepp a écrit:
Bonjour,
je bute sur la syntaxe des transactions. Voici une requète qui me permet en
1 fois de déplacer toute une série de touches d'un éctan tactile.
L'écran est divisé en 2 plans de 81 touches virtuelles
les touches sont numérotées de 1 à 81, précédé du N° de plan soit :
plan 1 : 101 à 181
plan 2 : 201 à 281
bien sur les clés sont une concaténation des différentes touches : la 1ere
touche du plan 1 (101) peut distribuer 81 touches, donc les clés vont de :
101
101201 à 101281
si je déplace la touche 101 en 110, je veux déplacer en cascade toutes les
touches-filles concernées. Pour cela, j'ai la requète magique que voici :

update FTACTILE
SET TOUCHE = concat('110',substring(TOUCHE,4,3))
where substring(TOUCHE,1,3) = '101'

et ça marche ! :)
je voudrais simplement consolider le bazar par une transaction. comment
faire ?

merci



ci après une fonction qui permet d'executer un fichier script sql. Il y
a une transaction, et tu pourras t'en inspirer ...car j'ai rien compris
à tes touches ;-)
Là seule chose qui m'a fait frémir, c'est "les clés sont une
concaténation des différentes touches ..."
Bien sûr ce ne sont pas tes clés primaires n'est ce pas ? ... car "pas
de signifiants dans un identifiant" où j'te cause plus na !

FONCTION ExecBatchScript(pScript)
lignelue,commande est chaîne
res est un booléen
IdFichier est un entier
PasGlop est un booléen
i,nbmaj est un entier
msgRet est chaîne
codret est un entier
retCode est un booléen
nbmaj=0
msgRet=""
IdFichier=fOuvre(pScript,foLecture)

fSQL:SetAutoCommit(False, 1)

retCode = fSQL:mySQLTransaction((fSQL:mySQLDebut), 1)
//sqltransaction(sqlDébut)
PasGlopúux
lignelue = fLitLigne(IdFichier)
// Autres lignes à lire ? Erreur de lecture ?
TANTQUE lignelue <> EOT ET lignelue <> ""
commande=TronqueDernierCaractere(lignelue) //enlève le ;
retCode = fSQL:mySQLExec(commande, 1)
SI PAS retCode ALORS
PasGlop=Vrai
FIN
fSQL:mySQLFerme(1)
nbmaj++
// Lecture des lignes suivantes du fichier
lignelue = fLitLigne(IdFichier)
FIN //TANTQUE LigneLue <> EOT ET LigneLue <> ""

SI PasGlop ALORS
//SQLTransaction(sqlAnnule)
fSQL:mySQLTransaction((fSQL:mySQLAnnule), 1)
msgRet="Erreur execution script SQL : Transaction annulée"
SINON
//SQLTransaction(SQLFin)
fSQL:mySQLTransaction((fSQL:mySQLFin), 1)
msgRet=nbmaj+" Script executé avec succès"
FIN
resÿerme(IdFichier)
RENVOYER msgRet
Avatar
Daniel
Bonsoir Jacques,


ci-joint un exemple de code


result est booleen
convsql:mysqltransaction(convsql:mysqldebut,0)
result= convsql:mysqlexec("update ftactile set touche....",0)
si result alors
convsql:mysqltransaction(convsql:mysqlfin,0)
sinon
convsql:mysqltransaction(convsql:mysqlannule,0)
fin


Normalement celà doit être bon...

"jacques trepp" writes:

Bonjour,
je bute sur la syntaxe des transactions. Voici une requète qui me perme t en
1 fois de déplacer toute une série de touches d'un éctan tactile.
L'écran est divisé en 2 plans de 81 touches virtuelles
les touches sont numérotées de 1 à 81, précédé du N° de pla n soit :
plan 1 : 101 à 181
plan 2 : 201 à 281
bien sur les clés sont une concaténation des différentes touches : la 1ere
touche du plan 1 (101) peut distribuer 81 touches, donc les clés vont d e :
101
101201 à 101281
si je déplace la touche 101 en 110, je veux déplacer en cascade toute s les
touches-filles concernées. Pour cela, j'ai la requète magique que voi ci :

update FTACTILE
SET TOUCHE = concat('110',substring(TOUCHE,4,3))
where substring(TOUCHE,1,3) = '101'

et ça marche ! :)
je voudrais simplement consolider le bazar par une transaction. comment
faire ?

merci

--
Jacques TREPP
AlbyGest


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.690 / Virus Database: 451 - Release Date: 22/05/2004





--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
jacques trepp
Daniel wrote:
Bonsoir Jacques,


ci-joint un exemple de code


result est booleen
convsql:mysqltransaction(convsql:mysqldebut,0)
result= convsql:mysqlexec("update ftactile set touche....",0)
si result alors
convsql:mysqltransaction(convsql:mysqlfin,0)
sinon
convsql:mysqltransaction(convsql:mysqlannule,0)
fin


Normalement celà doit être bon...

"jacques trepp" writes:

Bonjour,
je bute sur la syntaxe des transactions. Voici une requète qui me
permet en 1 fois de déplacer toute une série de touches d'un éctan
tactile.
L'écran est divisé en 2 plans de 81 touches virtuelles
les touches sont numérotées de 1 à 81, précédé du N° de plan soit :
plan 1 : 101 à 181
plan 2 : 201 à 281
bien sur les clés sont une concaténation des différentes touches :
la 1ere touche du plan 1 (101) peut distribuer 81 touches, donc les
clés vont de : 101
101201 à 101281
si je déplace la touche 101 en 110, je veux déplacer en cascade
toutes les touches-filles concernées. Pour cela, j'ai la requète
magique que voici :

update FTACTILE
SET TOUCHE = concat('110',substring(TOUCHE,4,3))
where substring(TOUCHE,1,3) = '101'

et ça marche ! :)
je voudrais simplement consolider le bazar par une transaction.
comment faire ?

merci

--
Jacques TREPP
AlbyGest


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.690 / Virus Database: 451 - Release Date: 22/05/2004





Merci beaucoup. Je vais tester de ce pas :)

--
Jacques TREPP
AlbyGest


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.690 / Virus Database: 451 - Release Date: 22/05/2004
Avatar
jacques trepp
>>


ci après une fonction qui permet d'executer un fichier script sql. Il
y a une transaction, et tu pourras t'en inspirer ...car j'ai rien
compris à tes touches ;-)
Là seule chose qui m'a fait frémir, c'est "les clés sont une
concaténation des différentes touches ..."
Bien sûr ce ne sont pas tes clés primaires n'est ce pas ? ... car "pas
de signifiants dans un identifiant" où j'te cause plus na !



salut Eric,
rassures-toi, quand je dis concaténation, ça n'est pas dans le sens de la
clé composée à la windev. ;)
En fait, ça veut dire que la clé primaire = 110221 correspond à la 21ème
touche du plan 2 de la 10ème touche du premier plan. c'est une méthode que
j'utilise en tactile depuis des années, et qui fonctionne très bien.
Pour ne pas troubler d'avantage mes explications, j'ai arrété à 2 plans. En
réalité, il y en a 3 !
ça me permet de gérer en théorie 81*81*81 touches.

Merci


--
Jacques TREPP
AlbyGest


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.690 / Virus Database: 451 - Release Date: 22/05/2004
Avatar
jacques trepp
j'ai testé : ça marche !
merci encore


--
Jacques TREPP
AlbyGest


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.691 / Virus Database: 452 - Release Date: 26/05/2004