![]() |
|
|
#1
|
|||
|
|||
|
Добрый день всем!!! Как сделать чтоб адресс к БД брался из тексового документа???
|
|
#2
|
||||
|
||||
|
Открыть файл
Прочитать из него струку Использовать прочитанную строку как адрес. |
|
#3
|
|||
|
|||
|
Цитата:
А можно немного поподробнее??? Желательно на примере! |
|
#4
|
||||
|
||||
|
"Я не тактик, я стратег" (с)
А по существу - откуда мне знать как ты организовываешь поиск, и зачем тебе во внешнем файле хранить путь. Возможно есть другой, более простой способ. |
|
#5
|
|||
|
|||
|
У меня база хранится на Vtp и нужно чтоб программа перед началом работы проверила путь к базе и если не может найти БД, то выходит окно где нужно ввести адрес к БД, а адрес бедет сохранятся в текстовый документ! Если есть лучший способ, то буду рад им воспользоваться!
|
|
#6
|
||||
|
||||
|
Я бы в реестре хранил, дабы не создавать лишних файлов.
|
|
#7
|
|||
|
|||
|
Вроде все стало получаться, но тут новая проблема. Если сохранять адрес в текстовом документе то все запускается и работает, а если прописать в текстовом документе "ExtractFilePath(paramstr(0))", то вылаезет ошибка!
Что не так? |
|
#8
|
|||
|
|||
|
ExtractFilePath(paramstr(0)) даёт путь к файлу. К этому пути необходимо ещё прибавить FileName - имя файла базы (типа Name.mdb и т.п.)
Что-то вроде: Код:
ExtractFilePath(paramstr(0)) + '\Name.mdb' Код:
ExtractFilePath(paramstr(0)) + '\' + FileName И если выпадают сообщения об ошибках, то делайте их скриншот и выкладывайте здесь. Последний раз редактировалось blazonic, 11.05.2011 в 23:12. |
|
#9
|
|||
|
|||
|
Я так и делаю!
Если прописывать без текстового файла, то все работает, а если через него, то пишет что путь неверен! Последний раз редактировалось BuTeK22, 11.05.2011 в 23:16. |
|
#10
|
|||
|
|||
|
Судя по ошибке в пути на рисунке, вы ExtractFilePath(paramstr(0)) обрамляете в кавычки, а это и есть ошибка. Уберите эти кавычки, и попробуйте запустить.
Кроме того, вы ещё что-то прибавляете в общий путь до ExtractFilePath(paramstr(0)), чего делать не следует. Последний раз редактировалось blazonic, 11.05.2011 в 23:28. |
|
#11
|
|||
|
|||
|
Нет кавычек не ставлю!
Если прописывать вот так: "Data Source='+ExtractFilePath(paramstr(0))+'\BD\БД.mdb; ", то все нормально! А вот если прописать "Data Source='+buf+'\BD\БД.mdb;", то вылазеет ошибка! В buf записана строка из текстового документа т.е. "ExtractFilePath(paramstr(0))"!!! Последний раз редактировалось BuTeK22, 11.05.2011 в 23:41. |
|
#12
|
|||
|
|||
|
Странно… Тогда выложите здесь куски кода, в которых у вас прописываются таким образом пути, полностью. Посмотрим, что и как вы прописываете.
|
|
#13
|
|||
|
|||
|
Код:
begin
fName:=(ExtractFilePath(paramstr(0)));
AssignFile(f,fName+'\BD\Setup.txt');
{$I-}
Reset(f);
{$I+}
if IOResult <> 0 then
begin
ShowMessage ('Ошибка доступа к файлу '); exit;
end;
while not EOF(f) do
begin
readln(f, buf);
end;
CloseFile(f);
begin
Form2.ADOTable1.Active:= False;
Form2.ADOConnection1.Connected:= False;
Form2.ADOConnection1.LoginPrompt:= False;
Form2.ADOConnection1.Provider:= 'Microsoft.Jet.OLEDB.4.0';
Form2.ADOConnection1.ConnectionString:=
'Provider=Microsoft.Jet.OLEDB.4.0;' +
'User ID=Admin;' +
'Data Source='+buf+'\BD\БД.mdb;' +
'Mode=ReadWrite;' +
'Extended Properties="";' +
'Persist Security Info=False;' +
'Jet OLEDB:System database="";' +
'Jet OLEDB:Registry Path="";' +
'Jet OLEDB:Database Password="";' +
'Jet OLEDB:Engine Type=5;' +
'Jet OLEDB:Database Locking Mode=1;' +
'Jet OLEDB:Global Partial Bulk Ops=2;' +
'Jet OLEDB:Global Bulk Transactions=1;' +
'Jet OLEDB:New Database Password="";' +
'Jet OLEDB:Create System Database=False;' +
'Jet OLEDB:Encrypt Database=False;' +
'Jet OLEDB:Compact Without Replica Repair=True;' +
'Jet OLEDB:SFP=False';
Form2.ADOConnection1.Mode:= cmShareDenyNone;
Form2.ADOConnection1.Connected:= True;
Form2.ADOTable1.Connection:=Form2.ADOConnection1;
Form2.ADOTable1.TableName:='Users';
Form2.ADOTable1.Active:= True;
end;Последний раз редактировалось lmikle, 12.05.2011 в 01:07. |
|
#14
|
|||
|
|||
|
Простыми словами ExtractFilePath(ParamStr(0)) определяет путь до нашего проекта до папки где хранится exe файл его в текстовый документ не записуй в текстовый документ пропиши остаточный путь к примеру если бд хранится прям в тойже папки то в текстовый документ запиши bd.mdb если еще в какой папки то допиши ПАПКА\bd.mdb
Код:
var bd:string; //строковая переменная для хранения полного пути к файлу bd:=ExtractFilePath(ParamStr(0))+'bd.mdb'; DataModule12.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+bd+';Persist Security Info=False'; // указываем кучу параметров и новый путь к бд DataModule12.ADOConnection1.Connected:=True;// подключаем бд далее будем с ней работать p.s. Вроде както так если не прав исправьте буду рад ток походку попроще ![]() |
|
#15
|
|||
|
|||
|
У меня такое впечатление, что у вас в файле Setup.txt также записана функция с параметром ExtractFilePath(paramstr(0)), кроме того, до этой функции в этот файл (Setup.txt) как-то записалась часть левого пути, в итоге в переменную buf заносится абракадабра, типа после чтения из файла получаем:
buf = C:\Users\Виктор\Desctop\ПРОЕКТ 2.0\ExtractFilePath(paramstr(0)) Проверьте файл Setup.txt, там не должен находиться ExtractFilePath(paramstr(0)). И в данном случае ExtractFilePath даёт путь, начиная с локальных дисков "C:" или "D:" и т.п. Почитайте литературу о ExtractFilePath, у вас в мыслях путаница. Вы не правильно формируете путь. Если БД лежит не вместе с программой, то ExtractFilePath ничем не поможет, в том контексте, как вы его пытаетесь применить. Возможно, что путь к БД: "C:\Users\Виктор\Desctop\ПРОЕКТ 2.0\BD\БД.mdb" И тогда ExtractFilePath под исполняемый файл (параметр paramstr(0)) тут совершенно лишний. Последний раз редактировалось blazonic, 12.05.2011 в 11:18. |