OVH Cloud OVH Cloud

[WD7.5]Incohérence sur les requêtes

6 réponses
Avatar
Christophe COGNET
Bonjour,
quand je teste ma requête windev tout fonctionne bien j'ai le résultat que
j'attendais, si maintenant je prends le code SQL de cette requête et que je
l'exécute dans mon code j'ai un tout autre résultat un peu comme si certains
paramètres de sélections n'étaient pas pris en compte.
Si quelqu'un a la solution.
Merci

6 réponses

Avatar
Gégé sur Free
Christophe COGNET a écrit :
quand je teste ma requête windev tout fonctionne bien j'ai le résultat que
j'attendais, si maintenant je prends le code SQL de cette requête et que je
l'exécute dans mon code j'ai un tout autre résultat un peu comme si certains
paramètres de sélections n'étaient pas pris en compte.



Montre nous le texte
Avatar
Christophe COGNET
Voici mon code pour afficher ma requête paramétré ds une table

dReqSelectPeriodePTHB est une Source de Données
sChaineSQL est une chaîne
ChoixID est une chaîne
ChoixEv est une chaîne
SELON CmbServiceTrt
CAS 1
ChoixID="IDS17"
ChoixEv="EVS17"
CAS 2
ChoixID="IDS18"
ChoixEv="EVS18"
CAS 3
ChoixID="IDS19"
ChoixEv="EVS19"
CAS 4
ChoixID="IDS20"
ChoixEv="EVS20"
CAS 5
ChoixID="IDS21"
ChoixEv="EVS21"
CAS 6
ChoixID="IDS22"
ChoixEv="EVS22"

FIN
sChaineSQL="SELECT "+ChoixID+".IDPsydoc AS IDPsydoc,"+ChoixID+".Nom AS
Nom,"+...
ChoixID+".Prenom AS Prenom,"+ChoixID+".DateNaiss AS
DateNaiss,"+ChoixID+".Sexe AS Sexe,"+...
ChoixEv+".TypeAct AS TypeAct,"+ChoixEv+".DateDeb AS
DateDeb,"+ChoixEv+".DateFin AS DateFin,"+...
ChoixEv+".HebPar AS HebPar,"+ChoixEv+".HebPour AS HebPour FROM
"+ChoixID+","+ChoixEv+...
" WHERE "+ChoixID+".IDPsydoc = "+ChoixEv+".IDPsydoc AND (
"+ChoixEv+".TypeAct = 'PT' OR "+...
ChoixEv+".TypeAct = 'HB' ) AND ( "+ChoixEv+".DateDeb <= "+TxtDateFin+" AND
"+ChoixEv+".DateFin >= "+...
TxtDateDeb+" OR ("+ChoixEv+".DateFin = '' AND "+ChoixEv+".DateDeb < "+TxtDateFin+" ))"
Info(sChaineSQL)
Sablier(Vrai)
SI PAS HExécuteRequêteSQL(dReqSelectPeriodePTHB,hRequêteDéfaut,sChaineSQL)
ALORS
Erreur(ErreurInfo(errComplet))
FIN
TableSupprimeTout(Table_ReqSelectPeriodePTHB)
FichierVersTableMemoire(Table_ReqSelectPeriodePTHB,dReqSelectPeriodePTHB)
Saisie1 = TableOccurrence(Table_ReqSelectPeriodePTHB)
TableTrie(Table_ReqSelectPeriodePTHB,"IDPsydoc","DateDeb")
Sablier(Faux)


"Gégé sur Free" a écrit dans le message de
news:41a1a2c0$0$12671$
Christophe COGNET a écrit :
> quand je teste ma requête windev tout fonctionne bien j'ai le résultat


que
> j'attendais, si maintenant je prends le code SQL de cette requête et que


je
> l'exécute dans mon code j'ai un tout autre résultat un peu comme si


certains
> paramètres de sélections n'étaient pas pris en compte.

Montre nous le texte


Avatar
Manu Pavy
Salut,

Voici mon code pour afficher ma requête paramétré ds une table

dReqSelectPeriodePTHB est une Source de Données
sChaineSQL est une chaîne
ChoixID est une chaîne
ChoixEv est une chaîne
SELON CmbServiceTrt
CAS 1
ChoixID="IDS17"
ChoixEv="EVS17"
CAS 2
ChoixID="IDS18"
ChoixEv="EVS18"
CAS 3
ChoixID="IDS19"
ChoixEv="EVS19"
CAS 4
ChoixID="IDS20"
ChoixEv="EVS20"
CAS 5
ChoixID="IDS21"
ChoixEv="EVS21"
CAS 6
ChoixID="IDS22"
ChoixEv="EVS22"

FIN
sChaineSQL="SELECT "+ChoixID+".IDPsydoc AS IDPsydoc,"+ChoixID+".Nom A S
Nom,"+...
ChoixID+".Prenom AS Prenom,"+ChoixID+".DateNaiss AS
DateNaiss,"+ChoixID+".Sexe AS Sexe,"+...
ChoixEv+".TypeAct AS TypeAct,"+ChoixEv+".DateDeb AS
DateDeb,"+ChoixEv+".DateFin AS DateFin,"+...
ChoixEv+".HebPar AS HebPar,"+ChoixEv+".HebPour AS HebPour FROM
"+ChoixID+","+ChoixEv+...
" WHERE "+ChoixID+".IDPsydoc = "+ChoixEv+".IDPsydoc AND (
"+ChoixEv+".TypeAct = 'PT' OR "+...
ChoixEv+".TypeAct = 'HB' ) AND ( "+ChoixEv+".DateDeb <= "+TxtDateFi n+" AND
"+ChoixEv+".DateFin >= "+...
TxtDateDeb+" OR ("+ChoixEv+".DateFin = '' AND "+ChoixEv+".DateDeb <=
"+TxtDateFin+" ))"



A priori, ton modele de donnée est à remettre en cause (d'une part) :
plusieurs tables 'identiques' collectant les 'memes' infos.
Tu devrais plutot avoir une seule table IDS et EVS auxquels tu associes
une autre table ('numT' par exemple) qui te liste les enregistrements de
17 à 22.
Ta requete se resume alors à une simple union avec pour argument une
valeur qui se trouve dans 'numT'

Info(sChaineSQL)


Sinon, As tu essayé de le mettre dans un champs de saisie pour pouvoir
copier/coller dans le "requetteur" ? (parfois y a des trucs que tu vois
pas, genre guillemets, ou autre)


Manu
Avatar
Manu Pavy
> Ta requete se resume alors à une simple union avec pour argument une
valeur qui se trouve dans 'numT'



Oups, par union, j entendais *jointure*.

Manu
Avatar
Christophe COGNET
En fait je ne peux pas faire un seul fichier pour des raisons de structures
internes à ma société. En fait c'est ce que j'ai fait un copier coller du
requeteur dans mon code et sur le code SQL du requeteur cela fonctionne trés
bien mais dés que je le met dans mon code j'ai l'impression qu'il ne tient
pas compte des paramètres sur les dates.

"Manu Pavy" a écrit dans le message de
news:cnskfa$s2m$
Salut,

Voici mon code pour afficher ma requête paramétré ds une table

dReqSelectPeriodePTHB est une Source de Données
sChaineSQL est une chaîne
ChoixID est une chaîne
ChoixEv est une chaîne
SELON CmbServiceTrt
CAS 1
ChoixID="IDS17"
ChoixEv="EVS17"
CAS 2
ChoixID="IDS18"
ChoixEv="EVS18"
CAS 3
ChoixID="IDS19"
ChoixEv="EVS19"
CAS 4
ChoixID="IDS20"
ChoixEv="EVS20"
CAS 5
ChoixID="IDS21"
ChoixEv="EVS21"
CAS 6
ChoixID="IDS22"
ChoixEv="EVS22"

FIN
sChaineSQL="SELECT "+ChoixID+".IDPsydoc AS IDPsydoc,"+ChoixID+".Nom AS
Nom,"+...
ChoixID+".Prenom AS Prenom,"+ChoixID+".DateNaiss AS
DateNaiss,"+ChoixID+".Sexe AS Sexe,"+...
ChoixEv+".TypeAct AS TypeAct,"+ChoixEv+".DateDeb AS
DateDeb,"+ChoixEv+".DateFin AS DateFin,"+...
ChoixEv+".HebPar AS HebPar,"+ChoixEv+".HebPour AS HebPour FROM
"+ChoixID+","+ChoixEv+...
" WHERE "+ChoixID+".IDPsydoc = "+ChoixEv+".IDPsydoc AND (
"+ChoixEv+".TypeAct = 'PT' OR "+...
ChoixEv+".TypeAct = 'HB' ) AND ( "+ChoixEv+".DateDeb <= "+TxtDateFin+" AND
"+ChoixEv+".DateFin >= "+...
TxtDateDeb+" OR ("+ChoixEv+".DateFin = '' AND "+ChoixEv+".DateDeb < > "+TxtDateFin+" ))"



A priori, ton modele de donnée est à remettre en cause (d'une part) :
plusieurs tables 'identiques' collectant les 'memes' infos.
Tu devrais plutot avoir une seule table IDS et EVS auxquels tu associes
une autre table ('numT' par exemple) qui te liste les enregistrements de
17 à 22.
Ta requete se resume alors à une simple union avec pour argument une
valeur qui se trouve dans 'numT'

Info(sChaineSQL)


Sinon, As tu essayé de le mettre dans un champs de saisie pour pouvoir
copier/coller dans le "requetteur" ? (parfois y a des trucs que tu vois
pas, genre guillemets, ou autre)


Manu
Avatar
Christophe COGNET
Merci à tous pour vos réponses
en fait mes paramètres date n'étaient pas encadré de simples cotes


"Christophe COGNET" a écrit dans le message
de news:41a19bff$0$8202$
Bonjour,
quand je teste ma requête windev tout fonctionne bien j'ai le résultat que
j'attendais, si maintenant je prends le code SQL de cette requête et que


je
l'exécute dans mon code j'ai un tout autre résultat un peu comme si


certains
paramètres de sélections n'étaient pas pris en compte.
Si quelqu'un a la solution.
Merci