Requete paramétrée WD11 - 053p

Le
I.G.LOG
Bonjour à tous,
J'ai déjà transmis un post sur ce sujet, sans réponse qui puisse m'aider.

Je réedite le problème:

J'ai une requete du projet contenant un paramètre, cad avec la syntaxe
select where IDENT = {pParam}

Lorsque j'exécute cette requete sous l'éditeur (avec GO) j'ai toujours un
résultat vide (la requete ne me renvoie rien), et ce quelque soit la
paramètre que je passe - même problème sans passer de paramètre (pParam
décoché)

Si dans le code sql de la requete
je replace {pParam} par une valeur fixe ( select where IDENT = 6 )
la requete me retourne bien les valeurs attendues !!!!

J'ai aussi essayé avec la fonction
hHexecuteRequete(MaRequete,hRequeteDefaut,6)
et
MaRequete.pParam = 6
hHexecuteRequete(MaRequete,hRequeteDefaut)

Toujours le même problème, aucun résultat !
Il semblerait que le fait d'intégrer un paramètre dans le code de la requete
pose un problème.

J'y perd mon latin !!!

Merci à tous ceux qui pourront m'aider (c'est urgent)
Cordialement
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier POUZIN
Le #14586161
I.G.LOG a écrit :
Bonjour à tous,
J'ai déjà transmis un post sur ce sujet, sans réponse qui puisse m'aider.

Je réedite le problème:

J'ai une requete du projet contenant un paramètre, cad avec la syntaxe
select ... where IDENT = {pParam}

Lorsque j'exécute cette requete sous l'éditeur (avec GO) j'ai toujours un
résultat vide (la requete ne me renvoie rien), et ce quelque soit la
paramètre que je passe - même problème sans passer de paramètre (pParam
décoché)

Si dans le code sql de la requete
je replace {pParam} par une valeur fixe ( select ... where IDENT = 6 )
la requete me retourne bien les valeurs attendues !!!!

J'ai aussi essayé avec la fonction
hHexecuteRequete(MaRequete,hRequeteDefaut,6)
et
MaRequete.pParam = 6
hHexecuteRequete(MaRequete,hRequeteDefaut)

Toujours le même problème, aucun résultat !
Il semblerait que le fait d'intégrer un paramètre dans le code de la requete
pose un problème.

J'y perd mon latin !!!

Merci à tous ceux qui pourront m'aider (c'est urgent)
Cordialement





Essaye {param1} à la place de {pParam} ... ?!
I.G.LOG
Le #14586151
> Essaye {param1} à la place de {pParam} ... ?!



Bonjour,
J'ai essayé, sans plus de succès.
Ca fait plusieurs heures que je tourne cette requete dans tous les sens sans
arriver à quoique ce soit. Le plus "incroyable" c'est qu'elle fonctionne dès
que je substitue les {param} par des valeurs fixes.

Je suis preneur de toute autre "piste" bien sur.
Merci
Olivier POUZIN
Le #14586141
I.G.LOG a écrit :
Essaye {param1} à la place de {pParam} ... ?!



Bonjour,
J'ai essayé, sans plus de succès.
Ca fait plusieurs heures que je tourne cette requete dans tous les sens sans
arriver à quoique ce soit. Le plus "incroyable" c'est qu'elle fonctionne dès
que je substitue les {param} par des valeurs fixes.

Je suis preneur de toute autre "piste" bien sur.
Merci




Peux-tu donner plus de détails ...

- Requête complète
- Quelle BDD et quel accès utilise-tu (HF,HF/CS,mySQL,...?)
I.G.LOG
Le #14586131
> - Requête complète
- Quelle BDD et quel accès utilise-tu (HF,HF/CS,mySQL,...?)



Requete complète (qui fonctionne, je l'ai essayé aussi par sqlexec() )

select
DOCUM.REFDOC,LIGENS.IDDOCUMLG,LIGENS.REFCONST,LIGENS.NUMSERIE,TIERS.RAISON,ARTICLE.DESIGNATION
from DOCUMLG inner join DOCUM on DOCUM.IDDOCUM = DOCUMLG.IDDOCUM
inner join ACTION on ACTION.IDDOCUM = DOCUM.IDDOCUM and ACTION.DESTINATAIRE
= {param1}
inner join TYPE on TYPE.IDTYPE = ACTION.IDTYPE and TYPE.DESIGNATION =
'Travail',
DOCUMLG inner join DOCUMLG as LIGENS on (LIGENS.IDDOCUM = DOCUMLG.IDDOCUM
and LIGENS.NUMGRP = 0)
inner join T_DONNC on (T_DONNC.ID_LIGNE = LIGENS.IDDOCUMLG and
T_DONNC.ID_COL = {param2} and T_DONNC._VALEUR = {param3}),
DOCUMLG inner join ARTICLE on ARTICLE.IDARTICLE = DOCUMLG.IDARTICLE,
TIERS
where DOCUMLG.NUMGRP = 99
and DOCUMLG.ETAT = 1
and DOCUMLG.IDARTICLE = {param4}
and TIERS.IDTIERS = ACTION.EMETTEUR
and TIERS.TIERSETAT = {param4}
and TIERS.IDTIERS = {param5}
order by DESIGNATION,REFDOC

La base de donnée est HF classic (WD11 - 053p)
Olivier POUZIN
Le #14586121
I.G.LOG a écrit :
- Requête complète
- Quelle BDD et quel accès utilise-tu (HF,HF/CS,mySQL,...?)



Requete complète (qui fonctionne, je l'ai essayé aussi par sqlexec() )

select
DOCUM.REFDOC,LIGENS.IDDOCUMLG,LIGENS.REFCONST,LIGENS.NUMSERIE,TIERS.RAISON,ARTICLE.DESIGNATION
from DOCUMLG inner join DOCUM on DOCUM.IDDOCUM = DOCUMLG.IDDOCUM
inner join ACTION on ACTION.IDDOCUM = DOCUM.IDDOCUM and ACTION.DESTINATAIRE
= {param1}
inner join TYPE on TYPE.IDTYPE = ACTION.IDTYPE and TYPE.DESIGNATION =
'Travail',
DOCUMLG inner join DOCUMLG as LIGENS on (LIGENS.IDDOCUM = DOCUMLG.IDDOCUM
and LIGENS.NUMGRP = 0)
inner join T_DONNC on (T_DONNC.ID_LIGNE = LIGENS.IDDOCUMLG and
T_DONNC.ID_COL = {param2} and T_DONNC._VALEUR = {param3}),
DOCUMLG inner join ARTICLE on ARTICLE.IDARTICLE = DOCUMLG.IDARTICLE,
TIERS
where DOCUMLG.NUMGRP = 99
and DOCUMLG.ETAT = 1
and DOCUMLG.IDARTICLE = {param4}
and TIERS.IDTIERS = ACTION.EMETTEUR
and TIERS.TIERSETAT = {param4}
and TIERS.IDTIERS = {param5}
order by DESIGNATION,REFDOC

La base de donnée est HF classic (WD11 - 053p)




As-tu essayé de faire une rétro-analyse de la requête
(menu contextuel de l'éditeur de requête) ?
I.G.LOG
Le #14586111
> As-tu essayé de faire une rétro-analyse de la requête
(menu contextuel de l'éditeur de requête) ?



La réro-analyse m'affiche 8 messages :
1/ requête utilise une tétajointure (une condition autre de égale). Les
tétajointures ne sont pas supportées par l'éditeur de requêtes.
2/ Les alias de fichier ne sont pas gérés dans l'éditeur de requêtes.
sur chacun d'eux j'ai la possibilité "Aucune action à effectuer Aucune
action automatique ne peut être effectuée.
Vous devez modifier directement le code SQL de votre requête." (aucune
action possible donc).
et je ne peux pas effectuer la retro. (normal, requete un peu trop complexe
pour l'éditeur)
Olivier POUZIN
Le #14586091
I.G.LOG a écrit :
As-tu essayé de faire une rétro-analyse de la requête
(menu contextuel de l'éditeur de requête) ?



La réro-analyse m'affiche 8 messages :
1/ requête utilise une tétajointure (une condition autre de égale). Les
tétajointures ne sont pas supportées par l'éditeur de requêtes.
2/ Les alias de fichier ne sont pas gérés dans l'éditeur de requêtes.
sur chacun d'eux j'ai la possibilité "Aucune action à effectuer Aucune
action automatique ne peut être effectuée.
Vous devez modifier directement le code SQL de votre requête." (aucune
action possible donc).
et je ne peux pas effectuer la retro. (normal, requete un peu trop complexe
pour l'éditeur)




Je travaille avec l'accès natif mySQL et j'ai déjà eu de semblables
déconvenues ... :-((

-> tu peux essayer de construire ta requête avec l'assistant de WD ce
qui te crachera un SQL "correct"

-> tu peux essayer de construire ta requête autrement (avec des
sous-requêtes) et les valider sous-requêtes par sous-requêtes par la
rétro analyse

Hope this help ;-)
I.G.LOG
Le #14586081
> -> tu peux essayer de construire ta requête avec l'assistant de WD ce qui
te crachera un SQL "correct"



Je ne pense pas que l'éditeur de requete soit capable de "pondre" une
requete aussi complexe :-(

-> tu peux essayer de construire ta requête autrement (avec des
sous-requêtes) et les valider sous-requêtes par sous-requêtes par la rétro
analyse



Je vais continuer à chercher. Si je trouve, je te transmet ça.
En tous cas merci d'avoir "buché" sur ce problème
Phil
JeAn-PhI
Le #14585991
I.G.LOG a exprimé avec précision :
- Requête complète
- Quelle BDD et quel accès utilise-tu (HF,HF/CS,mySQL,...?)



Requete complète (qui fonctionne, je l'ai essayé aussi par sqlexec() )

select
DOCUM.REFDOC,LIGENS.IDDOCUMLG,LIGENS.REFCONST,LIGENS.NUMSERIE,TIERS.RAISON,ARTICLE.DESIGNATION
from DOCUMLG inner join DOCUM on DOCUM.IDDOCUM = DOCUMLG.IDDOCUM
inner join ACTION on ACTION.IDDOCUM = DOCUM.IDDOCUM and ACTION.DESTINATAIRE =
{param1}
inner join TYPE on TYPE.IDTYPE = ACTION.IDTYPE and TYPE.DESIGNATION =
'Travail',
DOCUMLG inner join DOCUMLG as LIGENS on (LIGENS.IDDOCUM = DOCUMLG.IDDOCUM and
LIGENS.NUMGRP = 0)
inner join T_DONNC on (T_DONNC.ID_LIGNE = LIGENS.IDDOCUMLG and T_DONNC.ID_COL
= {param2} and T_DONNC._VALEUR = {param3}),
DOCUMLG inner join ARTICLE on ARTICLE.IDARTICLE = DOCUMLG.IDARTICLE,
TIERS
where DOCUMLG.NUMGRP = 99
and DOCUMLG.ETAT = 1
and DOCUMLG.IDARTICLE = {param4}
and TIERS.IDTIERS = ACTION.EMETTEUR
and TIERS.TIERSETAT = {param4}
and TIERS.IDTIERS = {param5}
order by DESIGNATION,REFDOC

La base de donnée est HF classic (WD11 - 053p)



j'aurais fait ceci :

select
DOCUM.REFDOC,LIGENS.IDDOCUMLG,LIGENS.REFCONST,LIGENS.NUMSERIE,TIERS.RAISON,ARTICLE.DESIGNATION
from
DOCUMLG inner join DOCUM on DOCUM.IDDOCUM = DOCUMLG.IDDOCUM,
DOCUM inner join ACTION on ACTION.IDDOCUM = DOCUM.IDDOCUM,
ACTION inner join TYPE on TYPE.IDTYPE = ACTION.IDTYPE,
DOCUMLG inner join T_DONNC on T_DONNC.ID_LIGNE = DOCUMLG.IDDOCUMLG,
DOCUMLG inner join ARTICLE on ARTICLE.IDARTICLE = DOCUMLG.IDARTICLE,
TIERS
where DOCUMLG.NUMGRP = 99
and DOCUMLG.ETAT = 1
and ACTION.DESTINATAIRE = {param1}
and TYPE.DESIGNATION = 'Travail'
and DOCUMLG.NUMGRP = 0
and T_DONNC.ID_COL = {param2}
and T_DONNC._VALEUR = {param3}
and DOCUMLG.IDARTICLE = {param4}
and TIERS.IDTIERS = ACTION.EMETTEUR
and TIERS.TIERSETAT = {param4}
and TIERS.IDTIERS = {param5}

order by DESIGNATION,REFDOC

--
Cordialement JeAn-PhI
I.G.LOG
Le #14585961
> j'aurais fait ceci :

select
DOCUM.REFDOC,LIGENS.IDDOCUMLG,LIGENS.REFCONST,LIGENS.NUMSERIE,TIERS.RAISON,ARTICLE.DESIGNATION
from
DOCUMLG inner join DOCUM on DOCUM.IDDOCUM = DOCUMLG.IDDOCUM,
DOCUM inner join ACTION on ACTION.IDDOCUM = DOCUM.IDDOCUM,
ACTION inner join TYPE on TYPE.IDTYPE = ACTION.IDTYPE,
DOCUMLG inner join T_DONNC on T_DONNC.ID_LIGNE = DOCUMLG.IDDOCUMLG,
DOCUMLG inner join ARTICLE on ARTICLE.IDARTICLE = DOCUMLG.IDARTICLE,
TIERS
where DOCUMLG.NUMGRP = 99
and DOCUMLG.ETAT = 1
and ACTION.DESTINATAIRE = {param1}
and TYPE.DESIGNATION = 'Travail'
and DOCUMLG.NUMGRP = 0
and T_DONNC.ID_COL = {param2}
and T_DONNC._VALEUR = {param3}
and DOCUMLG.IDARTICLE = {param4}
and TIERS.IDTIERS = ACTION.EMETTEUR
and TIERS.TIERSETAT = {param4}
and TIERS.IDTIERS = {param5}

order by DESIGNATION,REFDOC



Bonjour,
Je vais essayer ça et je vous tiens au cournt.
Merci pour la réponse
Publicité
Poster une réponse
Anonyme