DecimalSeparator + FireDac (Ignora a pontuação) com Exemplo
Existe alguma propriedade para setar no TFDConnection ou TFDStoredProc , para que o decimal separator seja respeitado?
Segue o exemplo de teste
var i: integer;
s: string;
d: TDatetime;
f: Extended;
begin
//Delphi Berlin
//Application in Firemonkey
//SQL Server 2014
i:= 1;
s:= 'MARIO';
d:= date();
f:= 3.5;
System.SysUtils.FormatSettings.DecimalSeparator:= '.';
with FDStoredProc1 do
try
try
Params.ClearValues();
Params.FindParam('@ID').AsInteger := i;
Params.FindParam('@Texto').AsString := s;
Params.FindParam('@data').AsSQLTimeStamp := DateTimeToSQLTimeStamp(d);
Params.FindParam('@valor').AsFloat := f;
Params.FindParam('@valor2').AsFloat := f;
Params.FindParam('@Texto2').AsString := s;
ExecProc;
//EXECUTADO:
// [sp_firedacTest] 1,'MARIO','2016-07-20 00:00:00',3,5,3,5,'MARIO'
except
on e:Exception do ShowMessage(e.Message);
//ERRO: Há muito argumentos especificados para o
// procedimento ou a função sp_firedacTest.
end;
finally
System.SysUtils.FormatSettings.DecimalSeparator:= ',';
end;
Segue o exemplo de teste
var i: integer;
s: string;
d: TDatetime;
f: Extended;
begin
//Delphi Berlin
//Application in Firemonkey
//SQL Server 2014
i:= 1;
s:= 'MARIO';
d:= date();
f:= 3.5;
System.SysUtils.FormatSettings.DecimalSeparator:= '.';
with FDStoredProc1 do
try
try
Params.ClearValues();
Params.FindParam('@ID').AsInteger := i;
Params.FindParam('@Texto').AsString := s;
Params.FindParam('@data').AsSQLTimeStamp := DateTimeToSQLTimeStamp(d);
Params.FindParam('@valor').AsFloat := f;
Params.FindParam('@valor2').AsFloat := f;
Params.FindParam('@Texto2').AsString := s;
ExecProc;
//EXECUTADO:
// [sp_firedacTest] 1,'MARIO','2016-07-20 00:00:00',3,5,3,5,'MARIO'
except
on e:Exception do ShowMessage(e.Message);
//ERRO: Há muito argumentos especificados para o
// procedimento ou a função sp_firedacTest.
end;
finally
System.SysUtils.FormatSettings.DecimalSeparator:= ',';
end;
Mario França
Curtidas 0