1. #1
    Membre du Club
    Profil pro
    Inscrit en
    août 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2002
    Messages : 57
    Points : 56
    Points
    56

    Par défaut [Lazarus] Renseignement sur les bases de données

    Bonsoir,

    Je viens récemment de passer de Delphi 2005 à Lazarus 0.9.20.

    Je désire reprendre l'élaboration d'une apllication de gestion de bibliothèque personnelle. Pour ceci, j'utilise un base de type TDbf créée à partir de ce code qui fonctionne sans aucun problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    unit Unit1; 
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
      Db, Dbf, Dbf_common;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end; 
     
    var
      Form1: TForm1;
      MyDbf: TDbf;
      Source: String;
     
    implementation
     
    { TForm1 }
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Source := ExtractFilePath(Application.Name);
      MyDbf := TDbf.Create(nil);
      try
        MyDbf.FilePath := 'data';
        MyDbf.TableLevel := 7;
        MyDbf.Exclusive := True;
        MyDbf.TableName := 'base.dbf';
        With MyDbf.FieldDefs do begin
          Add('Titre', ftString, 50, True);
          Add('SousTitre', ftString, 50, True);
          Add('Auteur', ftString, 30, True);
          Add('Editeur', ftString, 30, True);
          Add('Genre', ftString, 30, True);
          Add('ISBN', ftString, 10, True);
          Add('Resume', ftMemo, 255, True);
          Add('Commentaires', ftMemo, 255, True);
        End;
        MyDbf.CreateTable;
      finally
        MyDbf.Free;
      end;
    end;
     
    initialization
      {$I Unit1.lrs}
     
    end.
    Mais après je ne sais pas comment faire pour relier le contenu de cette base à par exemple une TDBGrid. Je me doute qu'il faut utiliser TDataSource et TDbf mais je n'arrive pas à les configurer correctement.

    Est-ce que quelqu'un aurait un exemple de code et une aide à la configuration des différents éléments pour ceci ?

    Merci d'avance.

    Lohot

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    août 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2002
    Messages : 57
    Points : 56
    Points
    56

    Par défaut

    Bonjour, je viens de trouver la réponse à ma question. En effet, il suffit de créer un TDBGrid avec comme configuration DBGrid1.DataSource := DataSource1 et TDataSource et d'utiliser ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    unit Unit1; 
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
      Db, Dbf, Dbf_Common, DBGrids;
     
    type
     
      { TMain }
     
      TMain = class(TForm)
        Datasource1: TDatasource;
        DBGrid1: TDBGrid;
        procedure FormCreate(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end; 
     
    var
      Main: TMain;
      MyDbf: TDbf;
      Source: String;
     
    implementation
     
    { TMain }
     
    procedure TMain.FormCreate(Sender: TObject);
    begin
      Source := ExtractFilePath(Application.Name);
      MyDbf := Tdbf.Create(nil);
      if not DirectoryExists(Source + 'data') then
        if not CreateDir(Source + 'data') then
          raise Exception.Create('Impossible de créer le répertoire pour la base de donnéé');
      if not FileExists(Source + 'data\base.dbf') then
        begin
          MyDbf.FilePath := Source + 'data';
          MyDbf.Active := False;
          MyDbf.TableLevel := 7;
          MyDbf.Exclusive := True;
          MyDbf.TableName := 'base.dbf';
          With MyDbf.FieldDefs do begin
            Add('Titre', ftString, 50, True);
            Add('SousTitre', ftString, 50, True);
            Add('Auteur', ftString, 30, True);
            Add('Editeur', ftString, 30, True);
            Add('Genre', ftString, 30, True);
            Add('ISBN', ftString, 10, True);
            Add('Resume', ftMemo, 255, True);
            Add('Commentaires', ftMemo, 255, True);
          End;
          MyDbf.CreateTable;
        DataSource1.DataSet := MyDbf;
        MyDbf.Open;
        end
      else
        begin
          MyDbf.FilePath := Source + 'data';
          MyDbf.Active := False;
          MyDbf.TableLevel := 7;
          MyDbf.Exclusive := True;
          MyDbf.TableName := 'base.dbf';
          DataSource1.DataSet := MyDbf;
          MyDbf.Open;
        end;
    end;
     
    initialization
      {$I Unit1.lrs}
     
    end.

    A+

    Lohot

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. partage d'expérience sur les bases de données
    Par grome dans le forum Langage SQL
    Réponses: 10
    Dernier message: 17/12/2007, 16h12
  2. Réponses: 8
    Dernier message: 05/11/2007, 02h30
  3. Cherche bon cours sur les bases de données
    Par SOPSOU dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/09/2007, 15h56
  4. Renseignements sur une base de données
    Par LechucK dans le forum MS SQL-Server
    Réponses: 5
    Dernier message: 05/06/2007, 17h35
  5. Livre gratuit sur les bases de données...
    Par benby dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 26/05/2005, 13h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo