Delphi Base de Données

composant TQuery
 (CD-ROMDelphi.BD)



: Les projets Delphi


Objectif : L'objet TQuery permet de faire une requête SQL sur des tables d'une base de données. Les données qui proviennent de la requête, une fois qu'elle s'est correctement exécutée, sont disponibles sous la forme d'une liste d'enregistrements qui peuvent être lus comme on le fait avec un TTable.
 


La fiche principale, le code associé dans la unit
 

Exécuter le programme
 

Pour utiliser pratiquement le composant TQuery :



La fiche principale du  projet :

                                                                                                Remonter 
 



Le code de la Unit fiche principale :

unit uFQueryTest1;

{On verra ultérieurement comment affecter le contenu des tables
dont provient la requête si on essaie de modifier une des
enregistrements disponibles par le TQuery.

Conseil: pour ne pas devoir lancer le programme pour savoir
si la requête fonctionne ou pas, il est possible de demander à la
requête de s'exécuter directement en mode conception en faisant
passer la propriété "Active" du TQuery à True. Si il y a une erreur
SQL alors un message d'erreur apparaît (pas forcément très explicite)
indiquant la nature de l'erreur dans le SQL (c'est la seule source
d'information pour essayer de déboguer le code incorrect); et la propriété
"Active" refuse de passer à True. Il reste à modifier le SQL en
conséquence, puis à réessayer. Quand tout est correct, ne pas oublier
de remettre "Active" à Fals e dans le TQuery (sinon la requête
est toujours active même si on en n'a pas besoin).

Remarque: lorsqu'un TTable ou un TQuery a sa propriété "Active"
mise à True en mode conception (même si après elle est réaffectée
à False), l'objet TDataBase qui est connecté au TTable ou au TQuery
est connecté automatiquement sur le fichier de base de données
(sa propriété "Connected" passe à True); ce qui empêche de pouvoir
faire des modifications dessus par la suite(comme changer le chemin
de la base de données par programme). Une erreur survient alors à
l'exécution ("Impossible d'effectuer cette opération sur une table ouverte")
Il faut donc penser, avant d'exécuter
le programme, à remettre la propriété "Connected" du TDataBase à False.
}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBTables, Db, Buttons, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, Mask;

type
  TFQueryTest1 = class(TForm)
    Database1: TDatabase;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Query1: TQuery;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    Label1: TLabel;
    LEtat: TLabel;
    Memo1: TMemo;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  FQueryTest1: TFQueryTest1;

implementation

{$R *.DFM}

procedure TFQueryTest1.FormCreate(Sender: TObject);
begin
 DataBase1.Params[0]:='DATABASE NAME='+extractfilepath(application.exename)+'BaseAccess.mdb';
 DataBase1.connected:=true;
 Query1.SQL.savetofile(extractfilepath(application.exename)+'sql.txt');
 Memo1.Lines.Assign(Query1.SQL);
end;

procedure TFQueryTest1.SpeedButton1Click(Sender: TObject);
begin
 Query1.open;
 LEtat.caption:='Ouvert';
end;

procedure TFQueryTest1.SpeedButton2Click(Sender: TObject);
begin
 Query1.close;
 LEtat.caption:='Fermé';
end;

procedure TFQueryTest1.SpeedButton4Click(Sender: TObject);
begin
 Query1.SQL.clear;
 LEtat.caption:='Fermé';
 Memo1.Lines.assign(Query1.SQL);
end;

procedure TFQueryTest1.SpeedButton3Click(Sender: TObject);
begin
 Query1.SQL.loadfromfile(extractfilepath(application.exename)+'sql.txt');
 Memo1.Lines.assign(Query1.SQL);
end;

end.                                                                        Remonter 



EXECUTION DU PROGRAMME :