Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Telepuzic
Зарегистрирован: 17.03.2006 Сообщения: 4
|
Добавлено: Пт Мар 17 2006 11:43 Заголовок сообщения: Клиент-сервер |
|
|
Всем добрый день. У мня такой вопрос. Есть аппликейшен сервер (Delphi 7) COM+, на TDataModule расположен TAdoConnection, TAdoTable и TDataSetProvider компилим сервер регистрируем его и делаем клиента. Клиент состоит из TForm,TDcomConnection,TClientDataSet,TDataSource и TDBGrid настраиваем компоненты, компилим, запускаем все работает прекрасно, видим данные в DBGrid-e. У меня есть некоторое количество баз данных (MSSQL2000) с одинаковой структурой на разных серверах. Каждый клиент должен иметь возможность сам указать к какому серверу и к какой БД подключится для просмотра и изменения данных. Как мне в моем апп. сервере организовать такое дело. Типа программы Query Analyzer из пакета MSSQL2000, там каждый клиент сам выбирает себе к какому серверу и с какой БД ему работать. Всем спасибо. |
|
Вернуться к началу |
|
|
Dimasm
Зарегистрирован: 25.04.2005 Сообщения: 454
|
Добавлено: Пн Мар 20 2006 22:21 Заголовок сообщения: |
|
|
на счёт подключения к разным серверам, так у
TADOConnection есть свойство ConnectionString
Изучи эту строку (которая генерится автоматически)
Там поёмйшь как подключастся к тому или иному серверу
А для использования разных баз и таблиц
то под таблици есть TADOTable
а если динамически
то запросиками типа SHOW databases; SHOW tables; _________________ С уважением Dimasm |
|
Вернуться к началу |
|
|
Telepuzic
Зарегистрирован: 17.03.2006 Сообщения: 4
|
Добавлено: Вт Мар 21 2006 09:12 Заголовок сообщения: |
|
|
Dimasm писал(а): | на счёт подключения к разным серверам, так у
TADOConnection есть свойство ConnectionString
Изучи эту строку (которая генерится автоматически)
Там поёмйшь как подключастся к тому или иному серверу
А для использования разных баз и таблиц
то под таблици есть TADOTable
а если динамически
то запросиками типа SHOW databases; SHOW tables; |
Ето я знаю, проблема в том что при вызове какойто процедуры сервера с клиента ели при ClientDataSet.Open создается какбы новый обиект TDataModule c ConnectionString:='' . Как, и где мне хранить ConnectionString для каждого клиента ?. |
|
Вернуться к началу |
|
|
Dimasm
Зарегистрирован: 25.04.2005 Сообщения: 454
|
Добавлено: Вт Мар 21 2006 19:15 Заголовок сообщения: |
|
|
Telepuzic писал(а): | Ето я знаю, проблема в том что при вызове какойто процедуры сервера с клиента ели при ClientDataSet.Open создается какбы новый обиект TDataModule c ConnectionString:='' . Как, и где мне хранить ConnectionString для каждого клиента ?. |
Ничего не понял, билеберда какая-то TDataModule, ConnectionStrings:roll:
у тебя что, одна программа имеет одновременно несколько "клиентов" которые должны уметь подключаться к разным SQL серверам? _________________ С уважением Dimasm |
|
Вернуться к началу |
|
|
Telepuzic
Зарегистрирован: 17.03.2006 Сообщения: 4
|
Добавлено: Ср Мар 22 2006 09:15 Заголовок сообщения: |
|
|
Dimasm писал(а): |
Ничего не понял, билеберда какая-то TDataModule, ConnectionStrings:roll:
у тебя что, одна программа имеет одновременно несколько "клиентов" которые должны уметь подключаться к разным SQL серверам? |
У меня многозвеное приложение. На одном компе (сервер) установлен MSSQL2000, на другом аппликейшин сервер (Com+ обиект) и уже клиентская части на разных компах. Все запросы клиенов делаются через аппликейшин сервер который уже тянет данные с MSSQL2000. При каждом обрашении к аппликейшин серверу создается новый эгземпляр обьекта который сам уничтажается при завиршения запроса. Я так думаю что тут надо както работать с глобальными перименами этог апп. сервера |
|
Вернуться к началу |
|
|
Dimasm
Зарегистрирован: 25.04.2005 Сообщения: 454
|
Добавлено: Ср Мар 22 2006 19:18 Заголовок сообщения: |
|
|
а... вот оно как
тогда, думаю надо создавать свой класс (например MyServAppClass) в числе членов которого должны быть те компаненты, которые ты используешь. В нём реализуешь необходимый функционал программы.
Всё создавать динамически.
Одним из родителей родителей MyServAppClass должен быть класс TObject
Используя возможности TObject и класс TObjectList
ты получишь динамический массив с элементами типа MyServAppClass.
при подключении нового клиента создаёшь новый объект MyServAppClass и добавляешь его к списку. лучше его делать отдельным потоком. по потоку на клиента.
типа так
(пишу на Builder)
TObjectList *ServAppList = new TObjectList();
....
MyServAppClass*NewClient = new MyServAppClass("SQL_server_1","mens_table");
ServAppList->Add(NewClient); _________________ С уважением Dimasm |
|
Вернуться к началу |
|
|
Telepuzic
Зарегистрирован: 17.03.2006 Сообщения: 4
|
Добавлено: Чт Мар 23 2006 09:13 Заголовок сообщения: |
|
|
Спосибо за помошь. Решил побрему приблизительно также, только использую ТStringList где храню базу и имеа сервера для каждого клиента. |
|
Вернуться к началу |
|
|
|