БД Access из-под Delphi

Рейтинг: 2Ответов: 1Опубликовано: 28.05.2011

Доброго времени суток. Хочу узнать про подключение к БД Access через приложение из-под Delphi. Когда компилирую источником данных является БД и она находится на диске C:, в корне папки... Допустим программой будут пользоваться 1000 людей и они ставят у себя эту программу (допустим) на D:, а БД сама привязана к диску C: и просит ее туда перекинуть... Можно ли как-то настроить, сделать файл, которые при запуске приложения задает путь к БД и активирует все ADOConnection, Query и все такое?

Ответы

▲ 3

Самое простое и самое древнее решение - это брать параметры инициализации приложения из *.ini файла. Допустим создаем файл Initial.ini в каталоге с программой с содержанием:

[database]
path=

Вот код приложения для примера, можно усложнить под собственные нужды

procedure TForm1.ADOConnection1BeforeConnect(Sender: TObject);
var path,str:string;
begin
  if ADOConnection1.Connected then
    ADOConnection1.Close;

  with TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Initial.ini') do
  try
    path :=ReadString('batabase', 'path', '');
    if path='' then
      if OpenDialog1.Execute then
        begin
          path:=OpenDialog1.FileName;
          WriteString('batabase', 'path',path);
        end;
    str:='';
    str:=str+'Provider=Microsoft.Jet.OLEDB.4.0;';
    str:=str+'Password="";';
    str:=str+'Data Source='+path+';';
    str:=str+'Persist Security Info=True';
    ADOConnection1.ConnectionString:=str;
  finally
    Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
OpenDialog1.Filter:='Файлы Access|*.mdb';
ADOConnection1.Open;
end;

В раздел модулей добавляем IniFiles. Можно по аналогии брать настройки из реестра.