STRQMQRY

05-12-2006 à 17:35:18
Bonjour,

Je n'arrive pas à lancer STRQMQRY avec un query qui utilise une zone résultat par exemple XX concaténée (XX = aa !! bb)

par contre le même query passe si j'enleve cette zone resultat

Est ce normal, est un bug ... ou autre chose ?

STRQMQRY QMQRY(MABIB/MONFIC) OUTPUT(*OUTFILE)
OUTFILE(QTEMP/TOTO2) ALWQRYDFN(*YES)
  • Liens sponsorisés



01-12-2006 à 13:51:01
Ta question n'est pas claire. Il faut nous éclairer davantage en développant ton problème si tu veux qu'on puisse répondre correctement.
01-12-2006 à 14:19:06
désolé ...

Je reprend : Si je démarre une requete QM comme celle ci :

STRQMQRY QMQRY(MABIB/MONQRY) OUTPUT(*OUTFILE)
OUTFILE(MABIB/MONFICHIER) ALWQRYDFN(*YES)

si dans le query MABIB/MONQRY j'ai
défini une zone résultat comme concaténation de deux autres zones et que cette zone est sélectionné

alors la requete ne passe pas (Message QWM2701. . . . : La commande STRQMQRY a échoué).

Par contre si dans le même query je supprime cette zone résultat alors la requete passe

Voila j'espere que cette fois c'est + clair ...
01-12-2006 à 14:38:17
Colle ici la requête SQL générée à partir du QUERY/400.
01-12-2006 à 15:31:55
ce qui pose probleme c'est : A4AUCD"!!"A4AWCD AS CT

Voir ci dessous

SELECT
ALL T01.A4AHCD, A4AUCD"!!"A4AWCD AS CT, T02.B3JACF, T01.A4AKNB,
T01.A4AHNB, T01.A4AZTX, T01.A4AJDT, T01.A4EINA, T02.B3NGND,
T03.BLBXCD, T03.BLAIQT01, T03.BLABVA01
FROM XCAVE01G/GCA4REL1 T01,
XCAVE01G/GFB3CPP T02,
CBI/VENTES2005 T03
WHERE T01.A4AKNB = T02.B3AKNB
AND T01.A4AHNB = T02.B3AHNB
AND T01.A4AKNB = T03.BLAKNB
AND T01.A4AHNB = T03.BLAHNB
AND( A4AUCD"!!"A4AWCD = ' Q02'
AND SUBSTR(B3JACF, 1, 1) <> 'B'
AND A4AJDT >= 1051001
OR A4AUCD"!!"A4AWCD = ' Q02'
AND SUBSTR(B3JACF, 1, 1) <> 'B'
AND A4AJDT = 0)
ORDER BY T02.B3JACF ASC
01-12-2006 à 17:01:47
SELECT ...

WHERE T01.A4AKNB = T02.B3AKNB
AND T01.A4AHNB = T02.B3AHNB
AND T01.A4AKNB = T03.BLAKNB
AND T01.A4AHNB = T03.BLAHNB

AND A4AUCD!!A4AWCD = ' Q02'
AND SUBSTR(B3JACF, 1, 1) <> 'B'

AND ( A4AJDT >= 1051001
OR A4AJDT = 0 )

ORDER BY T02.B3JACF ASC

Corrige ta SELECT comme ci-dessus et ça devrait aller.
01-12-2006 à 17:02:47
SELECT ...

WHERE T01.A4AKNB = T02.B3AKNB
AND T01.A4AHNB = T02.B3AHNB
AND T01.A4AKNB = T03.BLAKNB
AND T01.A4AHNB = T03.BLAHNB

AND A4AUCD!!A4AWCD = ' Q02'
AND SUBSTR(B3JACF, 1, 1) <> 'B'

AND ( A4AJDT >= 1051001
OR A4AJDT = 0 )

ORDER BY T02.B3JACF ASC

Corrige ta SELECT comme ci-dessus et ça devrait aller.
04-12-2006 à 12:12:52
Philippe

ça résout le pb sur cette exemple mais

ça ne résout pas mon probleme de strqmqry =>


Mon but est de faire un prog qui lance n'importe quel query et envois par email le fichier résultat quelque soit le query.

Prog :

Parametre &QRYNAME &QRYBIB

STRQMQRY QMQRY((&QRYBIB /(&QRYNAME) OUTPUT(*OUTFILE)
OUTFILE(MABIB/TOTO) ALWQRYDFN(*YES)

j'envois se fichier par email

fin prog

Mais si dans mon query j'ai une zone résultat
qui est la concaténation de deux zones ça ne marche pas !!

Je vois bien dans le source SQL que le "!!" pose probleme,
mais comment le résoudre sans passer par sql ...
04-12-2006 à 17:20:50
Il y a qqch que je ne comprends pas.
Puisque ton QMQRY provient d'un QUERY/400, quels caractères as tu employé pour concaténer les 2 zones sur l'écran "Défintion des zones résultat" dans le QUERY/400 ?

Et puis, quelle est la valeur du CCSID du fichier source QQMQRYSRC que tu utilises pour créer ton QMQRY ?

Enfin, ce serait bien mieux si tu t'inscrivais correctement dans ce forum avec un bon avatar (image) car ça aide à trier les questions.

--Message édité par philippe le 04-12-06 à 17:24:16--
05-12-2006 à 11:05:17
> Pour le CCSID . . . . . . : 297

> Pour la concaténation dans le query =>

Zone Expression En-tête de colonne Long Déc
CT A4AUCD !! A4AWCD
05-12-2006 à 12:18:23
C'est probablement un bug. J'ai essayé sur un AS400 en V5R2 et je n'ai pas rencontré de problème. J'avais pensé à un problème de CCSID mais 297=france, donc ce n'est pas ça. C'est le convertisseur QUERY/400 --> SQL qui est en cause en ne convertissant pas correctement les " !! ".

Il faudrait peut-être faire un APAR pour alerter IBM. Mais, bon...
Tu pourrais également alerter ton point-service et leur demander comment résoudre ce problème.

Je pense aussi que tu pourrais peut-être reprendre la main dans QQMQRYSRC et, soit supprimer les guillemets intempestifs de la requête SQL, soit remplacer ces " !! " par CONCAT :

soit A4AUCD !! A4AWCD
soit A4AUCD CONCAT A4AWCD

Remarque: CONCAT n'est malheureusement pas supporté par QUERY/400.


--Message édité par philippe le 05-12-06 à 12:19:24--
05-12-2006 à 12:27:04
ok c'est ce que je pensais ...

merci d'avoir regarder

A+
05-12-2006 à 15:43:39
Bonjour,

Si j'ai bien compris le problème :

Le QMQRY fait une sélection avec une zone résultat ZResultat qui est une concaténation de 2 autres Z1 et Z2. En sortie de cette sélection par QMQRY, tu as un fichier que tu rattaches par e-mail...

Ce serait la zone résultat qui ferait planter le QMQRY ?

Avez-vous résolu le pb ou non car ça m'intéresse aussi ?
Ce cas de figure pourrait se produire chez nous.


05-12-2006 à 16:32:32
le probleme c'est que lorsque j'essaye de lancer le query via strqmqry ça plante à cause de la concaténation donc le query ne tourne même pas ... pourtant je suis bine en V5R2M0 comme Philippe mais lui n'a pas le pb ... mais moi oui !!


05-12-2006 à 16:57:19
Il faut que j'ajoute pour que tout soit bien clair que j'ai fait l'essai sur une machine configurée pour les USA (CCSID = 37 ) où les !! sont remplacés par || (AltGr et 6) dans le QUERY/400 et dans SQL.
05-12-2006 à 17:17:33
Merci Philippe pour cette info ...

La solution est donc de remplacer le !! par || (AltGr et 6)

dans les query et ça marche Nickel Chrome

le strqmqry fonctionne normalement ....

  • Liens sponsorisés