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é.
|