Delphi et access /dbgrid

Description

Ayant cherché à nombreuse reprise sur le net sans de rééel conclusion une explication d'accés à access et à l'interconnexion avec une dbgrid, j'ai enfin réussi à faire une synthése de quelques trucs.
Le source suivant donne les informations suivantes :
Accés à la base de données access
Connexion à une DBGRid
Filtre sur des dates (et c'est pas du kuxe d'avoir un vrai exemple)
Between
Filtre date précise
Filtre Texte (plus simple)

Pour les novice, comme moi, il faudra, cliquer sur l'icone ADO dans l'onglet Design de l'éditeur Delphi
A gauche vous avez dans objectInspector zone Database ConnectionString cliquez sur ....
Boite de dialogue
cliquez sur Build
Onglez connexion
cliquez sur ...de la zone 1 et pointez sur la base de données DataBase.mdb
Cliquez sur testez la connexion
Message de dialogue de victoire

Source / Exemple :


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ADODB, DB, Grids, DBGrids, StdCtrls;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Pour fonctionner directement il faut que la requete soit active : Miscellaneous Active TRUE

procedure TForm1.Button1Click(Sender: TObject);
begin
 AdoQuery1.SQL.Clear;
 AdoQuery1.SQL.Add('Select * From TableTest Where ChampTXT='+QuotedStr('TEST1'));
 AdoQuery1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 AdoQuery1.SQL.Clear;
 AdoQuery1.SQL.Add('Select * From TableTest');// Where ChampTXT='+QuotedStr('*'));
 AdoQuery1.Open;
end;

procedure TForm1.Button3Click(Sender: TObject);
Var
  Chaine : String;
  Date   : TDateTime;
  Year,Month,Day : Word;
  Hour,Min,Sec,MSec : Word;

begin
 Date := StrToDateTime('11/11/2007 11:09:05');
 DecodeDate (Date,Year,Month,Day);
 DecodeTime (Date,Hour,Min,Sec,MSec);

 // FONCTIONNE AdoQuery1.SQL.Clear;
 // FONCTIONNE AdoQuery1.SQL.Add('Select * From TableTest Where ChampDate=#03/03/2007#');
 AdoQuery1.SQL.Clear;
 // INFO FORUM WHERE (Cdate(checktime) = Date()) And Hour(checktime) > 11 And Minute(checktime) > 11 And Second(checktime) > 43;
 // Marche pas AdoQuery1.SQL.Add('Select * From TableTest Where ChampDate=#11/11/2007 11:09:05#');
 // FONCTIONNE AdoQuery1.SQL.Add('Select * From TableTest Where (Int(ChampDate)=#11/11/2007#)');// And Hour(ChampDate)>11');
 // FONCTIONNE AdoQuery1.SQL.Add('Select * From TableTest Where (Int(ChampDate)=#11/11/2007#) And (Hour(ChampDate)=11)');
 // FONCTIONNE AdoQuery1.SQL.Add('Select * From TableTest Where (Int(ChampDate)=#11/11/2007#) And (Hour(ChampDate)=11) And (Minute(ChampDate)=09)And (Second(ChampDate)=05)');
 AdoQuery1.SQL.Add('Select * From TableTest Where (Int(ChampDate)=#'+
    IntToStr(Day)+'/'+
    IntToStr(Month)+'/'+
    IntToStr(Year)+'#)'+
    'And (Hour(ChampDate)='+IntToStr(Hour)+') '+
    'And (Minute(ChampDate)='+IntToStr(Min)+')'+
    'And (Second(ChampDate)='+IntToStr(Sec)+')');

 AdoQuery1.Open;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
 AdoQuery1.SQL.Clear;
 AdoQuery1.SQL.Add('Select * From TableTest ' +
 'Where ((Int(ChampDate)>#10/10/2007#) And ' +
 '(Int(ChampDate)<#12/11/2007#)) Or ' +
 '(Int(ChampDate)=#10/10/2007#) Or ' +
 '(Int(ChampDate)=#12/10/2007#)');

 AdoQuery1.Open;
end;

end.

Conclusion :


J'espére que ce source servira à ceux qui comme moi on galérait pour trouver un fonctionnement plus ou moins sympatique entre Delphi

Comme c'est mon premier source pardon pour les écarts avec la régle.
Je ferais mieux la prochaine fois.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.