Wagner
Here's a interesting Business logic from "ASTA" I will want you to develop for RemoteDB.
On Asta we have the ability to create a temporary dataset with any number of input/output parameters so clients can call the "Method" and execute something.
I know you will redirect me to create such funcionality with XData but this Asta technique will be excellent if you add to RemoteDB features because it's completely GUI based.
Once a RemoteDB user is authorized to access the DB remotely then we can use this type of component.
Check the image and the code below so you can understand.
--------------------------------------------------
procedure TAstaDataModule.CambiaDeStatusRFCActions0Action(Sender: TObject;
ADataSet: TDataSet; ClientParams: TAstaParamList);
Var
ResultadoCambiaStatusFINKOKRFC: RegistrationResult;
Enlace: THTTPRIO;
begin
// Ejecutamos la inserción del RFC como socio de negocio
CoInitialize(nil);
// Consultamos los timbres del RFC solicitado
Log('Cambiando Status ' + ClientParams.ParamByName('Status').AsString + ' al RFC ' + ClientParams.ParamByName('Rfc').AsString);
ClientParams.ParamByName('Resultado').AsBoolean := False;
ClientParams.ParamByName('Error').AsString := EmptyStr;
// Se invoca el Webservice sin taxpayer para que devuelva TODOS aquellos que cumplen con el rango de fechas
Try
ResultadoCambiaStatusFINKOKRFC := GetApplicationRegistro.edit('', '', ClientParams.ParamByName('Rfc').AsString, ClientParams.ParamByName('Status').AsString, Nil, Nil, EmptyStr);
// Retornamos los valores
ClientParams.ParamByName('Resultado').AsBoolean := ResultadoCambiaStatusFINKOKRFC.success;
ClientParams.ParamByName('Error').AsString := ResultadoCambiaStatusFINKOKRFC.message;
// Si fué exitosa la asignación introducimos los valores
If ResultadoCambiaStatusFINKOKRFC.success then
Begin
With QueryCambiaStatusRFC do
Begin
Close;
ParamByName('Usuario').AsInteger := ClientParams.ParamByName('Usuario').AsInteger;
If ClientParams.ParamByName('Status').AsString = 'A' then ParamByName('Status').AsBoolean := True Else ParamByName('Status').AsBoolean := False;
ParamByName('Rfc').AsString := ClientParams.ParamByName('Rfc').AsString;
ExecSQL;
End;
End;
Except
ClientParams.ParamByName('Error').AsString := 'Error en la comunicación con el PAC.';
End;
end;