#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;