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

[WD8 - MySQL] passage de variables

8 réponses
Avatar
Manuel Pavy
Bonjour,
j aimerais faire une requete sur un champs date en MySQL. Seulement,
seule l année m intéresse.
j ai donc une requete qui resssemble à ca :
SELECT <tous_mes_champs>
FROM <les_tables_concernees>
WHERE <champ_filtre1> = {param1}
and <filtreDate1> = "{param2}-01-01"
and <filtreDate2> <= "{param3}-12-31"

Lorsque je teste cette requete seule (a l aide de l assistant de test de
requete WD), j ai ce qu il me faut. Mais intégrer dans une fenetre, cela
ne fonctionne pas (pb de " mal placé). J ai essayé en mettant un \", pas
mieux.

je l appelle :
HExécuteRequête(ma_requete, hRequêteDéfaut, 4, filtre_date1,
filtre_date2)
ou filtre_date1 et filtre_date2 sont des combo rempli des annees :

i est un entier
j est un entier = 0
POUR i = 2000 A Gauche(DateSys(),4)
ListeAjoute(MoiMême, i)
j = j+1
FIN
MoiMême = j

Voila donc, je ne sais pas d ou provient le pb (mauvais appel, requete
mal formulée, ...)
Merci de votre aide.

Manu

8 réponses

Avatar
jacques trepp
Manuel Pavy wrote:
Bonjour,
j aimerais faire une requete sur un champs date en MySQL. Seulement,
seule l année m intéresse.
j ai donc une requete qui resssemble à ca :
SELECT <tous_mes_champs>
FROM <les_tables_concernees>
WHERE <champ_filtre1> = {param1}
and <filtreDate1> = "{param2}-01-01"
and <filtreDate2> <= "{param3}-12-31"

Lorsque je teste cette requete seule (a l aide de l assistant de test
de requete WD), j ai ce qu il me faut. Mais intégrer dans une
fenetre, cela ne fonctionne pas (pb de " mal placé). J ai essayé en
mettant un ", pas mieux.

je l appelle :
HExécuteRequête(ma_requete, hRequêteDéfaut, 4, filtre_date1,
filtre_date2)
ou filtre_date1 et filtre_date2 sont des combo rempli des annees :

i est un entier
j est un entier = 0
POUR i = 2000 A Gauche(DateSys(),4)
ListeAjoute(MoiMême, i)
j = j+1
FIN
MoiMême = j

Voila donc, je ne sais pas d ou provient le pb (mauvais appel, requete
mal formulée, ...)
Merci de votre aide.

Manu



bonjour,
pourquoi ne pas utiliser YEAR(tadate) dans ta requète ?
cordialement

--
Jacques TREPP
AlbyGest


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.690 / Virus Database: 451 - Release Date: 22/05/2004
Avatar
Manuel Pavy
Oui, merci, c est vrai que j y avais pas pensé, je partais vers une solution
windev.
Mais, j ai essayé, et meme probleme !
Le test de requete sous WD marche correctement mais le compilateur trouve un
warning et lors de l execution, il aime pas la parenthese apres YEAR :
SELECT <tous_mes_champs>
FROM <les_tables_concernees>
WHERE <champ_filtre1> = {param1}
and YEAR(<filtreDate1>) >= {param2}
and YEAR(<filtreDate2>) <= {param3}

Voila, merci quand meme pour l astuce, je la garde.

Manu

jacques trepp a écrit :

Manuel Pavy wrote:
> Bonjour,
> j aimerais faire une requete sur un champs date en MySQL. Seulement,
> seule l année m intéresse.
> j ai donc une requete qui resssemble à ca :
> SELECT <tous_mes_champs>
> FROM <les_tables_concernees>
> WHERE <champ_filtre1> = {param1}
> and <filtreDate1> = "{param2}-01-01"
> and <filtreDate2> <= "{param3}-12-31"
>
> Lorsque je teste cette requete seule (a l aide de l assistant de test
> de requete WD), j ai ce qu il me faut. Mais intégrer dans une
> fenetre, cela ne fonctionne pas (pb de " mal placé). J ai essayé en
> mettant un ", pas mieux.
>
> je l appelle :
> HExécuteRequête(ma_requete, hRequêteDéfaut, 4, filtre_date1,
> filtre_date2)
> ou filtre_date1 et filtre_date2 sont des combo rempli des annees :
>
> i est un entier
> j est un entier = 0
> POUR i = 2000 A Gauche(DateSys(),4)
> ListeAjoute(MoiMême, i)
> j = j+1
> FIN
> MoiMême = j
>
> Voila donc, je ne sais pas d ou provient le pb (mauvais appel, requete
> mal formulée, ...)
> Merci de votre aide.
>
> Manu

bonjour,
pourquoi ne pas utiliser YEAR(tadate) dans ta requète ?
cordialement

--
Jacques TREPP
AlbyGest

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.690 / Virus Database: 451 - Release Date: 22/05/2004


Avatar
jacques trepp
Manuel Pavy wrote:
Oui, merci, c est vrai que j y avais pas pensé, je partais vers une
solution windev.
Mais, j ai essayé, et meme probleme !
Le test de requete sous WD marche correctement mais le compilateur
trouve un warning et lors de l execution, il aime pas la parenthese
apres YEAR : SELECT <tous_mes_champs>
FROM <les_tables_concernees>
WHERE <champ_filtre1> = {param1}
and YEAR(<filtreDate1>) >= {param2}
and YEAR(<filtreDate2>) <= {param3}



En fait, je n'utilise Mysql qu'avec les acces alter natifs. Je peux donc
rester très près de la syntaxe de base au niveau des requètes, et très
souvent, un copier/coller de sqlyog vers mon code windev suffit. :)
désolé de ne pas pouvoir t'aider plus, mais je débute ...
cordialement

--
Jacques TREPP
AlbyGest


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.690 / Virus Database: 451 - Release Date: 22/05/2004
Avatar
Manuel Pavy
Bien, finalement PCSoft a fini par me répondre :
Il propose :

Scondition1 est une chaine
Scondition2 est une chaine

Scondition1 = NomComboDate1 + "-01-01"
Scondition2 = NomComboDate2 + "-12-31"

HExécuteRequête(ma_requete, hRequêteDéfaut, <cond1>, Scondition1 ,
Scondition2)

avec la premiere requete. Mais comme ca ne marchait pas, j suis passé par :
Scondition1 est une chaine
Scondition2 est une chaine

Scondition1 = NomComboDate1+ "-01-01"
Scondition2 = (NomComboDate2+1)+ "-01-01"

HExécuteRequête(ma_requete, hRequêteDéfaut, <cond1>, Scondition1 ,
Scondition2)

avec un signe < à ma requete au lieu de <=.

N empeche, je ne comprend pas pourquoi toutes les fonctions ne passent pas.
Qu'est ce qu'un accès natif en d autres termes ? je pensais que
(schématiquement) c'etait juste un tuyau qui permettait de parler
directement avec le SGBD, mais apparemment, c est un peu plus compliqué.
Une recherche google sur "acces natif" ne renvoie que des sites parlant de
WinDev, est ce un terme qui lui est propre ?

Merci,


Manu




jacques trepp a écrit :

Manuel Pavy wrote:
> Oui, merci, c est vrai que j y avais pas pensé, je partais vers une
> solution windev.
> Mais, j ai essayé, et meme probleme !
> Le test de requete sous WD marche correctement mais le compilateur
> trouve un warning et lors de l execution, il aime pas la parenthese
> apres YEAR : SELECT <tous_mes_champs>
> FROM <les_tables_concernees>
> WHERE <champ_filtre1> = {param1}
> and YEAR(<filtreDate1>) >= {param2}
> and YEAR(<filtreDate2>) <= {param3}
>
En fait, je n'utilise Mysql qu'avec les acces alter natifs. Je peux donc
rester très près de la syntaxe de base au niveau des requètes, et très
souvent, un copier/coller de sqlyog vers mon code windev suffit. :)
désolé de ne pas pouvoir t'aider plus, mais je débute ...
cordialement

--
Jacques TREPP
AlbyGest

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.690 / Virus Database: 451 - Release Date: 22/05/2004


Avatar
Romuald.besset
Manuel Pavy wrote:

Bien, finalement PCSoft a fini par me répondre :
Il propose :

Scondition1 est une chaine
Scondition2 est une chaine

Scondition1 = NomComboDate1 + "-01-01"
Scondition2 = NomComboDate2 + "-12-31"

HExécuteRequête(ma_requete, hRequêteDéfaut, <cond1>, Scondition1 ,
Scondition2)

avec la premiere requete. Mais comme ca ne marchait pas, j suis passé par :
Scondition1 est une chaine
Scondition2 est une chaine

Scondition1 = NomComboDate1+ "-01-01"
Scondition2 = (NomComboDate2+1)+ "-01-01"

HExécuteRequête(ma_requete, hRequêteDéfaut, <cond1>, Scondition1 ,
Scondition2)

avec un signe < à ma requete au lieu de <=.

N empeche, je ne comprend pas pourquoi toutes les fonctions ne passent pas.
Qu'est ce qu'un accès natif en d autres termes ? je pensais que
(schématiquement) c'etait juste un tuyau qui permettait de parler
directement avec le SGBD, mais apparemment, c est un peu plus compliqué.
Une recherche google sur "acces natif" ne renvoie que des sites parlant de
WinDev, est ce un terme qui lui est propre ?

Merci,


Manu

[cut]




Effectivement un accès natif est un peu plus complexe !
Et principalement sur les dates !
il faut noter que :
- les dates des bases SQL sont des timestamp !
- les ordres SQL ne sont pas strictement équivalents entres les bases
SQL et si les ordres y sont standards, les fonctions ne le sont pas
systématiquement... avec les écarts potentiels.
++ E&B
Avatar
Roumegou
Romuald.besset vient de nous annoncer :
N empeche, je ne comprend pas pourquoi toutes les fonctions ne passent pas.
Qu'est ce qu'un accès natif en d autres termes ? je pensais que
(schématiquement) c'etait juste un tuyau qui permettait de parler
directement avec le SGBD, mais apparemment, c est un peu plus compliqué.
Une recherche google sur "acces natif" ne renvoie que des sites parlant de
WinDev, est ce un terme qui lui est propre ?





L'accès est vraiment natif si tu utilises des sqlexec. Là, tu dois
pouvoir tout faire executer en natif.
(à quelque exception comme les param en sortie sur les PS ou les
datalinks, mais ça c'est pour Oracle)

Ce qui ne doit pas l'être, c'est la couche WDLangage HF qui doit
composer avec plusieurs SGBD, et le HexecuteRequete ne semble pas avoir
les memes caractéristiques qu'un sqlexec.

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Manuel Pavy
Ok, merci pour ces précisions.
J ai effectivement essayé de reprendre tous mes HexecuteRequete en SQLExec à un
moment, mais j'avais quelques erreurs, je me suis dit que c'etait de l ordre de la
finition, pour rendre l'appli evolutive une fois qu elle etait construite.

Manu

Roumegou a écrit :

Romuald.besset vient de nous annoncer :
>> N empeche, je ne comprend pas pourquoi toutes les fonctions ne passent pas.
>> Qu'est ce qu'un accès natif en d autres termes ? je pensais que
>> (schématiquement) c'etait juste un tuyau qui permettait de parler
>> directement avec le SGBD, mais apparemment, c est un peu plus compliqué.
>> Une recherche google sur "acces natif" ne renvoie que des sites parlant de
>> WinDev, est ce un terme qui lui est propre ?

L'accès est vraiment natif si tu utilises des sqlexec. Là, tu dois
pouvoir tout faire executer en natif.
(à quelque exception comme les param en sortie sur les PS ou les
datalinks, mais ça c'est pour Oracle)

Ce qui ne doit pas l'être, c'est la couche WDLangage HF qui doit
composer avec plusieurs SGBD, et le HexecuteRequete ne semble pas avoir
les memes caractéristiques qu'un sqlexec.

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)


Avatar
Romuald.besset
Roumegou wrote:
Romuald.besset vient de nous annoncer :

N empeche, je ne comprend pas pourquoi toutes les fonctions ne
passent pas.
Qu'est ce qu'un accès natif en d autres termes ? je pensais que
(schématiquement) c'etait juste un tuyau qui permettait de parler
directement avec le SGBD, mais apparemment, c est un peu plus compliqué.
Une recherche google sur "acces natif" ne renvoie que des sites
parlant de
WinDev, est ce un terme qui lui est propre ?






L'accès est vraiment natif si tu utilises des sqlexec. Là, tu dois
pouvoir tout faire executer en natif.
(à quelque exception comme les param en sortie sur les PS ou les
datalinks, mais ça c'est pour Oracle)

Ce qui ne doit pas l'être, c'est la couche WDLangage HF qui doit
composer avec plusieurs SGBD, et le HexecuteRequete ne semble pas avoir
les memes caractéristiques qu'un sqlexec.




oui ! merci et pardon.
++ R&B