Je ne trouve pas comment valider une trasaction (après un INSERT INTO
...) avec l'accès natif FB4WD...
Si j'execute le code SQL de ma requete en direct sur la base, ca passe,
mais pas depuis WD (pas de message d'erreur non plus).
Mon code est le suivant :
PROCEDURE Creation_Etiquette(n_id__typ_eti est un entier)
bRetCode est un booléen
id__eti est un entier
txtSQL est une chaîne
// on recupere un numero d'etiquette via le genereateur
bRetCode=gclSTOCK_DBConnexion:mySQLExec("SELECT GEN_ID(
T_ETIQUETTE_ID__ETI_GEN , 1 ) FROM RDB$DATABASE",0)
SI bRetCode ALORS
TANTQUE(gclSTOCK_DBConnexion:mySQLFetch(0))
id__eti=gclSTOCK_DBConnexion:mySQLLitCol(0,1)
Trace(id__eti)
FIN
SINON
Info("STOCK Erreur sur la requete :
"+gclSTOCK_DBConnexion:mySQLGetErrorMessage())
FIN
gclSTOCK_DBConnexion:mySQLFerme(0)
// on genere l'etiquette proprement dite
txtSQL="insert into T_ETIQUETTE(id__eti,id__typ_eti,date_creation__eti)
values(%1,%2,'now')"
txtSQL=ChaîneConstruit(txtSQL,id__eti,n_id__typ_eti)
Trace(txtSQL)
bRetCode=gclSTOCK_DBConnexion:mySQLExec(txtSQL,0)
SI PAS bRetCode ALORS
Info("erreur sur la requete :
"+gclSTOCK_DBConnexion:mySQLGetErrorMessage())
FIN
gclSTOCK_DBConnexion:mySQLFerme(0)
le trace me donne le résultat suivant :
52
insert into T_ETIQUETTE(id__eti,id__typ_eti,date_creation__eti)
values(52,4,'now')
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Firetox
Bonjour,
il faut englober votre requete par une transaction du moins sur FB il faut valider la transaction a la fin dans votre code :
// on genere l'etiquette proprement dite txtSQL="insert into T_ETIQUETTE(id__eti,id__typ_eti,date_creation__eti) values(%1,%2,'now')" txtSQL=ChaîneConstruit(txtSQL,id__eti,n_id__typ_eti) Trace(txtSQL) gclSTOCK_DBConnexion:mySQLTransaction(gclSTOCK_DBConnexion:mySQLDebut,1) bRetCode=gclSTOCK_DBConnexion:mySQLExec(txtSQL,0) SI PAS bRetCode ALORS Info("erreur sur la requete : "+gclSTOCK_DBConnexion:mySQLGetErrorMessage()) // annule la transaction gclSTOCK_DBConnexion:mySQLTransaction(gclSTOCK_DBConnexion:mySQLAnnule,1) sinon // valide la transaction gclSTOCK_DBConnexion:mySQLTransaction(gclSTOCK_DBConnexion:mySQLFin,1) FIN gclSTOCK_DBConnexion:mySQLFerme(0)
cela permet si on aviat plusieur insert de valider l'ensemble ou non
Bon dev @+
"Jerome PAULIN" a écrit dans le message de news: ehpitl$ofm$
Bonjour,
Je ne trouve pas comment valider une trasaction (après un INSERT INTO ...) avec l'accès natif FB4WD...
Si j'execute le code SQL de ma requete en direct sur la base, ca passe, mais pas depuis WD (pas de message d'erreur non plus).
Mon code est le suivant :
PROCEDURE Creation_Etiquette(n_id__typ_eti est un entier) bRetCode est un booléen id__eti est un entier txtSQL est une chaîne
// on recupere un numero d'etiquette via le genereateur bRetCode=gclSTOCK_DBConnexion:mySQLExec("SELECT GEN_ID( T_ETIQUETTE_ID__ETI_GEN , 1 ) FROM RDB$DATABASE",0) SI bRetCode ALORS TANTQUE(gclSTOCK_DBConnexion:mySQLFetch(0)) id__eti=gclSTOCK_DBConnexion:mySQLLitCol(0,1) Trace(id__eti) FIN SINON Info("STOCK Erreur sur la requete : "+gclSTOCK_DBConnexion:mySQLGetErrorMessage()) FIN gclSTOCK_DBConnexion:mySQLFerme(0)
// on genere l'etiquette proprement dite txtSQL="insert into T_ETIQUETTE(id__eti,id__typ_eti,date_creation__eti) values(%1,%2,'now')" txtSQL=ChaîneConstruit(txtSQL,id__eti,n_id__typ_eti) Trace(txtSQL) bRetCode=gclSTOCK_DBConnexion:mySQLExec(txtSQL,0) SI PAS bRetCode ALORS Info("erreur sur la requete : "+gclSTOCK_DBConnexion:mySQLGetErrorMessage()) FIN gclSTOCK_DBConnexion:mySQLFerme(0)
le trace me donne le résultat suivant :
52 insert into T_ETIQUETTE(id__eti,id__typ_eti,date_creation__eti) values(52,4,'now')
Merci d'avance pour votre aide ...
gg
Bonjour,
il faut englober votre requete par une transaction du moins sur FB il faut
valider la transaction a la fin
dans votre code :
// on genere l'etiquette proprement dite
txtSQL="insert into T_ETIQUETTE(id__eti,id__typ_eti,date_creation__eti)
values(%1,%2,'now')"
txtSQL=ChaîneConstruit(txtSQL,id__eti,n_id__typ_eti)
Trace(txtSQL)
gclSTOCK_DBConnexion:mySQLTransaction(gclSTOCK_DBConnexion:mySQLDebut,1)
bRetCode=gclSTOCK_DBConnexion:mySQLExec(txtSQL,0)
SI PAS bRetCode ALORS
Info("erreur sur la requete :
"+gclSTOCK_DBConnexion:mySQLGetErrorMessage())
// annule la transaction
gclSTOCK_DBConnexion:mySQLTransaction(gclSTOCK_DBConnexion:mySQLAnnule,1)
sinon
// valide la transaction
gclSTOCK_DBConnexion:mySQLTransaction(gclSTOCK_DBConnexion:mySQLFin,1)
FIN
gclSTOCK_DBConnexion:mySQLFerme(0)
cela permet si on aviat plusieur insert de valider l'ensemble ou non
Bon dev
@+
"Jerome PAULIN" <jerome.paulin@nospam.groupe-emi.fr> a écrit dans le message
de news: ehpitl$ofm$1@s1.news.oleane.net...
Bonjour,
Je ne trouve pas comment valider une trasaction (après un INSERT INTO ...)
avec l'accès natif FB4WD...
Si j'execute le code SQL de ma requete en direct sur la base, ca passe,
mais pas depuis WD (pas de message d'erreur non plus).
Mon code est le suivant :
PROCEDURE Creation_Etiquette(n_id__typ_eti est un entier)
bRetCode est un booléen
id__eti est un entier
txtSQL est une chaîne
// on recupere un numero d'etiquette via le genereateur
bRetCode=gclSTOCK_DBConnexion:mySQLExec("SELECT GEN_ID(
T_ETIQUETTE_ID__ETI_GEN , 1 ) FROM RDB$DATABASE",0)
SI bRetCode ALORS
TANTQUE(gclSTOCK_DBConnexion:mySQLFetch(0))
id__eti=gclSTOCK_DBConnexion:mySQLLitCol(0,1)
Trace(id__eti)
FIN
SINON
Info("STOCK Erreur sur la requete :
"+gclSTOCK_DBConnexion:mySQLGetErrorMessage())
FIN
gclSTOCK_DBConnexion:mySQLFerme(0)
// on genere l'etiquette proprement dite
txtSQL="insert into T_ETIQUETTE(id__eti,id__typ_eti,date_creation__eti)
values(%1,%2,'now')"
txtSQL=ChaîneConstruit(txtSQL,id__eti,n_id__typ_eti)
Trace(txtSQL)
bRetCode=gclSTOCK_DBConnexion:mySQLExec(txtSQL,0)
SI PAS bRetCode ALORS
Info("erreur sur la requete :
"+gclSTOCK_DBConnexion:mySQLGetErrorMessage())
FIN
gclSTOCK_DBConnexion:mySQLFerme(0)
le trace me donne le résultat suivant :
52
insert into T_ETIQUETTE(id__eti,id__typ_eti,date_creation__eti)
values(52,4,'now')
il faut englober votre requete par une transaction du moins sur FB il faut valider la transaction a la fin dans votre code :
// on genere l'etiquette proprement dite txtSQL="insert into T_ETIQUETTE(id__eti,id__typ_eti,date_creation__eti) values(%1,%2,'now')" txtSQL=ChaîneConstruit(txtSQL,id__eti,n_id__typ_eti) Trace(txtSQL) gclSTOCK_DBConnexion:mySQLTransaction(gclSTOCK_DBConnexion:mySQLDebut,1) bRetCode=gclSTOCK_DBConnexion:mySQLExec(txtSQL,0) SI PAS bRetCode ALORS Info("erreur sur la requete : "+gclSTOCK_DBConnexion:mySQLGetErrorMessage()) // annule la transaction gclSTOCK_DBConnexion:mySQLTransaction(gclSTOCK_DBConnexion:mySQLAnnule,1) sinon // valide la transaction gclSTOCK_DBConnexion:mySQLTransaction(gclSTOCK_DBConnexion:mySQLFin,1) FIN gclSTOCK_DBConnexion:mySQLFerme(0)
cela permet si on aviat plusieur insert de valider l'ensemble ou non
Bon dev @+
"Jerome PAULIN" a écrit dans le message de news: ehpitl$ofm$
Bonjour,
Je ne trouve pas comment valider une trasaction (après un INSERT INTO ...) avec l'accès natif FB4WD...
Si j'execute le code SQL de ma requete en direct sur la base, ca passe, mais pas depuis WD (pas de message d'erreur non plus).
Mon code est le suivant :
PROCEDURE Creation_Etiquette(n_id__typ_eti est un entier) bRetCode est un booléen id__eti est un entier txtSQL est une chaîne
// on recupere un numero d'etiquette via le genereateur bRetCode=gclSTOCK_DBConnexion:mySQLExec("SELECT GEN_ID( T_ETIQUETTE_ID__ETI_GEN , 1 ) FROM RDB$DATABASE",0) SI bRetCode ALORS TANTQUE(gclSTOCK_DBConnexion:mySQLFetch(0)) id__eti=gclSTOCK_DBConnexion:mySQLLitCol(0,1) Trace(id__eti) FIN SINON Info("STOCK Erreur sur la requete : "+gclSTOCK_DBConnexion:mySQLGetErrorMessage()) FIN gclSTOCK_DBConnexion:mySQLFerme(0)
// on genere l'etiquette proprement dite txtSQL="insert into T_ETIQUETTE(id__eti,id__typ_eti,date_creation__eti) values(%1,%2,'now')" txtSQL=ChaîneConstruit(txtSQL,id__eti,n_id__typ_eti) Trace(txtSQL) bRetCode=gclSTOCK_DBConnexion:mySQLExec(txtSQL,0) SI PAS bRetCode ALORS Info("erreur sur la requete : "+gclSTOCK_DBConnexion:mySQLGetErrorMessage()) FIN gclSTOCK_DBConnexion:mySQLFerme(0)
le trace me donne le résultat suivant :
52 insert into T_ETIQUETTE(id__eti,id__typ_eti,date_creation__eti) values(52,4,'now')
Merci d'avance pour votre aide ...
gg
Jerome PAULIN
Firetox a écrit :
Bonjour,
il faut englober votre requete par une transaction du moins sur FB il faut valider la transaction a la fin dans votre code :
Un grand merci pour cette aide ultra rapide (j'étais sur que le problème était simple à résoudre, mais je n'avais pas trouvé comment utiliser correctement mysqltransaction())
Du coup, je vais développer (presque) "x fois plus vite" qu'avec mon Delphi, le gain de temps s'effectue principalement au niveau des interfaces ...
Cordialement,
gg
Firetox a écrit :
Bonjour,
il faut englober votre requete par une transaction du moins sur FB il faut
valider la transaction a la fin
dans votre code :
Un grand merci pour cette aide ultra rapide (j'étais sur que le problème
était simple à résoudre, mais je n'avais pas trouvé comment utiliser
correctement mysqltransaction())
Du coup, je vais développer (presque) "x fois plus vite" qu'avec mon
Delphi, le gain de temps s'effectue principalement au niveau des
interfaces ...
il faut englober votre requete par une transaction du moins sur FB il faut valider la transaction a la fin dans votre code :
Un grand merci pour cette aide ultra rapide (j'étais sur que le problème était simple à résoudre, mais je n'avais pas trouvé comment utiliser correctement mysqltransaction())
Du coup, je vais développer (presque) "x fois plus vite" qu'avec mon Delphi, le gain de temps s'effectue principalement au niveau des interfaces ...