Внимание! В связи с устареванием топика эта страница была взята из кэша.
|
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 символов Купить рекламу в этом месте! |
Внимание! В связи с устареванием топика эта страница была взята из кэша.
|