PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Passer une rubrique d'une requête SQL en paramètre
Passer une rubrique d'une requête SQL en paramètre
Iniciado por poirier, 24,ene. 2019 15:30 - 2 respuestas
Miembro registrado
25 mensajes
Publicado el 24,enero 2019 - 15:30
Bonjour à tous,

J'aimerais dans une requête SQL passer en paramètre une rubrique d'une BDD. Est-ce possible ? Si oui comment ?

Code qui appelle ma requête :

HExécuteRequête(REQ_MEM_remplacer,hRequêteDéfaut,paramTexte,paramID)

Ma requête :

UPDATE
matierepremiere
SET
matierepremiere.NomArticle = {paramTexte}
WHERE
matierepremiere.IDmatierepremiere = {paramID}


J'aimerais donc pouvoir passer "SET matièrepremiere.XXXXXX" en paramètre sauf que ma méthode n'est pas correcte :

HExécuteRequête(REQ_MEM_remplacer,hRequêteDéfaut,paramRubrique,paramTexte,paramID)

Ma requête :

UPDATE
matierepremiere
SET
matierepremiere.{paramRubrique} = {paramTexte}
WHERE
matierepremiere.IDmatierepremiere = {paramID}


"matierepremiere.{paramRubrique}" n'est pas une syntaxe correcte.

Merci !
Miembro registrado
2.323 mensajes
Publicado el 24,enero 2019 - 17:12
Bonjour,

Pourquoi ne pas construire la requête dynamiquement avec un ChaîneConstruit() ou une syntaxe équivalente ?

Exemple de l'Aide en ligne :
// Modification dynamique de la condition LIMIT d'une requête SQL

REQ est une Source dede Données

sMaReq est une chaîne = [
SELECT * FROM
CODEPOSTAUX
%1
]

sMaReq = ChaîneConstruit(sMaReq, "LIMIT 1, 10")
SI PAS HExécuteRequêteSQL(REQ, hRequêteDéfaut, sMaReq) ALORS
Erreur(HErreurInfo())
SINON
Info("La requête contient " + HNbEnr(REQ) + " enregistrements.")
FIN


--
Bon dev,
Jean-Pierre
Miembro registrado
25 mensajes
Publicado el 25,enero 2019 - 16:42
Bonjour Jean-Pierre,

Solution trouvée, merci pour votre aide !

paramRubrique est une chaîne = COMBO_Combo..ValeurAffichée
paramTexte est une chaîne = SAI_SansNom1
ParamID est un chaîne
nRang est un entier = 1
nLigne est un entier = TableSelect(TABLE_Matierepremiere, nRang, tsLigne)
REQ est une Source dede Données

TANTQUE nLigne <> -1
ParamID = TABLE_Matierepremiere.COL_IDmatierepremiere[nLigne]
MaReq est une chaîne = [
UPDATE matierepremiere
SET %1 = '%2'
WHERE IDmatierepremiere = %3
]
MaReq = ChaîneConstruit(MaReq,paramRubrique,paramTexte,ParamID)
HExécuteRequêteSQL(REQ,hRequêteDéfaut,MaReq)
nRang++
nLigne = TableSelect(TABLE_Matierepremiere, nRang, tsLigne)
FIN
TableAffiche(TABLE_Matierepremiere, taInit)