Реклама на сайте Advertise with us
Тема: Access и Delphi Расширенный поиск по форуму
 
Внимание! В связи с устареванием топика эта страница была взята из кэша.
Автор Сообщение
Информация о пользователе Cibtor


Зарегистрирован: 26.02.03
Сообщения: 483
Ссылка на сообщениеДобавлено: 08/10/04 в 22:24     

Как на Delphi скопировать открытую базу Accessа? Я уже несколькими способами пробовал – выдает ошибку, что файл открыт уже другим приложением.

K началу

 
Информация о пользователе ghood


Зарегистрирован: 16.06.04
Сообщения: 183
Ссылка на сообщениеДобавлено: 10/10/04 в 01:47     

Я совсем не знаток Windows в общем и Access в частности, но могу предложить просто закрыть Access перед запуском проги.

K началу

 
Информация о пользователе dDan


Зарегистрирован: 18.08.04
Сообщения: 634
Ссылка на сообщениеДобавлено: 11/10/04 в 13:36     

Cibtor писал:
Как на Delphi скопировать открытую базу Accessа? Я уже несколькими способами пробовал – выдает ошибку, что файл открыт уже другим приложением.

Покажи что за способы может у тебя в них ошибки
можешь попробовать при помощи 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';

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
    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;

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.

K началу

 
Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!
Внимание! В связи с устареванием топика эта страница была взята из кэша.

Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »