Пользовательская процедура Delphi 10.3 MIDAS AppServer

#delphi #datasnap

#delphi #datasnap

Вопрос:

Я создал базовый сервер DataSnap. Файл -> Новый -> Другое -> DataSnap -> Сервер DataSnap.

В мастере сервера DataSnap я выбрал следующие параметры.

 [x] Windows
[x] Forms Application
[x] VCL Application
[x] Protocols TCP/IP , Server Methods Class , Sample Methods
[x] TCP/IP Port 32900
[x] TDSServerModule
  

Затем я добавил к ServerMethods1 подключение к базе данных, запрос и DataSetProvider.

На клиентском устройстве Android я добавил DSProviderConnection1 SQLConnection1 и набор данных клиента .

Это работает замечательно. Просто чтобы подтвердить, что сервер DataSnap и клиент взаимодействуют.

Теперь я хотел выполнить хранимую процедуру с клиента.

Итак, на сервере я создал в ServerMethods1 общедоступную процедуру.

 procedure DEVICE_STATUS( ID,UserName,SSID : string; SignalStrength,BatteryLevel : integer);
  

Очевидно, что это для тестирования…

 procedure TServerMethods1.DEVICE_STATUS( ID,UserName,SSID : string; SignalStrength,BatteryLevel : integer);
begin
  Form1.Edit1.Text:=ID;
end;
  

Вернувшись на телефон Android, я попытался

 NEBULA.AppServer.DEVICE_STATUS('N-01','-','-',0,0);
  

Но я получаю сообщение об ошибке IAppServer не содержит элемента с именем ‘DEVICE_STATUS’. Чего мне здесь не хватает?

Спасибо.

Комментарии:

1. Похоже , я забыл одну очень простую вещь . На клиенте Android. Щелкните правой кнопкой мыши на SQLConnection1 и создайте классы клиента DataSnap…..

2. Вы имеете в виду, что нашли решение? Если вы это сделали, либо удалите свой вопрос, либо введите решение в качестве ответа.

Ответ №1:

Решение :

На клиенте Android после настройки SqlConnection щелкните по нему правой кнопкой мыши и выберите Создать клиентские классы Datasnap. Сохраните устройство . Добавьте этот блок в предложение uses , где вы хотите выполнить процедуру , а затем .

 procedure TMainScreen.btnStatusClick(Sender: TObject);
var
  Temp : TServerMethods1Client;
begin
  SQLConnection1.Connected:=true;

  Temp := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
  try
    Temp.DEVICE_STATUS('N-01','-','-',0,0);

  finally
    Temp.Free;
  end;
end;