PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → requète en SQL
requète en SQL
Débuté par bmalisan, 07 mar. 2006 12:32 - 5 réponses
Posté le 07 mars 2006 - 12:32
bonjour ,
requète en SQL fonctionne mais elle ne fonctionne pas sous windev
voiçi le code bouton
HExécuteRequête(REQ_CONTRATS_03,hRequêteDéfaut,DateDuJour(),VP_Numsoc )
iAperçu(iPage, "Aperçu écran", Vrai)
iImprimeEtat(Etat_contrats_03)

code de la requête
SELECT EKKO.EBELN AS EBELN,
EKKO.LIFNR AS LIFNR,
EKKO.KDATE AS KDATE,
EKPO.MATNR AS MATNR,
EKPO.KONNR AS KONNR,
EKPO.KTMNG AS KTMNG,
EKPO.MATKL AS MATKL,
EKPO.EBELN AS EBELN,
EKPO.MENGE AS MENGE,
EKPO.TXZ01 AS TXZ01,
EKPO.NETPR AS NETPR,
EKPO.PEINH AS PEINH,
EKPO.BPRME AS BPRME,
LFA1.NAME1 AS NAME1,
KONM.KSTBM AS KSTBM
FROM EKKO,LFA1,EKPO
LEFT OUTER JOIN KONH ON ((EKPO.EBELN + EKPO.EBELP) = LEFT(KONH.VAKEY,15))
LEFT OUTER JOIN KONM ON (KONH.KNUMH = KONM.KNUMH) AND (EKPO.NETPR = KONM.KBETR)
WHERE EKKO.KDATE >={param1}
AND EKKO.BUKRS = {param2}
AND EKKO.MANDT = EKPO.MANDT
AND EKKO.MANDT = LFA1.MANDT
AND EKKO.LIFNR = LFA1.LIFNR
AND (EKKO.EBELN = EKPO.EBELN OR EKKO.EBELN = EKPO.KONNR)
ORDER BY EKPO.MATKL,EKPO.MATNR,EKKO.EBELN
à bientôt
Posté le 07 mars 2006 - 14:18
Salut,
W10 n'est pas très au point quand il sagit de jointures externes...

Utilise la méthode suivante :

sMaRequete est une chaine

sMaRequete = ChaîneConstruit(
[
SELECT EKKO.EBELN AS EBELN,
EKKO.LIFNR AS LIFNR,
EKKO.KDATE AS KDATE,
EKPO.MATNR AS MATNR,
EKPO.KONNR AS KONNR,
EKPO.KTMNG AS KTMNG,
EKPO.MATKL AS MATKL,
EKPO.EBELN AS EBELN,
EKPO.MENGE AS MENGE,
EKPO.TXZ01 AS TXZ01,
EKPO.NETPR AS NETPR,
EKPO.PEINH AS PEINH,
EKPO.BPRME AS BPRME,
LFA1.NAME1 AS NAME1,
KONM.KSTBM AS KSTBM
FROM EKKO,LFA1,EKPO
LEFT OUTER JOIN KONH ON ((EKPO.EBELN + EKPO.EBELP) = LEFT(KONH.VAKEY,15))
LEFT OUTER JOIN KONM ON (KONH.KNUMH = KONM.KNUMH) AND (EKPO.NETPR = NM.KBETR)
WHERE EKKO.KDATE >= %1
AND EKKO.BUKRS = %2
AND EKKO.MANDT = EKPO.MANDT
AND EKKO.MANDT = LFA1.MANDT
AND EKKO.LIFNR = LFA1.LIFNR
AND (EKKO.EBELN = EKPO.EBELN OR EKKO.EBELN = EKPO.KONNR)
ORDER BY EKPO.MATKL,EKPO.MATNR,EKKO.EBELN
],DateDuJour(),VP_Numsoc)

Il faut, dans la chaine construite, remplacer {param1} et {param2} par %1 et %2

Apres tu instancie une Source de Données:

sdMaSource est une Source de Données

et tu execute la requete avec
HExécuteRequêteSQL(sdMaSource,hRequêteSansCorrection,sMaRequete)

Voili-voila !
Posté le 07 mars 2006 - 15:49
As tu testé ton etat sans passer iimprimeetat et fonctionne-t-il avec la requête SQL ?

abflm a écrit :
bonjour ,
requète en SQL fonctionne mais elle ne fonctionne pas sous windev
voiçi le code bouton
HExécuteRequête(REQ_CONTRATS_03,hRequêteDéfaut,DateDuJour(),VP_Numsoc )
iAperçu(iPage, "Aperçu écran", Vrai)
iImprimeEtat(Etat_contrats_03)

code de la requête
SELECT EKKO.EBELN AS EBELN,
EKKO.LIFNR AS LIFNR,
EKKO.KDATE AS KDATE,
EKPO.MATNR AS MATNR,
EKPO.KONNR AS KONNR,
EKPO.KTMNG AS KTMNG,
EKPO.MATKL AS MATKL,
EKPO.EBELN AS EBELN,
EKPO.MENGE AS MENGE,
EKPO.TXZ01 AS TXZ01,
EKPO.NETPR AS NETPR,
EKPO.PEINH AS PEINH,
EKPO.BPRME AS BPRME,
LFA1.NAME1 AS NAME1,
KONM.KSTBM AS KSTBM
FROM EKKO,LFA1,EKPO
LEFT OUTER JOIN KONH ON ((EKPO.EBELN + EKPO.EBELP) = LEFT(KONH.VAKEY,15))
LEFT OUTER JOIN KONM ON (KONH.KNUMH = KONM.KNUMH) AND (EKPO.NETPR = KONM.KBETR)
WHERE EKKO.KDATE >={param1}
AND EKKO.BUKRS = {param2}
AND EKKO.MANDT = EKPO.MANDT
AND EKKO.MANDT = LFA1.MANDT
AND EKKO.LIFNR = LFA1.LIFNR
AND (EKKO.EBELN = EKPO.EBELN OR EKKO.EBELN = EKPO.KONNR)
ORDER BY EKPO.MATKL,EKPO.MATNR,EKKO.EBELN
à bientôt
Posté le 07 mars 2006 - 15:50
merci d'avance mais
ou mets tu cette partie dans une requète ou dans
l'editeur de code du bouton...

sMaRequete = ChaîneConstruit(
[
SELECT EKKO.EBELN AS EBELN,
EKKO.LIFNR AS LIFNR,
EKKO.KDATE AS KDATE,
............

et que signifie tu instancie une Source de Données:

sdMaSource est une Source de Données



@+
bruno
Posté le 08 mars 2006 - 09:51
bonjour ,
je débute sue W10
Que signifie tu instancie une source de données...
et ou dis-je déclarer sdmaSource
@+ merci d'avance
bruno
Posté le 08 mars 2006 - 10:39
Bonjour,

il faut tout ecrire dans le code du bouton.

instancier signifie (en gros) que le programme va créer un espace mémoire qui sera réservé à la l'objet que tu vas instancier:

quand tu écris par exemple:
sMaChaine est une chaine
le programme va créér un espace mémoire réservé uniquement pour cette variable

le source de donnée est comme un fichier HF.

tu peux t'en servir pour remplir automatiquement un tableau par exemple
FichierVersTableMémoire(TonTableau,sdMaSource)


tu peux egalement l'utiliser de la facon suivante :
sdMaSource.EBELN
sdMaSource.LIFNR
sdMaSource.KDATE
...