Comparaison entre 2 date sur sql [Résolu]

Signaler
Messages postés
37
Date d'inscription
lundi 23 août 2010
Statut
Membre
Dernière intervention
18 avril 2014
-
 debutant -
sharif
Select *
From "E:\MAINTENANCE\DataBase\Capteur.dbf"
Where REPARE_LE > '01/02/2000' AND REPARE_LE < '28/03/2001'

en executant cette commande DELPHI m'affiche un mesdsage d'erreur
 'TYPE MISMATCH IN EXPRESSION'
 par contre si je change les dates ca marche  : exemple
Select *
From "E:\MAINTENANCE\DataBase\Capteur.dbf"
Where REPARE_LE > '01/02/2000' AND REPARE_LE < '28/03/2005'

2 réponses

Messages postés
263
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
28 avril 2021
13
Salut,
type
    ODBCDateTimeFormats = ( FormatDate, FormatHeure, FormatDateHeure);

//Fonction pour mettre date et heure au format sql
function DateTimeToODBCDatetime(DateTime: TDateTime; Format: ODBCDateTimeFormats):string;
begin
    case Format of
        FormatDate : Result := #123' d ' +QuotedStr(FormatDateTime('yyyy-mm-dd',DateTime))+'}';
        FormatHeure: Result := #123' t ' +QuotedStr(FormatDateTime('hh:nn:ss',DateTime))+'}';
        FormatDateHeure : Result := #123' ts '+QuotedStr(FormatDateTime('yyyy-mm-dd hh:nn:ss',DateTime))+'}';
    end;
end;

procedure ...
begin
    ...
    ADOQuery1.Close;
    ADOQuery1.SQL.Text:='SELECT Table.DJourn FROM Table WHERE (DJourn > '+DateTimeToODBCDatetime(StrToDateDef('31/07/2010',Now),FormatDate)+
        ' AND DJourn < '+DateTimeToODBCDatetime(StrToDateDef('01/09/2010',Now),FormatDate)+')';
    ADOQuery1.Open;
    ...
end;
Retourne les dates d'août. 

@+Yanb
Merci pour les clarifications
Messages postés
37
Date d'inscription
lundi 23 août 2010
Statut
Membre
Dernière intervention
18 avril 2014

sharif
bien recu; je te remerci infiniment
mais malhuereusement ce code ne fonctionne pas chez moi
car avec ADOQuery; delphi envoi 1 message d'erreur "missing connection or connectio string"
et avec QUERY; delphi envoi 1 message d'erreur "Invalide uses of keyword, Token: d; Line Number 1."
voici le code avec query
///////////////////////////////////////////////
procedure TForm1.Button8Click(Sender: TObject);
begin
Query1.active := false;
Query1.SQL.Clear;
Query1.SQL.Text:='SELECT * FROM "E:\MAINTENANCE\DataBase\Capteur.dbf" WHERE (REPARE_LE > '+DateTimeToODBCDatetime(StrToDateDef('11/09/2002',Now),FormatDate)+
' AND REPARE_LE < '+DateTimeToODBCDatetime(StrToDateDef('01/09/2006',Now),FormatDate)+')';
Query1.active := true;
end;

////////////////////////////////////////////

mais; veuilliez m'expliquer c qouio la diff entre query et adoquery

une autre qustion
je veut recuperer une valeur de EDIT1.TEXT et l'injecter dans une reqete
mais comment faire pour avoir les resultas de la recherche sans tenir compte des majiscule et minisculdans le edit1.text exemple
pour edit1.text= 'Bon' ou edit1.text='bon' ou edit1.text='BOn' ext..
les resultas doivent etre les meme

comment faire pour avoir une DataBase partagee sur plusieur station avec plusier application
en evitant violation d'acces
merci encore