скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

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




// Читаем файл (любой версии) 
// Проверяем что это 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.






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook