Exemple de logiciel de bbd access avec adoconnection

Description

J'avais envie d'un petit programme plus sympa que ma bdd access, alors il y a 2 semaines je me suis lancé a essayer Delphi (je n'y avais jamais touché auparavant, j'etais resté a la bonne vieille epoque du basic, et un peu de Flash).
Je me suis mis a lire quelques tuto, j'ai telechargé et essayé de comprendre avec acharnement certaines sources postées sur ce site, beaucoup de recherches sur internet, mais surtout une grosse dose de reflexion et de logique.
Je suis finalement arrivé à faire ce petit programme qui regroupe pas mal de petites choses interessantes pour les autres débutants, avec entre autres :
- Des requetes ADO,
- Resultats dans le dbgrid affiché par ordre alphabetique,
- Ajout, suppression et modifications sur des edit, memo, combobox et checkbox,
- Interception de la touche Entrée dans le Edit de recherche,
- Boite de dialogue pour confirmer une suppression, ...

Source / Exemple :


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls, Mask, DBCtrls, ExtCtrls, ImgList,
  Buttons, GIFImg, ExtDlgs, JPEG;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    BtnApropos: TButton;
    GroupActions: TGroupBox;
    BtnMesJeux: TBitBtn;
    Label8: TLabel;
    BtnAjout: TBitBtn;
    BtnModif: TBitBtn;
    BtnDelete: TBitBtn;
    BtnQuitter: TBitBtn;
    GroupFiche: TGroupBox;
    DB_numero: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    LabelNumero: TLabel;
    LabelRegion: TLabel;
    LabelSauv: TLabel;
    LabelTaille: TLabel;
    LabelCat: TLabel;
    LabelURL: TLabel;
    DB_region: TDBEdit;
    DB_sauv: TDBEdit;
    DB_taille: TDBEdit;
    DB_categorie: TDBEdit;
    DB_url: TDBMemo;
    DB_titre: TDBMemo;
    RadioGroup1: TRadioGroup;
    Edit1: TEdit;
    BtnChercher: TBitBtn;
    procedure Button1Click(Sender: TObject);
    procedure BtnMesJeuxClick(Sender: TObject);
    procedure BtnChercherClick(Sender: TObject);
    procedure BtnAjoutClick(Sender: TObject);
    procedure BtnModifClick(Sender: TObject);
    procedure BtnDeleteClick(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure BtnQuitterClick(Sender: TObject);
    procedure BtnAproposClick(Sender: TObject);

  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

uses Unit2, Apropos, uDm;

{$R *.dfm}

procedure TForm1.BtnMesJeuxClick(Sender: TObject);
begin
With Dm.AdoQuery1 do
  begin
  SQL.Clear;
  SQL.Add('Select * From Jeux Where Possède=True');
  SQL.Add ('Order by Titre asc');
  Open;
  end;
end;

procedure TForm1.BtnAproposClick(Sender: TObject);
begin
form3.show;
end;

procedure TForm1.BtnChercherClick(Sender: TObject);
begin //Recherche si le bouton Radio "par titres" est selectionné
 Dm.AdoQuery1.SQL.Clear;
  if RadioGroup1.Buttons[0].checked=true then with Dm.AdoQuery1 do begin
    SQL.Add('Select * From Jeux Where Titre Like '+QuotedStr('%'+Edit1.Text+'%'));
    SQL.Add ('Order by Titre asc');
    Open;
end;
begin //Recherche si le bouton radio "par numero" est selectionné
  if RadioGroup1.Buttons[1].Checked=true then with Dm.AdoQuery1 do begin
    SQL.Add('Select * from Jeux Where Numero Like '+QuotedStr(Edit1.Text));
    Open;
end;
   {Si le SQL ne trouve aucun enregistrement alors affichier le message}
  if Dm.AdoQuery1.RecordCount<>0 then show else ShowMessage('Aucun jeu trouvé');
  edit1.clear;
  end;
end;

procedure TForm1.BtnAjoutClick(Sender: TObject);
begin
with form2 do
  begin
// Mettre une valeur vide dans chaque champs à remplir
  Edit1.Text:='';
  Edit2.Text:='';
  Edit3.Text:='';
  Memo1.Text:='';
  ComboBox1.Text:='';
  ComboBox2.Text:='';
  ComboBox3.Text:='';
  CheckBox1.Checked:=False;
  // Je nomme la nouvelle fenêtre "nouvelle fiche" car le bouton de validation
  // réagira différement suivant son nom
  caption:='Nouvelle Fiche';
  showmodal
  end;
end;

procedure TForm1.BtnModifClick(Sender: TObject);
begin
with form2 do
  begin
  // la même fenêtre que précedemment est appelée, mais cette fois-ci on l'appelera "Modifier"
  // Cette fois-ci on ne demandera pas à avoir des champs vide, mais de reprendre les
  // champs de la fiche consultée
  Caption:='Modifier';
  Edit1.Text:=Dm.ADOQuery1.fieldbyname('Numero').AsString;
  Edit2.Text:=Dm.ADOQuery1.fieldbyname('Titre').AsString;
  ComboBox1.Text:=Dm.ADOQuery1.fieldbyname('Region').AsString;
  ComboBox2.Text:=Dm.ADOQuery1.fieldbyname('Sauvegarde').AsString;
  combobox3.Text:=Dm.ADOQuery1.fieldbyname('Taille').AsString;
  Edit3.Text:=Dm.ADOQuery1.fieldbyname('Catégorie').AsString;
  Memo1.Text:=Dm.ADOQuery1.fieldbyname('URL').Value;
  CheckBox1.Checked:=Dm.ADOQuery1.fieldbyname('Possède').Value;
  Show;
  end;
end;

procedure TForm1.BtnQuitterClick(Sender: TObject);
begin
close;
end;

procedure TForm1.BtnDeleteClick(Sender: TObject);
begin
// Le bloc case-of regarde la valeur renvoyée par la boîte de dialogue, puis
// vérifie s'il s'agit de mrOK ou de mrCanceled, et effectue l'instruction adaptée
case MessageDlg('Voulez-vous supprimer cette fiche?',mtConfirmation, mbOKCancel, 0) of
  mrOK: Dm.ADOQuery1.Delete;
  mrCancel: Close;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with Dm.ADOQuery1 do
  begin
  SQL.Clear;
  SQL.Add('Select * From Jeux Where Titre Like '+QuotedStr('%'+Edit1.Text+'%'));
  Open;
  end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then // #13 = code de la touche Entrée
  begin
    BtnChercherClick(Sender);
      // ainsi, la touche Entrée commande
      //le chargement de la page
    key:=#0; // pour éviter d'entendre un son
  end;
end;

end.

===================================================================

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, Mask, Buttons, ExtCtrls, ExtDlgs;

type
  TForm2 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    CheckBox1: TCheckBox;
    BtnValider: TBitBtn;
    BtnSupprimer: TBitBtn;
    Memo1: TMemo;
    procedure BtnSupprimerClick(Sender: TObject);
    procedure BtnValiderClick(Sender: TObject);

  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form2: TForm2;

implementation

uses Unit1, uDm;

{$R *.dfm}

procedure TForm2.BtnValiderClick(Sender: TObject);
begin
if form2.caption='Nouvelle Fiche' then      // Si la fenetre s'appelle "Nouvelle fiche"
   Dm.ADOQuery1.Insert                   // on ajoute une nouvelle entrée dans notre BDD
else                  // Sinon (donc par défaut c'est qu'elle s'appelle "Modifier"
Dm.ADOQuery1.edit; // on remplace chaque champs de la Form1 par les valeurs qu'on a mis
Dm.ADOQuery1.FieldByName('Numero').Value:=edit1.Text;
Dm.ADOQuery1.FieldByName('Titre').Value:=edit2.text;
Dm.ADOQuery1.fieldbyname('Region').value:=combobox1.text;
Dm.ADOQuery1.fieldbyname('Sauvegarde').value:=combobox2.text;
Dm.ADOQuery1.fieldbyname('Taille').value:=combobox3.text;
Dm.ADOQuery1.FieldByName('Catégorie').Value:=edit3.Text;
Dm.ADOQuery1.fieldbyname('URL').Value:=Memo1.Text;
Dm.ADOQuery1.fieldbyname('Possède').Value:=CheckBox1.Checked;
Dm.ADOQuery1.Post;
close;
end;

procedure TForm2.BtnSupprimerClick(Sender: TObject);
begin
  close;
end;

end.

Conclusion :


2 semaines de travail qui m'ont énormément apporté, et que je désire partager avec les autres débutants qui cherchent la syntaxe de certains codes. Je compte faire encore evoluer ce petit programme afin d'aller encore plus loin dans mes connaissances

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.