Показать сообщение отдельно
  #4  
Старый 26.09.2008, 14:49
kiber0net0 kiber0net0 вне форума
Прохожий
 
Регистрация: 12.08.2008
Сообщения: 15
Репутация: 10
По умолчанию

Все, тему можно закрыть, я разобрался
Упустил из виду один пример который приводился в книге А.Сорокина "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) Теперь в нашем модуле ищем процедуру с именем которым мы назвали созданный метод и вписываем туда что-то типа
Цитата:
procedure TThermoForm.Qur(const sqlQ: WideString);
begin
DMConn.QConnection.SQL.Text:=sqlQ;
end;

где "sqlQ"- наша переменная созданная в методе.

I На приложении-клиенте:

1) Соединяемся с нашим сервером через компонент TDCOMConnection(на закладке "DataSnap")
2) Связываем TClientDataSet(закладка "Data Access") c TDCOMConnection через поле "Remote Server" и указываем в поле "Provider Name" имя нашего TDataSetProvider установленного на сервере.
3) Компонент DataSource1 связываем с TClientDataSet, а сам DataSource1 с TDBGrid(или как сами хотите);
4) Создаем две кнопочки и пишем примерно такой код.

Цитата:
procedure TClient.SpeedButton1Click(Sender: TObject);
begin
ClientConnection.DCOMConnection1.AppServer.Qur('se lect * from MK');
ClientConnection.ClientDataSet1.Close;
ClientConnection.ClientDataSet1.Open;
end;

procedure TClient.SpeedButton2Click(Sender: TObject);
begin
ClientConnection.DCOMConnection1.AppServer.Qur('se lect * from TableIn');
ClientConnection.ClientDataSet1.Close;
ClientConnection.ClientDataSet1.Open;
end;


Ну в общем думаю все теперь понятно.



P.S. Я понимаю что это и имелось ввиду выше изложенными подсказами, но для человека который сталкивается с этим в первый раз, тоесть меня, это только натолкнуло на выше приведенный способ, поэтому прошу воздержяться от коментариев типа "Так я об этом и говорил", "Ясен пень..." и т.д. .


P.S. P.S. Надеюсь я не напрасно потратил пол часа на набор этого сообщения и это кому-нибудь пригодится

Всем удачи, и большое спасибо за ответы(вопрос был в нескольких форумах), они меня и натолкнули на такой ответ.
Ответить с цитированием