FD connect как заменить абсолютный на относительный путь

Всё что написано выше это всё для вас … перечитайте. Нужно и применяйте

1 лайк

Можно не писать всё остальное если вы уже указали это на форме и не очищали тут (.Clear).

И у вас не такое имя папки было.

1 лайк

вот полный путь
image

  1. Это НЕ полный путь. смотрите док : http://docwiki.embarcadero.com/CodeExamples/Rio/en/FireDAC.MSAccess_Sample
  2. Я бы на ваши месте делал так что это путь
Add('DriverID=MSAcc');
    Add('Database=x:\path_to_db\db.fdb');

читал программа из .ini файла

1 лайк

не видите разницу между этим и

?

1 лайк

@mari_rohan, а разве совет Алекса отсюда - FD connect как заменить абсолютный на относительный путь
(установить Connection в False и задать параметр Database в коде программы (на FormCreate) )
не помог?

1 лайк

Что именно “это”? В последнем коде автора он полный, просто не тот, что нужен ему )

Так а зачем заставлять людей писать путь если предполагалось, что БД лежит рядом с программой.

Разве что в ини по умолчанию использовать какую-нибудь свою “переменную” типа $APPDIR$/db/db.mdb, которую потом в строке заменять программно при чтении из файла.

1 лайк

Либр база открыта другим процессом монопольно
Либо недостаточно прав

1 лайк

Да имя папки там не то.

Текст ошибки конечно странный, но вроде бы вполне возможная причина. https://stackoverflow.com/questions/26244425/general-error-unable-to-open-registry-key-temporary-volatile-from-access

This is the top-level error message produced by the Access Database Engine (a.k.a. “ACE”) ODBC driver when the current process is unable to open the Access database file for one of the following reasons:

  1. The database file simply does not exist.
1 лайк

непомог

как сделать чтобы читала из ини файла

Так проблема-то в чем именно сейчас? Я ж сказал уже 3 раза, укажите правильное имя папки.

1 лайк

открываю свойства базы данных там написан путь до базы данных вот он:
image
что в нем не хватает?
в папке db лежит база.
в папке debug экзешник.

На этом скриншоте нет такого имени папки.

1 лайк

А надпись расположение и дальше строчка?

отож , db<>bd ))

1 лайк

Ну вообщем ошибочка вышла в свойствах правильный путь к базе

Так теперь работает?)

1 лайк

Короче ладно…! Я рады уважение участников этого форума и рады уважение вас буду демонстрировать мои готовы пример… Я тоже был новичок мне тоже помогли много раз… Именно [Аватар] мне много раз помог.! и совесть меня не позволяет не показать всё подробно.!
Что касается [mari rohan] Я не увидел от него огромное желание достичь цель. Ну ладно
Приступим: Вот мои ini файл Connect.ini где написано путь файла и при необходимости можно его изменить

Acces_FDAC.rar (3.9 МБ)
1)

uses
     IniFiles,
  //------------------
var
  Form1: TForm1;
  //--- ini
   Ini: TIniFile;
    { Private declarations }
    procedure Connect;
  1. тело процедуры
procedure TForm1.Connect;
begin
  try
    Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'Connect.ini');  //
    FDConnection1.Connected := false;
    FDConnection1.Params.Add('DriverID=MSAcc');
    FDConnection1.Params.Add('Database=' + Ini.ReadString('Database','MyDatabase', ''));
    FDConnection1.Connected := true;
    FDQuery1.Open();
    ini.Free;
  except
    MessageDlg('Ошибка!!! программа не может подключится к базе данных',  mtError, [mbOK], 0);
    Application.Terminate;
  end;
end;
  1. вызов процедуры
procedure TForm1.FormShow(Sender: TObject);
begin
 Connect();
end;

1 лайк

Надо либо .Clear перед этим, либо оставить свойство пустым на форме, иначе вроде будет использоваться старое (первое) значение.

1 лайк