Читаем файл Access используя ADO

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

// Читаем файл (любой версии)

// Проверяем что это ACCESS MDB

// Нужны компаненты:

// TADOtable,TDataSource,TOpenDialog,TDBGrid,TBitBtn.

unit uMain;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Db, DBTables, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls, Buttons;

type

TfrmMain = class(TForm)

DSUsers: TDataSource;

DBGridUsers: TDBGrid;

BitBtn1: TBitBtn;

OpenDialog1: TOpenDialog;

TUsers: TADOTable;

procedure FormCreate(Sender: TObject);

procedure ValidateAccessDB;

function CheckIfAccessDB(lDBPathName: string): boolean;

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmMain: TfrmMain;

const

DBNAME = ‘ADODemo.MDB’;

DBPASSWORD = ‘123’; // Access DB Password Protected

implementation

{$R *.DFM}

procedure TfrmMain.FormCreate(Sender: TObject);

begin

validateAccessDB;

end;

procedure TfrmMain.ValidateAccessDB;

var

lDBpathName : String;

lDBcheck : boolean;

begin

if FileExists(ExtractFileDir(Application.ExeName) ‘\’ DBNAME) then

lDBPathName := ExtractFileDir(Application.ExeName) ‘\’ DBNAME

else if OpenDialog1.Execute then

// Set the OpenDialog Filter for ADOdemo.mdb only

lDBPathName := OpenDialog1.FileName;

lDBCheck := False;

if Trim(lDBPathName) » then

lDBCheck := CheckIfAccessDB(lDBPathName);

if lDBCheck = True then

begin

// ADO Connection String to the MS-ACCESS DB

TUsers.ConnectionString :=

‘Provider=Microsoft.Jet.OLEDB.4.0;’

‘Data Source=’ lDBPathName ‘;’

‘Persist Security Info=False;’

‘Jet OLEDB:Database Password=’ DBPASSWORD;

TUsers.TableName := ‘Users’;

TUsers.Active := True;

end

else

frmMain.Free;

end;

// Check if it is a valid ACCESS DB File Before opening it.

function TfrmMain.CheckIfAccessDB(lDBPathName: string): Boolean;

var

UnTypedFile: file of byte;

Buffer: array[0..19] of byte;

NumRecsRead: Integer;

i: Integer;

MyString: string;

begin

AssignFile(UnTypedFile, lDBPathName);

reset(UnTypedFile);

BlockRead(UnTypedFile, Buffer, High(Buffer), NumRecsRead);

CloseFile(UnTypedFile);

for i := 1 to High(Buffer) do

MyString := MyString Trim(Chr(Ord(Buffer[i])));

Result := False;

if Mystring = ‘StandardJetDB’ then

Result := True;

if Result = False then

MessageDlg(‘Invalid Access Database’, mtInformation, [mbOK], 0);

end;

end.

{/codecitation}

Добавить комментарий