![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Есть приложение-сервер, которое работает с БД mySQL через ADO.
Хочу написать приложение клиент, которое через протокол TCP/IP будет работать с БД через мое приложение-сервер. Реализовать отображение таблиц через ADOQuery уже заранее созданных на приложении-сервере у меня получается через DCOMConnection, DataSetProvider и ClientDataSet , а от отправить SQL - запрос из клиента для его вылолнения на сервере и получении результатов на клиенте не получается. Впринцепе можно предусмотреть все нужные таблицы для клиента на сервер-приложении и не мучаться, но хотелось зделать через один-два компонента чтобы в случая изменения клиента не приходилось переустанавливать серверное приложение Что можете посоветовать? Может есть лучшие способы связи клиент-сервер приложений? За ранее спасибо за ответы. |
#2
|
|||
|
|||
![]() Бери MIDAS и не разрушай мозг.
Если все-таки очень хочется самому повторить это, то учти, что у тебя будут приличные тормоза на "перекладке" данных. В свое время на этом наелись и перешли на MIDAS. |
#3
|
|||
|
|||
![]() lmikle
Может я конечно ошибаюсь, но на сколько я понимаю, я его именно и использую, проблема в том, как организовать через один набор данных посылать на сервер SQL-запросы и получать результат, не хочется на каждую функцию в клиенте создавать отдельный набор в приложении-сервер, и если мне захочется добавить какую нибудь функцию для клиента, то прийдется и server переделать ![]() И как тогда создать клиента, в котором необходмо будет получать отобранные строки БД по какому то параметру , например: с начала месяца по сей день, или за прошлий месяц или за прошлый год, если надо отсейять по дате и т.д. Последний раз редактировалось kiber0net0, 26.09.2008 в 13:01. |
#4
|
|||
|
|||
![]() Все, тему можно закрыть, я разобрался
Упустил из виду один пример который приводился в книге А.Сорокина "Delphi разработка баз данных" и помоему еще где-то виде, там очень подробно росказывается как считать количество юзерей подключенных в данный момент к серверу ![]() Все как всегда просто. Кто столкнется с такой проблемой - рецепт(для Delphi7): I На приложении-сервере: 1) Через меню "File -> New -> Other... -> закладка "Multitier" -> выбираем "Remote Data Module" -> OK -> называем этот модуль в поле "CoClass Name"; 2) В созданном модуле помешаем компонент TDataSetProvider(закладка "Data Access") 3) Настраиваем поле DataSet с компонентом TADOQuery или c чем вам удобней, главное чтоб было куда SQL-запрос задать 4) TADOQuery(или что там выбрали) соединяем с БД. 5) Через меню "viev -> Type Library" добавляем к нашему "Remote Data Module" новый метод. 6) На закладке "Parametrs" добавляем переменную типа "BSTR", в "modifier" оставляем "in", закрываем "Type Library". 7) Теперь в нашем модуле ищем процедуру с именем которым мы назвали созданный метод и вписываем туда что-то типа Цитата:
где "sqlQ"- наша переменная созданная в методе. I На приложении-клиенте: 1) Соединяемся с нашим сервером через компонент TDCOMConnection(на закладке "DataSnap") 2) Связываем TClientDataSet(закладка "Data Access") c TDCOMConnection через поле "Remote Server" и указываем в поле "Provider Name" имя нашего TDataSetProvider установленного на сервере. 3) Компонент DataSource1 связываем с TClientDataSet, а сам DataSource1 с TDBGrid(или как сами хотите); 4) Создаем две кнопочки и пишем примерно такой код. Цитата:
Ну в общем думаю все теперь понятно. P.S. Я понимаю что это и имелось ввиду выше изложенными подсказами, но для человека который сталкивается с этим в первый раз, тоесть меня, это только натолкнуло на выше приведенный способ, поэтому прошу воздержяться от коментариев типа "Так я об этом и говорил", "Ясен пень..." и т.д. ![]() P.S. P.S. Надеюсь я не напрасно потратил пол часа на набор этого сообщения и это кому-нибудь пригодится ![]() Всем удачи, и большое спасибо за ответы(вопрос был в нескольких форумах), они меня и натолкнули на такой ответ. |