|
#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. |