Судя по “нет данных” там что-то некорректное получилось.
Ну или может просто папка с БД лежит не в папке программы + выведите куда-нибудь GetCurrentDir, чтобы узнать текущую директорию, вдруг там что-то не то.
Судя по “нет данных” там что-то некорректное получилось.
Ну или может просто папка с БД лежит не в папке программы + выведите куда-нибудь GetCurrentDir, чтобы узнать текущую директорию, вдруг там что-то не то.
Так а папка с БД лежит в ней?)
Если FireDAC то надо полностью указать путь http://docwiki.embarcadero.com/CodeExamples/Rio/en/FireDAC.MSAccess_Sample
Если через ADO то там не обязательно - главное что файл БД находилось тот папке где проект
а, точно.
Вообще там же не сложно программно путь указать.
Вторая ссылка в гугле: https://stackoverflow.com/a/30822412/964478
Поставить Connection = False
на форме (чтобы оно само не подключалось при запуске)
Где угодно в коде (FormCreate
, …):
AppDirPath := ExtractFilePath(ParamStr(0));
DatabaseFilePath := AppDirPath + 'db\Users.mdb';
...
FDConnection1.Params.Values['Database'] := DatabaseFilePath;
FDConnection1.Connected := True;
это там где лежит программа потом еще не большой хвостик bd\Users.mdb
вот
procedure TForm2.FormCreate(Sender: TObject);
var
DatabaseFilePath, AppDirPath:String;
begin
AppDirPath := ExtractFilePath(ParamStr(0));
DatabaseFilePath := AppDirPath + 'db\Users.mdb';
FDConnection1.Params.Values['Database'] := DatabaseFilePath;
FDConnection1.Params.DriverID:='MSAcc';
FDConnection1.Params.Values['StringFormat']:='sfANSI';
FDConnection1.Params.Values['ReadOnly']:='false';
FDConnection1.LoginPrompt := False;
FDConnection1.Connected:=true;
form2.FDQuery1.Active:=true;
end;
что и получилось вот что
не вышло ado сейчас не нужно. Нужен FDConnection.
Всё что написано выше это всё для вас … перечитайте. Нужно и применяйте
Можно не писать всё остальное если вы уже указали это на форме и не очищали тут (.Clear
).
И у вас не такое имя папки было.
вот полный путь
Add('DriverID=MSAcc');
Add('Database=x:\path_to_db\db.fdb');
читал программа из .ini файла
не видите разницу между этим и
?
@mari_rohan, а разве совет Алекса отсюда - FD connect как заменить абсолютный на относительный путь
(установить Connection в False и задать параметр Database в коде программы (на FormCreate) )
не помог?
Что именно “это”? В последнем коде автора он полный, просто не тот, что нужен ему )
Так а зачем заставлять людей писать путь если предполагалось, что БД лежит рядом с программой.
Разве что в ини по умолчанию использовать какую-нибудь свою “переменную” типа $APPDIR$/db/db.mdb
, которую потом в строке заменять программно при чтении из файла.
Либр база открыта другим процессом монопольно
Либо недостаточно прав
Да имя папки там не то.
Текст ошибки конечно странный, но вроде бы вполне возможная причина. 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:
…
- The database file simply does not exist.
непомог