Discussion: bde paradox et date
Afficher un message
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
 
Page generated in 0,06133 seconds with 9 queries