![]() |
|
![]() ![]() ![]() |
|
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Есть компонента TDataBase. У неё есть свойство connected типа boolean.
В процессе проектирования это свойство устанавливается в True. Так вот, если перед компиляцией не установить connected в false, то на другом компьютере программа не запускется по следующей причине: - во время создания компоненты TDataBase она "ищет" сам файл базы данных, вот во время проектирования база "лежала" по одному пути, на другом компьютере (где будет работать прога) база может лежать по другому пути, а по сему TDataBase не находит сам файл БД, а Connecned ведь установлено в True - в итоге вываливается исключение и программа закрывается. Короче, нужно гарантированно установить свойство Connected в False или перед компиляцией или при создании самой компоненты TpFIBDatabase. В TDataModule.OnCreate не получиться, т.к. OnCreate формы наступает после создания всех компонент. Испольую TpFIBDatabase. |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Модератор: Сообщение скрыто. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 2 Всего: 484 |
Перевожу: В дизайнтайме нужно, чтобы свойство Connected было установлено в true.
А при компиляции в exe эта пропертя должна быть в False. То есть Connected в дизайнтайм - true, в рантайм - false. Проблема в том, что состояние сохраняется в dfm файл и срабатывает автоматом после выполнения конструктора. Соответственно выход - сделать так, чтобы пропертя в dfm не сохранялась. Пробовали сабклассить, устанавливая у проперти stored False - не получилось. Может у кого есть ещё идеи? |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
я имел ввиду, чито свойство не долно сохранять никакое другой значание, кроме False Добавлено @ 13:15 я уже залез в исходники, нарушив золотое правило и установил значение в конструкторе, ща буду тестировать
Добавлено @ 13:18 есть ещё вариант использовать псевдонимы, так сказать, т.е. есть свойство Alias типа String; А у FireBird есть файл алиасов. На одном компе у Alias`a с именем "Kvx" один путь, на другом - другой путь, но это запасной вариант уже, так сказать, т.к. некоторые TDatabase не имею алиасов, как у ADO, например. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 2 Всего: 484 |
Akella, так не получится.
Проперти подгружаются из dfm уже после отработки конструктора. |
|||
|
||||
Elfebet |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: нет Всего: 14 |
а почему бы не создать модуль и конектится с базой при помощи сессии, типа такого
ну если нет Алиаса, можно просто коннектится написав типа такого
и поставить чтоб при загрузке проекта загружался первым модуль и потом все остальные юниты. и все дела.... ![]() -------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
||||
|
|||||
Akella |
|
||||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
у вот у FIB+ нет сессии Добавлено @ 13:43
ты прав, ![]() ![]() Добавлено @ 13:45
может даже не при компиляции, а может даже непосредственно перед установкой значения свойства в True; Хотя именно при/перед компиляцией было бы даже лучше Добавлено @ 13:48 есть ещё свойство Befor Connect, попробую с ним " ![]() Добавлено @ 13:48 из исходников следут, что можно ещё в этом событии чего-то предприянять
Добавлено @ 13:52 к сожалению наличие файла БД невозможно проверить простым путём, т.к. строка подключения имеет вид "server:C:\Program\Data\Base.fdb" |
||||||||
|
|||||||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
А если её сразу в конструкторе уже прописывать как disconnected и затем коннектить в зависимости от режима (который опросить можно несколькими вам известными способами)? |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Придумал вот такое:
На форму кидаю ещё одну компоненту TpFIBDatabase. Вот у него всегда будет Connected в False, потому что во время дизайна нет надобности устанавливать Connected в True. Добавлено @ 14:02 вот сначал пытаюсь подключиться этой компонентой к базе, а потом уже и основной |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
прога уже запускается, уже легче, только при закрытии программы стало вываливаться исключение "Invalid Pointer Operation", будем рыть... |
|||
|
||||
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
всё вроде нормально работает. вот это пока не пробовал Добавлено @ 14:53 в constructor TFIBDatabase.Create(AOwner: TComponent); нет connected Добавлено @ 14:57 такое нашёл
|
||||
|
|||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
помоему я тут изобретаю велосипед
Добавлено @ 15:10 всё, тема закрыта, вычитал в документации.... ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |