Einzelnen Beitrag anzeigen

Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#13

Re: Mit ADO Tabelle aus Access abfragen?

  Alt 25. Sep 2007, 21:14
Ok. Also Hauptdatei:

Delphi-Quellcode:
unit TForm1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DatenmodulUnit, Menus, StdCtrls, Registry, Grids, DBGrids, DB, ADODB,
  Mask, DBCtrls;

type
  TForm2 = class(TForm)
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    DBffnen1: TMenuItem;
    DBSchlieen1: TMenuItem;
    DBKonfiguration1: TMenuItem;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    procedure OpenDatabaseClick(Sender: TObject);
    procedure CloseDatabaseClick(Sender: TObject);
    procedure DatenbankKonfiguration1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
    private
    { Private-Deklarationen }
    function WriteDSNToRegistry(DSN: string): Boolean;
  function ReadDSNFromRegistry(var DSN: string): Boolean;
  public
    { Public-Deklarationen }
      end;

var
  Form2: TForm2;

implementation
   procedure TForm2.OpenDatabaseClick(Sender: TObject);
begin
  if DataModule2.OpenDatabase=true then
    MessageDlg('Die Datenbank konnte erfolgreich geöffnet werden',
    mtInformation, [mbOK], 0)
  else
    MessageDlg('Die Datenbank konnte nicht geöffnet werden',
    mtError, [mbOK], 0);
end;

{$R *.dfm}

procedure TForm2.CloseDatabaseClick(Sender: TObject);
begin
  if DataModule2.CloseDatabase=true then
    MessageDlg('Die Datenbank konnte erfolgreich geschlossen werden',
    mtInformation, [mbOK], 0)
  else
    MessageDlg('Die Datenbank konnte nicht geschlossen werden',
    mtError, [mbOK], 0);
end;


function TForm2.WriteDSNToRegistry(DSN: String): Boolean;
var Registry: TRegistry;
begin
  WriteDSNToRegistry:=true;
  Registry:=TRegistry.Create;
  Registry.RootKey:=HKEY_LOCAL_MACHINE;
  {Der Registry-Pfad für Ihren Eintrag}
  if Registry.KeyExists('\Software\MeinProg\MeineAnw')=false then
    try
      Registry.CreateKey('\Software\MeinProg\MeineAnw');
    except
      Registry.Free;
      WriteDSNToRegistry:=false;
      Exit;
    end;
    try
      if Registry.OpenKey('\Software\MeinProg\MeineAnw',
      true)=true then
        Registry.WriteString('DSN', DSN)
      else begin
        MessageDlg('Es konnte nicht in die Registry geschrieben '+
       'werden', mtError, [mbOK], 0);
        WriteDSNToRegistry:=false;
      end;
    finally
      Registry.CloseKey;
      Registry.Free;
    end;
end;

function TForm2.ReadDSNFromRegistry(var DSN: String): Boolean;
var Registry: TRegistry;
begin
  ReadDSNFromRegistry:=true;
  Registry:=TRegistry.Create;
  try
    Registry.RootKey:=HKEY_LOCAL_MACHINE;
    if Registry.KeyExists('\Software\MeinProg\MeineAnw')=true then begin
      if Registry.OpenKey('\Software\MeinProg\MeineAnw', true)=true then
        DSN:=Registry.ReadString('DSN')
      else
        ReadDSNFromRegistry:=false;
    end
    else
      ReadDSNFromRegistry:=false;
  finally
    Registry.Free;
  end;
end;
procedure TForm2.DataSource1DataChange(Sender: TObject; Field: TField);
begin

end;

procedure TForm2.DatenbankKonfiguration1Click(Sender: TObject);
var DSN: string;
begin
  if DataModule2.EditMeineAnwendungDSN(DSN)=true then begin
    MessageDlg('Der DSN konnte erfolgreich geändert werden',
    mtInformation, [mbOK], 0);
   WriteDSNToRegistry(DSN);
  end
  else
    MessageDlg('Der DSN konnte nicht geändert werden',
    mtError, [mbOK], 0);
end;
procedure TForm2.FormShow(Sender: TObject);
var DSN: string;
begin
  if ReadDSNFromRegistry(DSN)=true then begin
    if DataModule2.SetMeineAnwendungDSN(DSN)=true then
      if DataModule2.OpenDatabase=false then begin
        MessageDlg('Es konnte keine Verbindung zur Datenbank '+
        'aufgebaut werden.', mtError, [mbOK], 0);
        DatenbankKonfiguration1Click(Sender);
      end;
  end
  else if DataModule2.OpenDatabase=false then begin
    MessageDlg('Es konnte keine Verbindung zur Datenbank '+
    'aufgebaut werden.', mtError, [mbOK], 0);
    DatenbankKonfiguration1Click(Sender);
  end
  else begin
    MessageDlg('Es konnte keine DSN ausgelesen werden.',
    mtError, [mbOK], 0);
    DatenbankKonfiguration1Click(Sender);
  end;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  WriteDSNToRegistry(DataModule2.GetMeineAnwendungDSN);
  DataModule2.CloseDatabase;
end;



INITIALIZATION


end.


Datenmodul:

Delphi-Quellcode:
unit DatenmodulUnit;

interface

uses
  SysUtils, Classes, DB, ADODB, ADOConED;

type
  TDataModule2 = class(TDataModule)
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
   function OpenDatabase: Boolean;
  function CloseDatabase: Boolean;
  function EditMeineAnwendungDSN(var DSN: string): Boolean;
  function GetMeineAnwendungDSN: string;
  function SetMeineAnwendungDSN(DSN: string): Boolean;
  end;

var
  DataModule2: TDataModule2;

implementation

function TDataModule2.OpenDatabase: Boolean;

begin
  OpenDatabase:=true;
  try
    ADOConnection1.Open;
  except
    OpenDatabase:=false;
  end;
end;

function TDataModule2.CloseDatabase: Boolean;
begin
  CloseDatabase:=true;
  try
    ADOConnection1.Close;
  except
    CloseDatabase:=false;
  end;
end;
  function TDataModule2.EditMeineAnwendungDSN(var DSN: string): Boolean;
begin
  EditMeineAnwendungDSN:=true;
  if ADOConnection1.Connected=true then
    if CloseDatabase=false then begin
      EditMeineAnwendungDSN:=false;
      exit;
    end;
  if EditConnectionString(ADOConnection1)=true then
    DSN:=ADOConnection1.ConnectionString
  else
    EditMeineAnwendungDSN:=false;
end;

function TDataModule2.GetMeineAnwendungDSN: string;
begin
  GetMeineAnwendungDSN:=ADOConnection1.ConnectionString;
end;

function TDataModule2.SetMeineAnwendungDSN(DSN: string): Boolean;
begin
  SetMeineAnwendungDSN:=true;
  if ADOConnection1.Connected=true then
    if CloseDatabase=false then begin
      SetMeineAnwendungDSN:=false;
      Exit;
    end;
  ADOConnection1.ConnectionString:=DSN;
  end;

{$R *.dfm}

end.
  Mit Zitat antworten Zitat