Mega Code Archive

 
Categories / Delphi / ADO Database
 

How to Read an Access DB using ADO

Title: How to Read an Access DB using ADO 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.