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

WD12 -34d - Etat et requete parametree avec clause IN

2 réponses
Avatar
I.G.LOG
Bonjour,

Je dois éditer un état des stocks de un ou plusieurs magasins.
Pour ceci j'utilise un état basé sur la requete suivante:

select
DOCUMLG.IDDOCUM,DOCUMLG.IDARTICLE,DOCUMLG.ETAT,DOCUMLG.QTEREST,DOCUMLG.PRIX,
DOCUMLG.DESIGNATION,DOCUMLG.REFCONST,
TIERS.RAISON,TIERS.ABREV
from
DOCUMLG inner join TIERS on TIERS.IDTIERS = DOCUMLG.IDTIERS
WHERE
DOCUMLG.IDDOCUM in ({pNumMag})
AND DOCUMLG.IDTIERS = {pIdTiers}
AND DOCUMLG.REFCONST between {pDe} and {pA}
AND DOCUMLG.ETAT = {pEtat}
AND DOCUMLG.QTEREST <> 0
order by ABREV,REFCONST,ETAT

Le champ IDDOCUM correspond au magasin.
Je passe donc dans le paramètre {pNumMag} une chaine de caractère comme
"3,6,9" par exemple (pour lister les articles appartenants aux trois
magasins identifiés 3,6 et 9)
D'après mes essais, la requète ne prend en compte que le 1er magasin - dans
l'exemple le magasin n° 3 - au lieu de des 3 magasins (pour confirmer ce
défaut j'ai passé la chaine "6,3,9" et j'obtient les stocks du seul magasin
n° 6) !!!
J'ai exécuté la requète manuellement (avec SQLExec) et là les résultats sont
corrects. Le problème vient donc sur le IN dans le cas d'utilisation avec
iInitRequeteEtat(...)
Avez vous rencontré ce problème et connaissez vous une solution ?
Merci à tous
Phil

2 réponses

Avatar
JeAn-PhI
I.G.LOG a exprimé avec précision :
Bonjour,

Je dois éditer un état des stocks de un ou plusieurs magasins.
Pour ceci j'utilise un état basé sur la requete suivante:

select
DOCUMLG.IDDOCUM,DOCUMLG.IDARTICLE,DOCUMLG.ETAT,DOCUMLG.QTEREST,DOCUMLG.PRIX,
DOCUMLG.DESIGNATION,DOCUMLG.REFCONST,
TIERS.RAISON,TIERS.ABREV
from
DOCUMLG inner join TIERS on TIERS.IDTIERS = DOCUMLG.IDTIERS
WHERE
DOCUMLG.IDDOCUM in ({pNumMag})
AND DOCUMLG.IDTIERS = {pIdTiers}
AND DOCUMLG.REFCONST between {pDe} and {pA}
AND DOCUMLG.ETAT = {pEtat}
AND DOCUMLG.QTEREST <> 0
order by ABREV,REFCONST,ETAT

Le champ IDDOCUM correspond au magasin.
Je passe donc dans le paramètre {pNumMag} une chaine de caractère comme
"3,6,9" par exemple (pour lister les articles appartenants aux trois
magasins identifiés 3,6 et 9)
D'après mes essais, la requète ne prend en compte que le 1er magasin - dans
l'exemple le magasin n° 3 - au lieu de des 3 magasins (pour confirmer ce
défaut j'ai passé la chaine "6,3,9" et j'obtient les stocks du seul magasin
n° 6) !!!
J'ai exécuté la requète manuellement (avec SQLExec) et là les résultats sont
corrects. Le problème vient donc sur le IN dans le cas d'utilisation avec
iInitRequeteEtat(...)
Avez vous rencontré ce problème et connaissez vous une solution ?
Merci à tous
Phil


DOCUMLG.IDDOCUM -> texte alors {pNumMag} = '3','6','9' ou '3';'6';'9'
DOCUMLG.IDDOCUM -> numérique alors {pNumMag} = 3,6,9 ou 3;6;9

--
Cordialement JeAn-PhI
Avatar
I.G.LOG
> DOCUMLG.IDDOCUM -> texte alors {pNumMag} = '3','6','9' ou '3';'6';'9'
DOCUMLG.IDDOCUM -> numérique alors {pNumMag} = 3,6,9 ou 3;6;9



Bonjour,
IDDOCUM est un entier (clé étrangère correspondant à l'ID auto du corps de
document stock)
J'ai essayé les deux syntaxes sans succès:

lMag est une chaine

lMag = "3,6,9" // 1er essai -> pb idem
lMag = "'3','6','9'" // 2eme essai -> pb idem
iInitRequeteEtat(EARTICLE,lMag)
iImprimeEtat(EARTICLE)

// La requète
...
WHERE
DOCUMLG.IDDOCUM in ({pNumMag})
...

Encore merci