Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизСоздание ADOConnection во время прогона программы Найти похожие ветки
← →
diabolik_krsk (2004-10-13 08:15) [0]Уважаемые мастера, проблема следующего содержания.
Существуют несколько баз данных Access (у баз одинаковые структуры). На форме существует Treeview куда грузится структрура всех баз с параметрами SQL запросов для каждого пункта.
Так же есть DBGrid"ы куда и грузятся собственно данные из разных баз.
При занесении данных в TreeView создается один ADOConnection-ADOQuery- DataSource с попеременной сменой пути расположения базы (дополнительно берется из файла настройки).
В то же время перемещение по дереву TreeView вызывает ошибку, т.к. параметры SQL запросов связаны с уже закрытыми базами.
Таким образом, для каждой базы данных (занесенных в файл настройки) необходимо создать ADOConnection в ходе прогона программы => появляется 2 и более ADOConnection и, соответственно ADOQuery и DataSource для каждого соединения.
Подскажите каким образом это сделать?
Кроме того в ходе выполнения программы необходимо обращиться к этим компонентам и менять их настройки. Каким образом осуществлять доступ к компонентам?
← →
tERRORist © (2004-10-13 08:24) [1]При заполнении TreeView для каждого уровня создавать соответсвующий компонент(ы):
0-й (базы) - ADOConnection
1-й (таблицы, запросы) - ADODataSet, DataSource
Ссылаться на компонеты с помощью свойства TreeNode.Data
← →
tERRORist © (2004-10-13 08:51) [2]Что-то типа такого:
1. Соединения
var ac:TADOConnection;
CurrentDB:TTreeNode;
ac:=TADOConnection.Create(Self);
ac.ConnectionString:="..............";
ac.Name:="..............";
CurrentDb:=TreeView.AddObject(nil,ac.Name,ac);
1. Запросы
var ac:TADOConnection;
aq:TADOQuery;
ds:TDataSource;
CurrentDB:TTreeNode;
CurrentQuery:TTreeNode;
CurrentDB:=....; // узел в дереве с сооветсвующей БД
ac:=(CurrentDB.Data as TADOConnection);
aq:=TADOQuery.Create;
aq.Connection:=ac;
aq.Name:=".............";
ds:=TDataSource.Create;
ds.DataSet:=aq;
CurrentQuery:=TreeView.AddChildObject(CurrentDB,aq.Name,ds);
Обращаться к Query так:
((CurrentQuery.Data as TDataSource).DataSet as TADOQuery)
← →
KSergey © (2004-10-13 12:59) [3]Лично я не понял вопроса....
← →
diabolik_krsk (2004-10-14 14:29) [4]Все, спасибо. Я разобрался.
> KSergey © (13.10.04 12:59) [3]
> Лично я не понял вопроса....
Извените если непонятно формирую вопрос.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c