PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → ou est le bug ?
ou est le bug ?
Iniciado por mbarnabo, 26,oct. 2004 19:41 - 5 respuestas
Publicado el 26,octubre 2004 - 19:41
Bonjour,

J'essaye de faire la manip suivante :
Je regarde dans une table si elle contient un ensemble d'éléments.
Si les éléments ne sont pas présent, je dois remplir cette table avec les éléments contenus dans une autre table.
D'ou ce code:

ReqControle1,ReqControle2 sont des Sources de Données
Monsql est une chaîne
Ressql est un booléen
Monsql = "SELECT DISTINCT Resultat_Controle.Code,Resultat_Controle.Numero_OF,Resultat_Controle.Lot FROM Resultat_Controle RIGHT JOIN Definition_Controle ON Resultat_Controle.Code = Definition_Controle.Code WHERE Definition_Controle.Etape=" + PTCONT + " AND Resultat_Controle.Numero_OF='" + NOOF + "' AND Resultat_Controle.Lot_PF='" + NOLOT + "' AND Resultat_Controle.Valeur Is Null AND Definition_Controle.Controle_Actif=True"
Ressql=HExécuteRequêteSQL(ReqControle1,Monsql)
SI Ressql=Faux ALORS
Monsql = "SELECT Definition_Controle.Code FROM Definition_Controle WHERE Chaine_Fabrication=" + CHAFA +" AND Etape=" + PTCONT
Ressql=HExécuteRequêteSQL(ReqControle2,Monsql)
SI Ressql=Vrai ALORS
HLitPremier(ReqControle2)
TANTQUE PAS HEnDehors
Monsql = "SELECT Code,Numero_OF,Lot FROM Resultat_Controle"
Ressql=HExécuteRequêteSQL(ReqControle1,Monsql)
ReqControle1.Code =ReqControle2.Code
ReqControle1.Numero_OF =NOOF
ReqControle1.Lot =NOLOT
SI PAS HAjoute(ReqControle1) ALORS
Erreur ("erreur ajout ")
FIN
HLitSuivant(ReqControle2)
FIN
SINON
Erreur("Erreur SQL : " + HErreurInfo())
FIN
FIN


Lors de l'execution, je n'ai pas d'erreur mais le fichier est vide.

D'avance merci
Publicado el 26,octubre 2004 - 23:46
"Michel Barnabon" <mbarnabo@club-internet.Fr> écrivait news:417e6695$1
@news.pcsoft.fr:

> Ressql=HEx‚cuteRequˆteSQL(ReqControle1,Monsql)

Salut,

Il faut le flag hModifieFichier !

Ressql=HEx‚cuteRequêteSQL(ReqControle1,HModifieFichier,Monsql)

Ou mieux encore une modification directe des rubrique du fichier et Hajoute
sur le fichier !

--
En esperant t'avoir aidé.
ted
Publicado el 27,octubre 2004 - 15:14
Merci mais si tu regarde bien, mon code contient une modification des rubriques et un Hajoute.

Michel
Publicado el 27,octubre 2004 - 16:31
A moins que tu n'es surchargé la fonction HAjoute()
celle-ci ne renvoie pas de valeur, donc ton test ne peut
pas fonctionner, si il y a une erreur, tu ne la verras pas.
J'ai fait un test, il n'y a pas d'erreur de compil ?!?

Yves

"Michel Barnabon" <mbarnabo@club-internet.Fr> a écrit dans le message de
news: 417e6695$1@news.pcsoft.fr...


Bonjour,

J'essaye de faire la manip suivante :
Je regarde dans une table si elle contient un ensemble d'éléments.
Si les éléments ne sont pas présent, je dois remplir cette table avec les

éléments contenus dans une autre table.
D'ou ce code:

ReqControle1,ReqControle2 sont des Sources de Données
Monsql est une chaîne
Ressql est un booléen
Monsql = "SELECT DISTINCT

Resultat_Controle.Code,Resultat_Controle.Numero_OF,Resultat_Controle.Lot
FROM Resultat_Controle RIGHT JOIN Definition_Controle ON
Resultat_Controle.Code = Definition_Controle.Code WHERE
Definition_Controle.Etape=" + PTCONT + " AND Resultat_Controle.Numero_OF='"
+ NOOF + "' AND Resultat_Controle.Lot_PF='" + NOLOT + "' AND
Resultat_Controle.Valeur Is Null AND
Definition_Controle.Controle_Actif=True"
Ressql=HExécuteRequêteSQL(ReqControle1,Monsql)
SI Ressql=Faux ALORS
Monsql = "SELECT Definition_Controle.Code FROM Definition_Controle

WHERE Chaine_Fabrication=" + CHAFA +" AND Etape=" + PTCONT
Ressql=HExécuteRequêteSQL(ReqControle2,Monsql)
SI Ressql=Vrai ALORS
HLitPremier(ReqControle2)
TANTQUE PAS HEnDehors
Monsql = "SELECT Code,Numero_OF,Lot FROM

Resultat_Controle"
Ressql=HExécuteRequêteSQL(ReqControle1,Monsql)
ReqControle1.Code =ReqControle2.Code
ReqControle1.Numero_OF =NOOF
ReqControle1.Lot =NOLOT
SI PAS HAjoute(ReqControle1) ALORS
Erreur ("erreur ajout ")
FIN
HLitSuivant(ReqControle2)
FIN
SINON
Erreur("Erreur SQL : " + HErreurInfo())
FIN
FIN


Lors de l'execution, je n'ai pas d'erreur mais le fichier est vide.

D'avance merci
Publicado el 27,octubre 2004 - 16:54
Autant pour moi !
Utilisation avancée : la fonction Hajoute() peut renvoyer un résultat
Quand je dis que l'on ne lit pas assez l'aide,
je ferai mieux de me relire moi-même.

sinon l'aide de Hajoute() concernant les requêtes dit ceci :
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Quel que soit le mode d'exécution de la requête (avec ou sans l'option
hAvecFiltre), l'ajout d'enregistrement dans une requête n'est possible que
pour les requêtes mono fichier. Les rubriques calculées précisées lors de
l'ajout sont ignorées. Elles sont automatiquement calculées.

Attention :

Tout ajout dans une requête utilisant les groupes ou les agrégats est
interdit.

La gestion de l'intégrité et des doublons n'est pas réalisée lors
d'opérations sur les requêtes multi-fichiers : il est conseillé d'utiliser
les transactions pour éviter tout problème.

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Je ne suis pas un expert des reqêtes mais j'ai vu 'JOIN' donc une jointure

et dans ce cas ta requête est multi-fichier.

Si je ne me suis pas trompé une fois de plus.



Yves


"Yves.83" <_yves.piot.83@wanadoo.fr (S.p_a.m)> a écrit dans le message de
news: 417f8c51$1@news.pcsoft.fr...

A moins que tu n'es surchargé la fonction HAjoute()
celle-ci ne renvoie pas de valeur, donc ton test ne peut
pas fonctionner, si il y a une erreur, tu ne la verras pas.
J'ai fait un test, il n'y a pas d'erreur de compil ?!?

Yves

"Michel Barnabon" <mbarnabo@club-internet.Fr> a écrit dans le message de
news: 417e6695$1@news.pcsoft.fr...


Bonjour,

J'essaye de faire la manip suivante :
Je regarde dans une table si elle contient un ensemble d'éléments.
Si les éléments ne sont pas présent, je dois remplir cette table avec

les
éléments contenus dans une autre table.
D'ou ce code:

ReqControle1,ReqControle2 sont des Sources de Données
Monsql est une chaîne
Ressql est un booléen
Monsql = "SELECT DISTINCT
Resultat_Controle.Code,Resultat_Controle.Numero_OF,Resultat_Controle.Lot

FROM Resultat_Controle RIGHT JOIN Definition_Controle ON
Resultat_Controle.Code = Definition_Controle.Code WHERE
Definition_Controle.Etape=" + PTCONT + " AND

Resultat_Controle.Numero_OF='"
+ NOOF + "' AND Resultat_Controle.Lot_PF='" + NOLOT + "' AND
Resultat_Controle.Valeur Is Null AND
Definition_Controle.Controle_Actif=True"
Ressql=HExécuteRequêteSQL(ReqControle1,Monsql)
SI Ressql=Faux ALORS
Monsql = "SELECT Definition_Controle.Code FROM Definition_Controle
WHERE Chaine_Fabrication=" + CHAFA +" AND Etape=" + PTCONT

Ressql=HExécuteRequêteSQL(ReqControle2,Monsql)
SI Ressql=Vrai ALORS
HLitPremier(ReqControle2)
TANTQUE PAS HEnDehors
Monsql = "SELECT Code,Numero_OF,Lot FROM
Resultat_Controle"

Ressql=HExécuteRequêteSQL(ReqControle1,Monsql)
ReqControle1.Code =ReqControle2.Code
ReqControle1.Numero_OF =NOOF
ReqControle1.Lot =NOLOT
SI PAS HAjoute(ReqControle1) ALORS
Erreur ("erreur ajout ")
FIN
HLitSuivant(ReqControle2)
FIN
SINON
Erreur("Erreur SQL : " + HErreurInfo())
FIN
FIN


Lors de l'execution, je n'ai pas d'erreur mais le fichier est vide.

D'avance merci





begin 666 smallblue.gif
M1TE&.#EA"@`*`-7_`,# P!P30"4:4AL3.A\60R 71"<<6!L3/#0F=3<H>2TA
M8RP@8#$D:B4;4"$81RP@7B4;3S<I=B\C91@2-#,F;#XP>T,TA3DM;51%F"PD
M359(E5-(A&99H3LU5R 821P5/BTE6%]7ADU(:&->?@``````````````````
M````````````````````````````````````````````````````````````
M`````````````````````````````````"'Y! $`````+ `````*``H`0 8P
M0(!P2"2..J+B!L&I/ 20HB5"*88,$$=@D"EZAQI,@K$@7B2*1(-0(((\G\GA
%6PP"`#L`
`
end
Publicado el 27,octubre 2004 - 22:25
"Michel Barnabon" <mbarnabo@club-internet.Fr> écrivait
news:417f7992$1@news.pcsoft.fr:

Merci mais si tu regarde bien, mon code contient une modification des
rubriques et un Hajoute.


Salut,

Hajoute sur une requête pour ajouter dans le fichier, il faut bien le flag
hModifieFichier.
De plus comme déjà dit je te conseille de faire l'ajout directement sur le
fichier et pas sur la requête ! Si tu veux faire une modif/ajout via
requête fait une requete de modif/ajout : UPDATE/INSERT INTO

--
En esperant t'avoir aidé.
ted