Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Путь к БД ADOConnection


Andrewtitoff ©   (2012-02-20 10:27:00) 

Подскажите пожалуйста, у меня WIN 7x64 + RAD Studio XE
Подключаюсь к БД через ADOConnection, когда указываю прямой путь т.е. "C:\Users\Andrew\Desktop\ELECTRICAL-TEST\MY_PROG\NEW.mdb" - то естественно все нормально но само собой только на моем компьютере, а когда я пишу просто "NEW.mdb" (естественно файл лежит в каталоге с программой) - то пишет невозможно найти файл в "C:\Windows\System32"..., как мне сделать что бы он искал в текущем каталоге?


sniknik   (2012-02-20 16:36:00) [1]

> -работает пока снова в настройки не залезешь.. =)))
текущий путь сменился при выборе из диалога.

блин послушался бы умного совета из [1]... вместо шаманства при программировании, а после при работе с "творением".
хотя...
> и в ADOTable.active...
о чем это я... все закономерно.


Anatoly Podgoretsky   (2012-02-20 14:49:00) [2]


> Блин, там слэш не нужен :(

Не страшно, система не боится таких.


andrewtitoff   (2012-02-20 14:15:00) [3]


> Нет.
>

Ну вот хотябы разочаровывающий но исчерпывающий ответ на вопрос... =)))
Хотя после долгих мучений он у меня все таки коннектится все таки стал, правда я сам не понял почему, но когда я сначала указываю на базу, а потом стираю и оставляю только имя самой базы -работает пока снова в настройки не залезешь.. =)))


MsGuns   (2012-02-20 14:04:00) [4]

Блин, там слэш не нужен :(


MsGuns   (2012-02-20 14:00:00) [5]

procedure TForm1.FormCreate(Sender: TObject);
begin
 ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0; '+
                              'Persist Security Info=False; Data Source='+
   ExtractFilePath(Application.ExeName)+'\MyDB.mdb';
end;


Ega23   (2012-02-20 13:57:00) [6]


> Хорошо, признаюсь что не совсем корректно поставил вопрос,
>  попробую переформулиравать:


Поздно, джинн улетел, поезд ушёл.  :)


> только средствами настроек самого компилятора и компонента
> ADOConnection


Нет.


andrewtitoff   (2012-02-20 13:45:00) [7]

Ну вы ребята и развели демагогию... =))))
Хорошо, признаюсь что не совсем корректно поставил вопрос, попробую переформулиравать:

Можно ли как-то указать ADOConnection что бы она искала базу в каталоге с программой, кстати он и является текущем при запуске программы, а потому ADOConnection у меня всё время подключен и переподключения мне не нужна - а значит в моем случае текущий - он и есть каталог программы.., так вот извиняюсь что отвлекся, собсттвенно суть вопроса можно ли все сделать вне тела программы т.е. ничего не кодить, только средствами настроек самого компилятора и компонента ADOConnection "Свойства канала передачи данных"?...


andrewtitoff   (2012-02-20 13:38:00) [8]


> Я тебе ответил на три твоих вопроса:

Так я и не задавал этих вопросов... =))))

Это я и сам могу написать, но я не хочу каждый раз при написании проги где нужно общаться с БД руками коннектиться к базе..., я спрашивал можно ли в самой среде пути поиска по умолчанию прописать(вернее стереть что бы искал в текущем), ну или может быть есть какая системная переменная что бы не прямой а относительный путь указать прям в диалоге ADOConnection


Ega23   (2012-02-20 13:36:00) [9]


> Откуда брать имя и папку с базой в случае произволного местоположения
> джинн не сказал потому что не был вопрос такой поставлен.


Вопрос был поставлен: "что бы искал в текущем каталоге а не в системном"

"Текущий каталог приложения" - это CurrentDir. И оно не совсем тот каталог, из которого запускается приложение.
Тупой пример (который меня просто дико напрягает). Есть IBExpert. В нём открыт некий скрипт на создание БД. Скрипт правится другим редактором, но иногда выполняется из среды IBE. Есть база, которая время от времени восстанавливается заново и на неё патч-скрипт накатывается. Файл с бэкапом БД лежит D:\ ....., файл со скриптом - s:\ .....
И CurrentDir меняется всё время... Нервирует.


MsGuns   (2012-02-20 13:25:00) [10]

Вообще-то да, конечно.
Но если ярлык создавался самим юзером, то по умолчанию (вроде как в 98-й и более ранней винде, точно не помню) в папку ничего не вписывается и соответственно при запуске текущим "назначался" System32 или какой нибудь "Мои документы".
В итоге "Почему пррограмма вылетает ?"


sniknik   (2012-02-20 13:20:00) [11]

> "По умолчанию" обычно подразумевают папку с программой.
текущую папку вообще то, а "с программой" ее делает указание папки программы (рабочей) в ярлыке.


MsGuns   (2012-02-20 13:16:00) [12]

"По умолчанию" обычно подразумевают папку с программой. Как определить эту папку (папку откуда было запущено приложение, а не текущую папку Windows), - совет джина №1
Как подставить эту папку + имя файла базы - подсказка джина №2. Ну и надо немного мозг поэксплуатировать (совсем чуть-чуть) чтобы всунуть в нужное место полное имя файла
Откуда брать имя и папку с базой в случае произволного местоположения джинн не сказал потому что не был вопрос такой поставлен. А если бы был, то скорее всего джин порекомендовал бы посмотреть на TIniFile или на реестр винды.

А вообще джины не любят несообразительных и ленивых :)


sniknik   (2012-02-20 13:15:00) [13]

andrewtitoff ©   (20.02.12 11:15) [2]
> Так это понятно
andrewtitoff ©   (20.02.12 12:00) [4]
> Ну это все понятно
чего тогда так много вопросов если все понятно?

> а нельзя просто в среде как то пути прописать где искать по умолчанию?
в ODBC DSN например можно, а использовать уже его. но не думаю, что это будет проще/лучше чем Ega23 ©   (20.02.12 10:30) [1]


Ega23   (2012-02-20 12:53:00) [14]


> Простите конечно, но я не пойму, мы с вами на одном языке
> общаемся?


Я тебе ответил на три твоих вопроса:
1. Как найти каталог, где лежит запускаемый файл
2. Что нужно прописать в ConnectionString
3. Как найти текущую директорию.

Ты использовал свои 3 желания, джинн улетел. :)


andrewtitoff   (2012-02-20 12:47:00) [15]


> http://docwiki.embarcadero.com/VCL/en/SysUtils.GetCurrentDir
>
>

Простите конечно, но я не пойму, мы с вами на одном языке общаемся?... =)))


Ega23   (2012-02-20 12:08:00) [16]


> что бы искал в текущем каталоге а не в системном...


http://docwiki.embarcadero.com/VCL/en/SysUtils.GetCurrentDir


andrewtitoff   (2012-02-20 12:00:00) [17]

Ну это все понятно, а нельзя просто в среде как то пути прописать где искать по умолчанию?, что бы искал в текущем каталоге а не в системном...


Ega23   (2012-02-20 11:19:00) [18]


> Так это понятно, а как мне это в ADOConnection запихнуть,


http://www.connectionstrings.com/


andrewtitoff   (2012-02-20 11:15:00) [19]


> ExtractFilePath(ParamStr(0)) + 'ttt.mdb'

Так это понятно, а как мне это в ADOConnection запихнуть, при чем мне надо что бы всё автоматически при запуске подключалось, а так и в ADOConnection подключение в false выставляется и в ADOTable.active..., а у меня их еще и к тому же несколько...


Ega23   (2012-02-20 10:30:00) [20]

ExtractFilePath(ParamStr(0)) + 'ttt.mdb'


Наверх

Титульная страница Поиск, карта сайта Написать письмо