PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > nzn.fr.delphi > bde paradox et date
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
bde paradox et date

Réponse
 
LinkBack Outils de la discussion
Vieux 12/10/2007, 22h24   #1
Ameno
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut bde paradox et date

Bonjour,
J'arrive pas a exécuter une requette sql ou il ya un champ date.

data.Query2.active:=False;
data.Query2.sql.Clear;
data.Query2.sql.Add( 'SELECT sum(mt_régler) as Total FROM T_Ventes');
data.Query2.sql.Add ('where type=''Facture'' or type=''BL'' and
regler=true and Date=:dte');
data.Query2.ParamByName(':dte').AsDate:=strtodate( formatdatetime('mm/dd/yyyy',now));
data.Query2.Active:=True;
totalca:=data.Query2.FieldByName('Total').AsCurren cy;

Merci pour l'aide
  Réponse avec citation
Vieux 12/10/2007, 23h15   #2
TedIF
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: bde paradox et date

> Bonjour,
> J'arrive pas a exécuter une requette sql ou il ya un champ date.
>
> data.Query2.active:=False;
> data.Query2.sql.Clear;
> data.Query2.sql.Add( 'SELECT sum(mt_régler) as Total FROM T_Ventes');
> data.Query2.sql.Add ('where type=''Facture'' or type=''BL'' and regler=true
> and Date=:dte');
> data.Query2.ParamByName(':dte').AsDate:=strtodate( formatdatetime('mm/dd/yyyy',now));
> data.Query2.Active:=True;
> totalca:=data.Query2.FieldByName('Total').AsCurren cy;
>
> Merci pour l'aide


pourquoi passer par un passage de paramètre dans une construction de
requête dynamique ?

--

Dominique


  Réponse avec citation
Vieux 12/10/2007, 23h21   #3
Faust
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: bde paradox et date

/_TedIF_ a écrit/ :
>> Bonjour,
>> J'arrive pas a exécuter une requette sql ou il ya un champ date.
>>
>> data.Query2.active:=False;
>> data.Query2.sql.Clear;
>> data.Query2.sql.Add( 'SELECT sum(mt_régler) as Total FROM T_Ventes');
>> data.Query2.sql.Add ('where type=''Facture'' or type=''BL'' and regler=true
>> and Date=:dte');
>> data.Query2.ParamByName(':dte').AsDate:=strtodate( formatdatetime('mm/dd/yyyy',now));
>> data.Query2.Active:=True;
>> totalca:=data.Query2.FieldByName('Total').AsCurren cy;
>>
>> Merci pour l'aide


> pourquoi passer par un passage de paramètre dans une construction de requête
> dynamique ?


- pour éviter d'avoir à encoder les dates en string
- parce que la requête va peut etre être réexécutée plus loin
- parce que c'est plus lisible

--
*/Teträm/*
http://www.tetram.org

"Tape d'abord, tape ensuite, et tape pour finir" - Proverbe Troll


  Réponse avec citation
Vieux 12/10/2007, 23h33   #4
Faust
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: bde paradox et date

/_Ameno_ a exposé/ :
> Bonjour,
> J'arrive pas a exécuter une requette sql ou il ya un champ date.


> data.Query2.active:=False;
> data.Query2.sql.Clear;
> data.Query2.sql.Add( 'SELECT sum(mt_régler) as Total FROM T_Ventes');
> data.Query2.sql.Add ('where type=''Facture'' or type=''BL'' and regler=true
> and Date=:dte');
> data.Query2.ParamByName(':dte').AsDate:=strtodate( formatdatetime('mm/dd/yyyy',now));
> data.Query2.Active:=True;
> totalca:=data.Query2.FieldByName('Total').AsCurren cy;


> Merci pour l'aide


beaucoup de choses à dire:

data.Query2.ParamByName(':dte').AsDate:=strtodate( formatdatetime('mm/dd/yyyy',now));

t'as pas plus compliqué encore??????

tu prends la peine de mettre un paramètre, de le renseigner AsDate mais
non, il faut que tu te casse la tête à le convertir en string et à la
reconvertir en Date (on dirait du code de la vcl pour le coup.... et
crois moi c'est pas forcément un compliment)
data.Query2.ParamByName(':dte').AsDate:= trunc(now);
c'est bien suffisant

sinon, attention à la priorité des and et des or
ce que tu as ecrit revient à
type = facture or ((type = bl and regler = true) and date = :dte)
je suppose que tu voulais plutôt:
(type = ''Facture'' or type = ''BL'') and regler = true and Date = :dte
ou
type in (''Facture'', ''BL'') and regler = true and Date = :dte

une fois ce point réglé, deux choses:
- je ne sais pas quel moteur de base de données se cache derrière le
bde mais "regler = true", je connais très peu de moteur qui l'accepte
(et si tu utilise paradox, si tu as encore le temps, je te suggère
vivement d'y renoncer et d'utiliser, par exemple, firebird... embbed ou
non)
- Date est _très_ souvent un mot clé... comme nom champ c'est très très
très mal choisi... avec certains moteur ça passe (paradox notamment)
avec d'autre ça ne passe pas ou mal... donc encore une fois, en
fonction du moteur qui se cache derrière le bde le problème peut etre


enfin, dans ta requête, tu passe uniquement la date au paramètre dte...
c'est peut-etre voulu mais attention, si ton champ Date n'est pas
justement _uniquement_ de type date (comprendre en fait il est de type
date.heure) alors le test Date = trunc(now) ne sera vérifié QUE si Date
est à la date du jour à minuit pile (à la miliseconde près)

--
*/Teträm/*
http://www.tetram.org

« Chérie, viens à table, le murloc va refroidir ! »


  Réponse avec citation
Vieux 13/10/2007, 07h48   #5
BigGrizzly
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: bde paradox et date

Faust a écrit :
> data.Query2.ParamByName(':dte').AsDate:= trunc(now);


Il existe même la fonction Date.
  Réponse avec citation
Vieux 13/10/2007, 11h04   #6
Ameno
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: bde paradox et date

Faust a écrit :
> /_Ameno_ a exposé/ :
>> Bonjour,
>> J'arrive pas a exécuter une requette sql ou il ya un champ date.

>
>> data.Query2.active:=False;
>> data.Query2.sql.Clear;
>> data.Query2.sql.Add( 'SELECT sum(mt_régler) as Total FROM T_Ventes');
>> data.Query2.sql.Add ('where type=''Facture'' or type=''BL'' and
>> regler=true and Date=:dte');
>> data.Query2.ParamByName(':dte').AsDate:=strtodate( formatdatetime('mm/dd/yyyy',now));
>>
>> data.Query2.Active:=True;
>> totalca:=data.Query2.FieldByName('Total').AsCurren cy;

>
>> Merci pour l'aide

>
> beaucoup de choses à dire:
>
> data.Query2.ParamByName(':dte').AsDate:=strtodate( formatdatetime('mm/dd/yyyy',now));
>
>
> t'as pas plus compliqué encore??????
>
> tu prends la peine de mettre un paramètre, de le renseigner AsDate mais
> non, il faut que tu te casse la tête à le convertir en string et à la
> reconvertir en Date (on dirait du code de la vcl pour le coup.... et
> crois moi c'est pas forcément un compliment)
> data.Query2.ParamByName(':dte').AsDate:= trunc(now);
> c'est bien suffisant
>
> sinon, attention à la priorité des and et des or
> ce que tu as ecrit revient à
> type = facture or ((type = bl and regler = true) and date = :dte)
> je suppose que tu voulais plutôt:
> (type = ''Facture'' or type = ''BL'') and regler = true and Date = :dte
> ou
> type in (''Facture'', ''BL'') and regler = true and Date = :dte
>
> une fois ce point réglé, deux choses:
> - je ne sais pas quel moteur de base de données se cache derrière le bde
> mais "regler = true", je connais très peu de moteur qui l'accepte (et si
> tu utilise paradox, si tu as encore le temps, je te suggère vivement d'y
> renoncer et d'utiliser, par exemple, firebird... embbed ou non)
> - Date est _très_ souvent un mot clé... comme nom champ c'est très très
> très mal choisi... avec certains moteur ça passe (paradox notamment)
> avec d'autre ça ne passe pas ou mal... donc encore une fois, en fonction
> du moteur qui se cache derrière le bde le problème peut etre là
>
> enfin, dans ta requête, tu passe uniquement la date au paramètre dte...
> c'est peut-etre voulu mais attention, si ton champ Date n'est pas
> justement _uniquement_ de type date (comprendre en fait il est de type
> date.heure) alors le test Date = trunc(now) ne sera vérifié QUE si Date
> est à la date du jour à minuit pile (à la miliseconde près)
>

Bonjour,
Merci pour votre explication.
J'arrive toujours pas a faire exécuter ma requette.
Voici l'erreur ( Invalid use of keyword. Tokern: Date=? Line Number: 2.)

Merci

  Réponse avec citation
Vieux 13/10/2007, 11h34   #7
BigGrizzly
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: bde paradox et date

Ameno a écrit :
> Faust a écrit :
>> /_Ameno_ a exposé/ :
>>> Bonjour,
>>> J'arrive pas a exécuter une requette sql ou il ya un champ date.

>>
>>> data.Query2.active:=False;
>>> data.Query2.sql.Clear;
>>> data.Query2.sql.Add( 'SELECT sum(mt_régler) as Total FROM T_Ventes');
>>> data.Query2.sql.Add ('where type=''Facture'' or type=''BL'' and
>>> regler=true and Date=:dte');
>>> data.Query2.ParamByName(':dte').AsDate:=strtodate( formatdatetime('mm/dd/yyyy',now));
>>>
>>> data.Query2.Active:=True;
>>> totalca:=data.Query2.FieldByName('Total').AsCurren cy;

>>
>>> Merci pour l'aide

>>
>> beaucoup de choses à dire:
>>
>> data.Query2.ParamByName(':dte').AsDate:=strtodate( formatdatetime('mm/dd/yyyy',now));
>>
>>
>> t'as pas plus compliqué encore??????
>>
>> tu prends la peine de mettre un paramètre, de le renseigner AsDate
>> mais non, il faut que tu te casse la tête à le convertir en string et
>> à la reconvertir en Date (on dirait du code de la vcl pour le coup....
>> et crois moi c'est pas forcément un compliment)
>> data.Query2.ParamByName(':dte').AsDate:= trunc(now);
>> c'est bien suffisant
>>
>> sinon, attention à la priorité des and et des or
>> ce que tu as ecrit revient à
>> type = facture or ((type = bl and regler = true) and date = :dte)
>> je suppose que tu voulais plutôt:
>> (type = ''Facture'' or type = ''BL'') and regler = true and Date = :dte
>> ou
>> type in (''Facture'', ''BL'') and regler = true and Date = :dte
>>
>> une fois ce point réglé, deux choses:
>> - je ne sais pas quel moteur de base de données se cache derrière le
>> bde mais "regler = true", je connais très peu de moteur qui l'accepte
>> (et si tu utilise paradox, si tu as encore le temps, je te suggère
>> vivement d'y renoncer et d'utiliser, par exemple, firebird... embbed
>> ou non)
>> - Date est _très_ souvent un mot clé... comme nom champ c'est très
>> très très mal choisi... avec certains moteur ça passe (paradox
>> notamment) avec d'autre ça ne passe pas ou mal... donc encore une
>> fois, en fonction du moteur qui se cache derrière le bde le problème
>> peut etre là
>>
>> enfin, dans ta requête, tu passe uniquement la date au paramètre
>> dte... c'est peut-etre voulu mais attention, si ton champ Date n'est
>> pas justement _uniquement_ de type date (comprendre en fait il est de
>> type date.heure) alors le test Date = trunc(now) ne sera vérifié QUE
>> si Date est à la date du jour à minuit pile (à la miliseconde près)
>>

> Bonjour,
> Merci pour votre explication.
> J'arrive toujours pas a faire exécuter ma requette.
> Voici l'erreur ( Invalid use of keyword. Tokern: Date=? Line Number: 2.)
>
> Merci
>

"date" de préférence. Car c'est un mot réservé.
  Réponse avec citation
Vieux 13/10/2007, 13h00   #8
Faust
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: bde paradox et date

/Après mure réflexion, _Ameno_ a écrit/ :
> Faust a écrit :
>> /_Ameno_ a exposé/ :
>>> Bonjour,
>>> J'arrive pas a exécuter une requette sql ou il ya un champ date.

>>
>>> data.Query2.active:=False;
>>> data.Query2.sql.Clear;
>>> data.Query2.sql.Add( 'SELECT sum(mt_régler) as Total FROM T_Ventes');
>>> data.Query2.sql.Add ('where type=''Facture'' or type=''BL'' and
>>> regler=true and Date=:dte');
>>> data.Query2.ParamByName(':dte').AsDate:=strtodate( formatdatetime('mm/dd/yyyy',now));
>>>
>>> data.Query2.Active:=True;
>>> totalca:=data.Query2.FieldByName('Total').AsCurren cy;

>>
>>> Merci pour l'aide

>>
>> beaucoup de choses à dire:
>>
>> data.Query2.ParamByName(':dte').AsDate:=strtodate( formatdatetime('mm/dd/yyyy',now));
>>
>> t'as pas plus compliqué encore??????
>>
>> tu prends la peine de mettre un paramètre, de le renseigner AsDate mais
>> non, il faut que tu te casse la tête à le convertir en string et à la
>> reconvertir en Date (on dirait du code de la vcl pour le coup.... et crois
>> moi c'est pas forcément un compliment)
>> data.Query2.ParamByName(':dte').AsDate:= trunc(now);
>> c'est bien suffisant
>>
>> sinon, attention à la priorité des and et des or
>> ce que tu as ecrit revient à
>> type = facture or ((type = bl and regler = true) and date = :dte)
>> je suppose que tu voulais plutôt:
>> (type = ''Facture'' or type = ''BL'') and regler = true and Date = :dte
>> ou
>> type in (''Facture'', ''BL'') and regler = true and Date = :dte
>>
>> une fois ce point réglé, deux choses:
>> - je ne sais pas quel moteur de base de données se cache derrière le bde
>> mais "regler = true", je connais très peu de moteur qui l'accepte (et si tu
>> utilise paradox, si tu as encore le temps, je te suggère vivement d'y
>> renoncer et d'utiliser, par exemple, firebird... embbed ou non)
>> - Date est _très_ souvent un mot clé... comme nom champ c'est très très
>> très mal choisi... avec certains moteur ça passe (paradox notamment) avec
>> d'autre ça ne passe pas ou mal... donc encore une fois, en fonction du
>> moteur qui se cache derrière le bde le problème peut etre là
>>
>> enfin, dans ta requête, tu passe uniquement la date au paramètre dte...
>> c'est peut-etre voulu mais attention, si ton champ Date n'est pas justement
>> _uniquement_ de type date (comprendre en fait il est de type date.heure)
>> alors le test Date = trunc(now) ne sera vérifié QUE si Date est à la date
>> du jour à minuit pile (à la miliseconde près)
>>

> Bonjour,
> Merci pour votre explication.
> J'arrive toujours pas a faire exécuter ma requette.
> Voici l'erreur ( Invalid use of keyword. Tokern: Date=? Line Number: 2.)


> Merci


pour compléter la réponse de BigGrizzly, il faut encadrer les noms de
champs et de table par des " s'ils correspondent aussi à des mots clés:

(type = ''Facture'' or type = ''BL'') and regler = true and "Date" =
:dte

--
*/Teträm/*
http://www.tetram.org

"On a toujours tort d'essayer d'avoir raison devant des gens qui ont
toutes les bonnes raisons de croire qu'ils n'ont pas tort !" - Raymond
Devos


  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 05h02.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,17201 seconds with 16 queries