begin process at 2010 02 10 07:40:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

 > EXEMPLE DE LOGICIEL DE BBD ACCESS AVEC ADOCONNECTION

EXEMPLE DE LOGICIEL DE BBD ACCESS AVEC ADOCONNECTION


 Information sur la source

Note :
Aucune note
Catégorie :Base de Donnees Classé sous :Access, ADO, ADOQuery, buttongroup Niveau :Débutant Date de création :27/01/2009 Date de mise à jour :13/02/2009 15:27:23 Vu / téléchargé :3 870 / 1 027

Auteur : Starnouf

Ecrire un message privé
Site perso
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • 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.
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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Apropos.dfmTélécharger ce fichier [Réservé aux membres club]2 942 octets
  • Apropos.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier833 octets
  • data.mdbTélécharger ce fichier [Réservé aux membres club]376 832 octets
  • ListeDS.dprTélécharger ce fichier [Réservé aux membres club]Voir ce fichier493 octets
  • ListeDS.dprojTélécharger ce fichier [Réservé aux membres club]4 488 octets
  • ListeDS.dproj.2007Télécharger ce fichier [Réservé aux membres club]4 446 octets
  • ListeDS.dproj.localTélécharger ce fichier [Réservé aux membres club]62 octets
  • ListeDS.identcacheTélécharger ce fichier [Réservé aux membres club]241 octets
  • ListeDS.resTélécharger ce fichier [Réservé aux membres club]98 920 octets
  • uDm.dfmTélécharger ce fichier [Réservé aux membres club]1 271 octets
  • uDm.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier346 octets
  • Unit1.dfmTélécharger ce fichier [Réservé aux membres club]124 427 octets
  • Unit1.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 959 octets
  • Unit2.dfmTélécharger ce fichier [Réservé aux membres club]40 062 octets
  • Unit2.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 862 octets

Télécharger le zip


 Historique

28 janvier 2009 20:17:04 :
Ajout du Unit1.dfm oublié
29 janvier 2009 20:14:57 :
Merci à Bacterius et Lord948 pour leurs aide. J'ai donc mis des noms plus explicites à mes boutons, ajouté plus de commentaires, modifié le code du Messagedlg, et ajouté des With...do pour aérer un peu ma form1. @ Lord948 : J'ai essayé de remplacer les edit.text="" par des edit.clear, mais le problème est qu'il me vide meme les choix des combobox
13 février 2009 15:27:23 :
Code restructuré pour plus de visilité. Ajout d'un Radiogroup pour selectionner le type de recherche du Tedit : soit par nom (partiel) ou par numéro (exact).

 Sources de la même categorie

Source avec Zip INTERBASE FIREBIRD IBEXPERT par opgiat
Source avec Zip CREE ALIAS AUTOMATIQUEMENT CREATION REPERTOIRE ET TABLE AUSI par opgiat
Source avec Zip CRÉE UN RÉPERTOIRE ET CRÉE CES TABLES PAR PROGRAMME par opgiat
Source avec Zip Source avec une capture CONNEXION MYSQL ET RECUPERATION DANS BASE ACCESS par eli42
Source avec Zip Source avec une capture LIER DEUX TDBGRID par cantador

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CONNEXION MYSQL ET RECUPERATION DANS BASE ACCESS par eli42
Source avec Zip Source avec une capture PORTRAITS CARACTERISTIQUES SELON HOLLAND par tigris1
Source avec Zip Source avec une capture BDD DE LOCATION COMPOS ADO AVEC ACCESS - C' EST PROMIS, C' E... par MAURICIO
Source avec Zip Source avec une capture ACCESS AVEC ADO MASTER/DETAIL+LOOKUPS+CALCFIELDS ETC ... par MAURICIO
Source avec Zip Source avec une capture GESTION DE STOCK D'UNE PHARMACIE par adelpro

Commentaires et avis

Commentaire de Bacterius le 28/01/2009 12:36:41

Dommage, je ne peux pas tester, je n'ai pas les composants DB et ADO.
Je vais juste lire le code, et je te dis ce que j'en pense.
Juste un truc : n'est-il-pas possible de faire une base de données juste un petit peu moins lourde ? (genre 400Ko).

Alors ...

1) inutile de mettre les méthodes qui ne contiennent aucun code (Edit1Change, FormCreate).

2) utilise un bloc with-do. Il a la particularité de passer en référence du bloc l'objet que tu désires :

form2.Caption:='Modifier';
form2.Edit1.Text:=ADOQuery1.fieldbyname('Numero').AsString;
form2.Edit2.Text:=ADOQuery1.fieldbyname('Titre').AsString;
form2.ComboBox1.Text:=ADOQuery1.fieldbyname('Region').AsString;
form2.ComboBox2.Text:=ADOQuery1.fieldbyname('Sauvegarde').AsString;
form2.combobox3.Text:=ADOQuery1.fieldbyname('Taille').AsString;
form2.Edit3.Text:=ADOQuery1.fieldbyname('Catégorie').AsString;
form2.Memo1.Text:=ADOQuery1.fieldbyname('URL').Value;
form2. CheckBox1.Checked:=ADOQuery1.fieldbyname('Possède').Value;
form2.Show;

peut se remplacer plus lisiblement par

with Form2 do
begin
  Caption:='Modifier';
  Edit1.Text:=ADOQuery1.fieldbyname('Numero').AsString;
  Edit2.Text:=ADOQuery1.fieldbyname('Titre').AsString;
  ComboBox1.Text:=ADOQuery1.fieldbyname('Region').AsString;
  ComboBox2.Text:=ADOQuery1.fieldbyname('Sauvegarde').AsString;
  combobox3.Text:=ADOQuery1.fieldbyname('Taille').AsString;
  Edit3.Text:=ADOQuery1.fieldbyname('Catégorie').AsString;
  Memo1.Text:=ADOQuery1.fieldbyname('URL').Value;
  CheckBox1.Checked:=ADOQuery1.fieldbyname('Possède').Value;
  Show;
end;

Idem pour tous les autres blocs avec Form2 un peu plus haut, et avec les blocs qui contiennent 3 instructions à AdoQuery1.

3) Ceci est un peu lourd. Tu peux le remplacer par un case..of :

var
  buttonSelected : Integer;
begin
  // Afficher la boîte de dialogue
  buttonSelected := MessageDlg('Voulez-vous supprimer cette fiche?',mtConfirmation, mbOKCancel, 0);
  // Action suivant le bouton selectionné
  if buttonSelected = mrOK     then AdoQuery1.Delete;
  if buttonSelected = mrCancel then close;
end;

Voilà :

begin
case MessageDlg('Voulez-vous supprimer cette fiche?',mtConfirmation, mbOKCancel, 0) of
  mrOK: AdoQuery1.Delete;
  mrCanceled: Close;
end;
end;

En fait, ce 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.

4) Pense à renommer tes composants d'une façon explicite, c'est une bonne habitude à prendre depuis le début.

En tout cas, tu mets des commentaires utiles, c'est bien. Mais il faut en mettre partout.

Voilà, c'est bien, continue.
Peut-être nourrir un petit peu plus ton application, en ajoutant des fonctionnalités plus étendues ?

Cordialement, Bacterius !

Commentaire de Starnouf le 28/01/2009 13:13:51

Merci Bacterius, ce programme etant mon tout premier, bien qu'il fonctionne je me doutais qu'il y aurait certaines erreurs ou ameliorations de codes à apporter. En plus de partager, le but de ce 1er post etait egalement de recevoir de commentaires ou suggestions utiles à mon apprentissage :)
Je ne connaissais pas "with do" ni Case, et il est vrai que le code parait beaucoup moins fastidieux à lire. J'essaierait tout ca ce soir après le boulot, ainsi que renomer plus explicitement les composants.

Ensuite, conseillez vous le repost de la source modifiée, ou la laisser avec les commentaires des membres afin que chacun puisse voir un original avec les commentaires d'ameliorations ?

Cordialement, Starnouf

Commentaire de yvessimon le 28/01/2009 13:38:35

Bonjour,
il manque :
Unit1.dfm
GIFImg.dcu

Jai DELPH 7
quelle version as-tu ?

Salutations

Commentaire de Bacterius le 28/01/2009 16:55:08

Ah oui effectivement, il faut inclure Unit1.dfm (le fichier de la fiche Form1), et pour GifImg, ce n'est peut-être pas nécessaire, mais au vu de ta capture d'écran, si.
Ah au passage, pense toujours à laisser les composants standard de Delphi dans tes sources, ou alors inclut les fichiers du composant, ou un lien pour le télécharger. Ici, tu aurais pu utiliser des BitBtn et mettre des bitmaps en BitBtn.Glyph.

Continue :)

Cordialement, Bacterius !

Commentaire de Bacterius le 28/01/2009 16:56:14

Ah au fait, il ne faut pas reposter : tout en haut de la page avec le source, il y a un libellé 'modifier ce code'. Clique dessus, et refais comme avant, en améliorant le source.

Cordialement, Bacterius !

Commentaire de yvessimon le 29/01/2009 08:59:10

Bonjour,
Cela progresse mais j'ai quelques erreurs :
BitBtn1.DoubleBuffered
la propriété DoubleBuffered  n'existe pas

Edit1.NumbersOnly
la propriété NumbersOnly n'existe pas

en supriment GIFImg j'ai
identificateur non déclaré "MainFormOnTaskbar"

Salutations

Commentaire de Bacterius le 29/01/2009 09:52:41

DoubleBuffered : pas grave, vous avez pas la même version.
Edit1.NumbersOnly : pas grave, mais tu feras gaffe à n'entrer que des nombres.
MainFormOnTaskbar : pas grave.

Supprime juste les instructions qui beugent.

Cordialement, Bacterius !

Commentaire de yvessimon le 29/01/2009 10:16:53

Bonjour,
En supprimant GIFImg la compilation trouve une erreur
identificateur non déclaré "MainFormOnTaskbar"

En supprimant
Application.MainFormOnTaskbar := True;
J'ai l'erreur :
---------------------------
Notification d'une exception du débogueur
---------------------------
Le projet ListeDS.exe a provoqué une classe d'exception EReadError
avec le message 'La propriété NumbersOnly n'existe pas'.  
Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
---------------------------
OK   Aide  
---------------------------
ceci n'est pas compatible avec DELPH7 !!
Dommage je ne peux aller plus loin.

Salutations

Commentaire de Bacterius le 29/01/2009 10:32:34

Starnouf a probablement une version de Delphi supérieure à la tienne (8 ou 9), ce qui empêche la lecture.
Ne te plains pas moi j'ai la version 6.

Cordialement, Bacterius !

Commentaire de lord948 le 29/01/2009 11:25:59

Bonjours,
juste quelque suggestion :

1. pour la chaine de connexion :
procedure TForm1.FormCreate(Sender: TObject);
begin
  With ADOConnection1 do
  begin
    ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
    ExtractFilePath(Application.ExeName)+'Base de données1.mdb;Persist Securit'+
    'y Info=False';
    Connected := True;
    ADOQuery1.Open
  end;
end;

2. pour les
   form2.Edit1.Text:='';
   ...
   Form2.Edit1.Clear;

3. la Form2 et le bitbtn2 tu initialise la propiete ModalResult avec MrCancel tu na pas besoin du Close; la form est en showmodal

4. le méthode Value et un peut lourde essaie de précise le type.

5. pour ce genre d'exemple tu na pas vraiment besoin du TADOConnection, vue que tu utilise une seul table (Aucune relationnel)donc, la ConnectionString du TADOQuery suffit.

Commentaire de Starnouf le 10/04/2009 22:47:16

Mon p'tit programme a pas mal evolué, je cherche des eventuels testeurs. Voir sur le forum http://www.delphifr.com/forum/sujet-CHERCHE-BETA-TESTEURS-MON-APP-LISTEDS_1295748.aspx

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

ACCESS AVEC ADO ET JVSTRINGRID [ par jm2mars ] Bonjour à tous, voila j'ai un petit problème pour récupérer les différentes lignes des tables ACCESS !Je m'explique :Tout d'abord j'ai une base de don ADO, DBGrid + Access [ par ultramagnetic ] Bonjour, d&#233;butant Delphi, je peine &#224; faire avancer ma petite appli. J'ai 1 DataModule 1 TADOConnection 5-6 TADOQuery avec - 1requ&#234;te champ calculé avec adoquery et ACCESS [ par yvessimon ] Bonjour, Après plusieurs recherches j'ai compris en partie comment fonctionnent les champs calculés avec ADOQuery pour une base ACCESS. J'ai déjà ADO + Access [ par davix123 ] Bonjour,je suis en train de développer une appli de gestion de parc informatique. Les données sont stockées dans une base Access. L'affichage de la fe ADO Delphi [ par sma1007 ] Bonjour, J'ai utliser le ADO pour afficher ma table ACCESS en DELPHI mais quand je fait des modification sur ma table ACCESS soit par delphi soit dire ADO && Access [ par radhia1981 ] j'ai une base de données sous access j'ai  programmer une petite recherche  avec des  table ADO sa fonctionne tres bien  mais le probléme c'est que s Connection a une base access 97 avec ADO [ par jmp77 ] Bonjour,J'essaie désesperement de connecter ma base access 97 à l aide d'un composant ado. Cependant en utilisant le microsoft jet engine 4.0 cela ne ADO et access [ par benalioua1975 ] comment se connecté a une base de donnée ACCESS protegée par un mot de passe via l'objet adomerci d'avance access+delphi4 [ par speroyves ] Après avoir fait ma connection avec access lorsque j'ouvre une application de delphi4 il y a toujours une boite de dialogue qui me demande si je veux Jointure de tables dans 2 bases access [ par yvessimon ] Bonjour,Je souhaite faire la jointure de 2 tables contenues dans deux base access.   baseaccess_1.mdb contient la table_1et baseaccess_2.mdb contient 


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales