Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requête modification

2 réponses
Avatar
Serge
Bonjour,

J'ai besoin d'aide sur mon bout de code suivant.
J'ai cr=E9er une req modication avec l'editeur de requete.
Son code SQL :
UPDATE
TblArticleStock
SET
StockNbSortie =3D {param1},
QteReserve =3D {param2}
WHERE
TblArticleStock.CodeArticle =3D 134
AND TblArticleStock.CodeDepot =3D 34


En mode test elle fonctionne tres bien, en mettant en "dur" les
valeurs qui me servent =E0 modifier mon enregistrement tout est ok :

Par contre je ne sais pas faire passer dans ma requete les valeurs par
parametre (param1 et param2).
Mon bout de code :


REQ_SortieStockBL.param1=3DxQteReservee // xQteReservee=3D12
REQ_SortieStockBL.param2=3DxQteSortie // xQteSortie=3D5

HEx=E9cuteRequ=EAteSQL(REQ_SortieStockBL)


Merci beaucoup
Serge

2 réponses

Avatar
mat
Serge wrote:
Bonjour,

J'ai besoin d'aide sur mon bout de code suivant.
J'ai créer une req modication avec l'editeur de requete.
Son code SQL :
UPDATE
TblArticleStock
SET
StockNbSortie = {param1},
QteReserve = {param2}
WHERE
TblArticleStock.CodeArticle = 134
AND TblArticleStock.CodeDepot = 34


En mode test elle fonctionne tres bien, en mettant en "dur" les
valeurs qui me servent à modifier mon enregistrement tout est ok :

Par contre je ne sais pas faire passer dans ma requete les valeurs par
parametre (param1 et param2).
Mon bout de code :


REQ_SortieStockBL.param1=xQteReservee // xQteReservee
REQ_SortieStockBL.param2=xQteSortie // xQteSortie=5

HExécuteRequêteSQL(REQ_SortieStockBL)


Merci beaucoup
Serge





Bonjour,

1) il faut spécifier la version WD, car depuis WD11, le comportement des
requêtes risque d'être différent aux versions antérieures.

2) La syntaxe pour hExecuteRequeteSQL est faux, il manque le paramètre
du mode d'exécution et la châine la requête.

3) Regardant, le code ci-dessus, il faut plutôt utiliser
hExecuteRequete(REQ_SortieStockBL) et là ça devrait marcher. Mais
peut-être ton WD n'aime pas des paramètres dans le SET, alors il faut
construire la requete comme chaîne, remplaçant les paramètres avec des
variables, et ensuite l'exécuter effectivement avec
hExecuteRequeteSQL(REQ_SortieStockBL, hRequeteDefaut, maChaineSQL). Je
le fais comme ça et n'ai jamais eu de soucis, à part le fait qu'on ne
sait pas si la modif a réussi :-)

Salutations
Mat
Avatar
Albert
Bonjour,

Voir l'aide en ligne mot clé : Chaîne, Chaîne multilignes

Dans le code de la requête, il est également conseillé de mettre les
noms de rubrique entre []
Ex : NomFichier.[NomRubrique]

Note : >> soit d'utiliser dans la chaîne les caractères %1, %2, ...à
la place des valeurs paramétrables
Variable de type numérique = %1
Variable de type chaine = '%1'

Vous pouvez également controler le code de la requetre en placant un
Trace()

sCodeSQL = ChaineConstruit( sCode, xQteReservee, xQteSortie)
Trace( sCodeSQL)

[Code]

sCode, sCodeSQL sont des chaines
sdReq est une source de données

sCode = [
UPDATE
TblArticleStock
SET
StockNbSortie = %1
QteReserve = %2
WHERE TblArticleStock.[CodeArticle] = 134
AND TblArticleStock.[CodeDepot] = 34
]

sCodeSQL = ChaineConstruit( sCode, xQteReservee, xQteSortie)

SI PAS HExécuteRequêteSQL(sdReq, sCodeSQL) ALORS
.....

Vous aurez compris que vous pouvez encore rendre votre requete plus
performante

sCode, sCodeSQL sont des chaines
nCodeArticle, nCodeDépot sont des entiers
sdReq est une source de données

nCodeArticle = 134
nCodeDépot = 34

sCode = [
UPDATE
TblArticleStock
SET
StockNbSortie = %1
QteReserve = %2
WHERE TblArticleStock.[CodeArticle] = %3
AND TblArticleStock.[CodeDepot] = %4
]

sCodeSQL = ChaineConstruit( sCode, xQteReservee, xQteSortie,
nCodeArticle, nCodeDépot)

Vous avez de très bons tutoriels traitant du SQL sur le site

http://sql.developpez.com/


Cordialement

Albert