Вопрос № 93436: Спасибо за ответ на предыдущий вопрос. Все заработало.
Но вот новая проблема.
Готовая программа работает только на моем компьютере и только в том каталоге, который указан в алиасе к БД.
Пробовал свойству DataBaseName таблиц БД присваивать...
Вопрос № 93.436
Спасибо за ответ на предыдущий вопрос. Все заработало.
Но вот новая проблема.
Готовая программа работает только на моем компьютере и только в том каталоге, который указан в алиасе к БД.
Пробовал свойству DataBaseName таблиц БД присваивать текущий путь к программе в событии BeforeOpen. Вот так:
Путь вроде прописывается, но при исполнении вылетает ошибка "Cannot perfom this operation on a closed dataset".
Как заставить программу работать в любом каталоге и на любом компьютере? Может есть какие-нибудь другие решения?
Отправлен: 30.06.2007, 11:49
Вопрос задал: Kerseal (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Kerseal!
Во первых не нужно использовать компонент Table
Во-вторых соединение с БД осуществляется компонентом IBDatabase, а все остальные присоединяются к нему
В прикрепленном файле рабочий пример, который строит простое дерево и отображает потомков ветви на Gride и форме
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Отвечает: Виктор Пырлик
Здравствуйте, Kerseal!
Если вы используете BDE, а в случае с локальными таблицами типа Paradox и Dbase это так (исключая работы через ADO). Вам надо устанавливать на всех машинах, где используется программа драйвер BDE. Можно создать инсталляционный пакет, входит в поставку Delphi или, отдельно установить – есть инсталлятор BDE, или, просто скопировать библиотеки из каталога BDE (расположен как правило: C:Program FilesCommon FilesBorlandBDE ), в каталог с программой.
Для удобства, лучше добавить в проект компонент Database1. Шелкнув по нему мышкой – откроется окно. В этом окне произвольно пишем имя базы данных, Driver Name выбираем STANDART и нажимаем кнопку Defaults – сформируются параметры. Первая строка path будет пустой – в неё пишем относительный путь. Всё. Теперь, в таблицах просто выбираем DataBaseName нашу базу.
Обычно, базу открывают при загрузке приложения, или после каких-то проверок. Не желательно это делать в конструкторе, можно определить событие OpenDB, например, в котором проверив путь к базе, если он есть, в цикле открыть таблицы
procedure TForm1.OpenDB;
var i:integer;
begin
for i:=0 to Database1.DataSetCount-1 do
Database1.DataSets[i].Active := true;
end;
и вызвать эту процедуру, например, при открытии формы.
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: 4-ый класс)
Ответ отправлен: 30.06.2007, 12:57