Fórum Erro na execução de Método com parâmetro de função do tipo Currency utilizando DataSnap #443655
22/05/2013
0
Boa tarde,
Gostaria de auxilio para resolução de problema, estou iniciando com DataSnap e tenho um método que tem um parametro do tipo Currency, mas quando executo na aplicação cliente, ele me retorna o seguinte erro :
Remote error : TDBXTypes.BCD value type cannot be accessed as TDBXTypes.Double value type.
deixo aqui o metodo no servidor, para tirar alguma dúvida, imagino que o erro esteja no parametro Saldo que é do tipo currency, e na base de dados Firebird é do tipo Numeric(15,2), agora na passagem do parametro estou passando como Double, se alguém tiver uma opção melhor de passar este parametro fico agradecido, pois já tentei passar de varias maneiras.
function TClienteDAO.Alterar(Codigo : Integer; Nome : string; Ativo : String; Saldo : Currency): Boolean;
var
T : TDBXTransaction;
begin
Conecta := Conexao.getConnection;
T := Conecta.BeginTransaction;
try
Comand := Conecta.CreateCommand;
Comand.Text :='UPDATE CLIENTE SET NOME =?, ATIVO =?, SALDO =? WHERE CODIGO =?';
Comand.Prepare;
Comand.Parameters.Parameter[0].Value.SetAnsiString(Nome);
Comand.Parameters.Parameter[1].Value.SetAnsiString(Ativo);
Comand.Parameters.Parameter[2].Value.SetDouble(Saldo); // imagino que o erro esteja aqui...
Comand.Parameters.Parameter[3].Value.SetInt32(Codigo);
Comand.ExecuteQuery;
Conecta.CommitFreeAndNil(T);
Result := True;
finally
Conecta.RollbackIncompleteFreeAndNil(T);
Result := False;
end;
end;
Gostaria de auxilio para resolução de problema, estou iniciando com DataSnap e tenho um método que tem um parametro do tipo Currency, mas quando executo na aplicação cliente, ele me retorna o seguinte erro :
Remote error : TDBXTypes.BCD value type cannot be accessed as TDBXTypes.Double value type.
deixo aqui o metodo no servidor, para tirar alguma dúvida, imagino que o erro esteja no parametro Saldo que é do tipo currency, e na base de dados Firebird é do tipo Numeric(15,2), agora na passagem do parametro estou passando como Double, se alguém tiver uma opção melhor de passar este parametro fico agradecido, pois já tentei passar de varias maneiras.
function TClienteDAO.Alterar(Codigo : Integer; Nome : string; Ativo : String; Saldo : Currency): Boolean;
var
T : TDBXTransaction;
begin
Conecta := Conexao.getConnection;
T := Conecta.BeginTransaction;
try
Comand := Conecta.CreateCommand;
Comand.Text :='UPDATE CLIENTE SET NOME =?, ATIVO =?, SALDO =? WHERE CODIGO =?';
Comand.Prepare;
Comand.Parameters.Parameter[0].Value.SetAnsiString(Nome);
Comand.Parameters.Parameter[1].Value.SetAnsiString(Ativo);
Comand.Parameters.Parameter[2].Value.SetDouble(Saldo); // imagino que o erro esteja aqui...
Comand.Parameters.Parameter[3].Value.SetInt32(Codigo);
Comand.ExecuteQuery;
Conecta.CommitFreeAndNil(T);
Result := True;
finally
Conecta.RollbackIncompleteFreeAndNil(T);
Result := False;
end;
end;
Leandro M.m
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)