Vidéothèque v1.0.0

Description

Micro-projet qui montre comment ouvrir une base Access ou bien la créer si elle est absente ainsi que ses champs.
Un tutorial PDF est fourni avec le source : création de l'interface et relation des composants avec la bdd.
Accessoirement petit programme pour référencer une vidéothèque ( DVD ou K7 ).

Programme basé sur les articles suivants :
- http://delphi.developpez.com/faq/?page=access
- http://delphi.about.com/od/database/l/aa072401b.htm

Source / Exemple :


{===============================================================================
Code source : BEAUMONT Christophe
Version     : 1.0.0
Date        : 16 Mars 2010

Micro-projet 04 - Création et gestion d'une base de données Access 2000 sous la
forme d'une vidéothèque. Ajout, edition, création des enregistrements gérés par
un TDBNavigator, création d'une BDD vide si celle-ci n'existe pas. Tri par titre
ou numéro. Mettre "ComObj" dans la partie "Uses" pour utiliser CreateOLEObject.
Retrouvez ces sources également sur mon site : "www.delphinautes.fr"
===============================================================================}
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, OleServer, ADOX_TLB, Grids, DBGrids, ComObj, XPMan,
  ExtCtrls, DBCtrls, StdCtrls, Mask;

type
  Tf_main = class(TForm)
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    ADOCommand1: TADOCommand;
    LabTitre: TLabel;
    DBTitre: TDBEdit;
    DBNum: TDBEdit;
    LabNum: TLabel;
    DBAnnee: TDBEdit;
    DBDuree: TDBEdit;
    DBSite: TDBEdit;
    LabAnnee: TLabel;
    LabDuree: TLabel;
    LabSite: TLabel;
    DBActeurs: TDBMemo;
    DBNavigator1: TDBNavigator;
    DBSynopsis: TDBMemo;
    XPLook: TXPManifest;
    LabActeurs: TLabel;
    LabSynopsis: TLabel;
    DBRealisateur: TDBEdit;
    LabRealisateur: TLabel;
    TriBox: TRadioGroup;
    procedure FormCreate(Sender: TObject);
    procedure TriBoxClick(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  f_main: Tf_main;

implementation

{$R *.dfm}

procedure Tf_main.FormCreate(Sender: TObject);
var
  Catalog : OLEVariant;
  BDPath, BDOld, BDNew, BDStruct : string;
begin
// On définit le chemin de notre répertoire pour la bdd
BDPath := GetCurrentDir+'\Films.mdb';
// Paramètres pour la base de données existante
BDOld  := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
          'Data Source=' + BDPath + ';' +
          'User ID=Admin;' +
          'Persist Security Info=False;' +
          'Mode=ReadWrite;Extended Properties="";' +
          'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";' +
// Définit le type de la bdd : 5=access 2000 ; 4=access 1997
          'Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;' +
          'Jet OLEDB:Database Locking Mode=1;' +
          'Jet OLEDB:Global Partial Bulk Ops=2;' +
          'Jet OLEDB:Global Bulk Transactions=1;' +
          'Jet OLEDB:New Database Password="";' +
          'Jet OLEDB:Create System Database=False;' +
          'Jet OLEDB:Encrypt Database=False;' +
          'Jet OLEDB:Don''t Copy Locale on Compact=False;' +
          'Jet OLEDB:Compact Without Replica Repair=False;' +
          'Jet OLEDB:SFP=False';
// Paramètres pour la base de données à créer
BDNew :=  'Provider=Microsoft.Jet.OLEDB.4.0;' +
          'Data Source=' + BDPath + ';' +
          'User ID=Admin;' +
          'Mode=Share Deny None;Extended Properties="";' +
          'Jet OLEDB:Engine Type=5;';
// Structure des champs de notre base de données
BDStruct := 'CREATE TABLE Films (' +
                    'id COUNTER PRIMARY KEY,' +
                    'Numero INTEGER,' +
                    'Titre VARCHAR(80),' +
                    'annee INTEGER,' +
                    'duree INTEGER,' +
                    'site VARCHAR(150),' +
                    'acteurs MEMO,' +
                    'realisateur VARCHAR(80),' +
                    'synopsis MEMO)';
// On vérifie si le fichier Films.mdb existe dans notre répertoire
 if FileExists(BDPath) then
  begin
// Si oui, on déclare ses paramètres dans notre composant TADOConnection
   ADOConnection1.ConnectionString := BDOld ;
// Et on active son affichage
   ADOTable1.Active := True;
  end
// Si le fichier n'existe pas alos
 else
  begin
// crée un objet unique non initialisé de la classe ADOX.Catalog
// cette méthode évite d'importer adox.catalog dans la palette d'outils
   Catalog := CreateOLEObject('ADOX.Catalog');
// On créé notre base vide
   Catalog.Create(BDNew);
// on déclare ses paramètres dans notre composant TADOConnection
   ADOConnection1.ConnectionString := BDOld ;
// on n'affiche pas l'écran du mot de passe
   ADOConnection1.LoginPrompt := False;
// la base est prête à fonctionner
   ADOConnection1.Connected := True ;
// On ouvre la commande
   ADOCommand1.Connection := ADOConnection1;
// Et on applique la requête de création de nos champs
   ADOCommand1.CommandText := BDStruct;
// On créé les champs de la base de données
   ADOCommand1.Execute;
// On active son affichage
   ADOTable1.Active := True;
  end;
end;

procedure Tf_main.TriBoxClick(Sender: TObject);
begin
// Si le bouton radio "Numero" est sélectionné on définit le tri
 if TriBox.ItemIndex = 0 then ADOTable1.IndexFieldNames := 'Numero'
 // Sinon c'est le bouton radio "Titre" qui est sélectionné
                         else ADOTable1.IndexFieldNames := 'Titre';

end;

end.

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.