|
| Libérer une requête de type requête SQL |
| Iniciado por Juju, 10,sep. 2019 18:00 - 7 respuestas |
| |
| | | |
|
| |
Miembro registrado 87 mensajes |
|
| Publicado el 10,septiembre 2019 - 18:00 |
Bonjour,
Je cherche à faire successivement plusieurs requêtes. Est ce qu'il existe une syntaxe pour libérer la requête et la réutiliser?
reqUpdatePlateforme est une Requête SQL = [
UPDATE T_TEST SET AN_PLATEFORME = '3' WHERE AN_A= 'OUI' AND AN_L=''; ] HExécuteRequête(reqUpdatePlateforme)
reqUpdatePlateforme2 est une Requête SQL = [
UPDATE T_TEST SET AN_PLATEFORME = '2' WHERE AN_A= '' AND AN_L= 'OUI'; ] HExécuteRequête(reqUpdatePlateforme2)
J'ai essayé avec HLibèreRequête mais cela ne fonctionne pas ... du coup j'ai déclaré 2 requêtes ...
Mais il y a sûrement mieux ...
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 79 mensajes |
|
| Publicado el 11,septiembre 2019 - 05:52 |
Bonjour
Et avec HAnnuleDéclaration ? Cordialement. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 87 mensajes |
|
| Publicado el 11,septiembre 2019 - 09:23 |
Bonjour,
Non j'ai une erreur "Un élément de type 'chaine ANSI' ne peut pas être converti vers le type 'requête'". Tant pis je vais faire plusieurs requêtes merci bien |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 11,septiembre 2019 - 10:14 |
Bonjour,
De la manière dont tu l'utilises non La variable "Requête SQL" est considérée comme un objet et ne peut être modifié après sa déclaration.
Dans le cas précis que tu cites, il te suffit de passer des paramètres:
reqUpdatePlateforme est une Requête SQL = [
UPDATE T_TEST SET AN_PLATEFORME = {pPlateforme} WHERE AN_A= {pANA} AND AN_L={pANL}; ] reqUpdatePlateforme.pPlateforme = "3" ... HExécuteRequête(reqUpdatePlateforme)
Si cela ne convient pas, il reste la solution des HexecuteRequêteSQL().
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 182 mensajes |
|
| Publicado el 11,septiembre 2019 - 10:54 |
Hello, Dans le cas d'un UPDATE ou d'un INSERT, il n'y a pas besoin de libérer les requêtes. C'est surtout sur un SELECT qu'il faut le faire. Par contre, si vous souhaitez faire en une seule requête le traitement, vous pouvez utiliser cette syntaxe :
UPDATE T_TEST SET AN_PLATEFORME = (CASE WHEN AN_A = 'OUI' AND AN_L ='' THEN '3' WHEN AN_A = '' AND AN_L = 'OUI' THEN '2' END) |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 324 mensajes |
|
| Publicado el 11,septiembre 2019 - 14:32 |
Bonjour
Une variable, peut importe son type, quand elle est déclaré de manière locale dans une fonction. Elle n'existe que si la fonction est exécuté, dès lors que la fonction est terminé toutes les variables sont "tués", incluant bien sur les sources de données et requête SQL. C'est pour cela qu'on a des variables globales ^_^
reqUpdatePlateforme est une Requête SQL = [ UPDATE T_TEST SET AN_PLATEFORME = {pPlateforme} WHERE AN_A= {pANA} AND AN_L={pANL}; ]
Vous mettez dans une procédure local ou vous passez en paramètre les 3 params, un petit remplace dans le texte de la requete sql ,et vous executez la procédure autant de fois que requis, et là pas besoin de vider quoi ce que soit celà se fait tout seul  |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 87 mensajes |
|
| Publicado el 11,septiembre 2019 - 15:11 |
Du coup j'ai écris mon code de cette manière :
HExécuteRequêteSQL(REQ,hRequêteDéfaut,"UPDATE T_TEST SET AN_PLATEFORME = '3' WHERE (AN_PLATEFORME = 0 OR AN_PLATEFORME IS NULL OR AN_PLATEFORME = '') AND AN_A = 'OUI' AND AN_L =''") HExécuteRequêteSQL(REQ,hRequêteDéfaut,"UPDATE T_TEST SET AN_PLATEFORME = '2' WHERE (AN_PLATEFORME = 0 OR AN_PLATEFORME = NULL OR AN_PLATEFORME = '') AND AN_A = '' AND AN_L = 'OUI'") HExécuteRequêteSQL(REQ,hRequêteDéfaut,"UPDATE T_TEST SET AN_PLATEFORME = '5' WHERE (AN_PLATEFORME = 0 OR AN_PLATEFORME = NULL OR AN_PLATEFORME = '') AND AN_A = 'OUI' AND AN_L = 'OUI'") HExécuteRequêteSQL(REQ,hRequêteDéfaut,"UPDATE T_TEST SET AN_PLATEFORME = '3' WHERE (AN_PLATEFORME = 0 OR AN_PLATEFORME = NULL OR AN_PLATEFORME = '') AND AN_A = 'OUI' AND AN_L = 'NON'") HExécuteRequêteSQL(REQ,hRequêteDéfaut,"UPDATE T_TEST SET AN_PLATEFORME = '2' WHERE (AN_PLATEFORME = 0 OR AN_PLATEFORME = NULL OR AN_PLATEFORME = '') AND AN_A = 'NON' AND AN_L = 'OUI'") |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 79 mensajes |
|
| Publicado el 12,septiembre 2019 - 06:20 |
Juju a écrit :
Bonjour,
Non j'ai une erreur "Un élément de type 'chaine ANSI' ne peut pas être converti vers le type 'requête'".
Ah, ok. Perso je n'utilise pas cette syntaxe. Je déclare une Source de données et en fin de traitement je libère les ressources avec HAnnuleDéclaration. Désolé. Bonne journée. |
| |
| |
| | | |
|
| | | | |
| | |
|