【发布时间】:2014-03-10 14:42:19
【问题描述】:
我正在使用 Delphi 5 + BDE + Oracle。我有以下功能:
class function TClientDataSetFactory.GetClientDataSet(
const qryGen: TDataSet): TClientDataSet;
var
dspDados: TDataSetProvider;
begin
Result := nil;
try
try
Result := TClientDataSet.Create(nil);
dspDados := TDataSetProvider.Create(Result);
dspDados.DataSet := qryGen;
qryGen.Active := True;
qryGen.First;
Result.Data := dspDados.Data;
Result.First;
except
on E: Exception do
begin
raise;
end;
end;
finally
end;
end;
所以,当运行这个时:
var
qryGen: TQuery;
cdsGen: TClientDataSet;
begin
qryGen := nil;
try
try
qryGen := CriaQuery();
qryGen.SQL.Text :=
'SELECT SUM(TOTAL) AS TOTAL FROM MYTABLE';
cdsGen := TClientDataSetFactory.GetClientDataSet(qryGen);
ShowMessageFmt('Total: %f', [cdsGen.FieldByName('TOTAL').AsFloat]);
except
on E: Exception do
begin
raise;
end;
end;
finally
if Assigned(qryGen) then FreeAndNil(qryGen);
end;
end;
我得到了“159,00”但是,如果我运行这个:
ShowMessageFmt('Total: %f', [qryGen.FieldByName('TOTAL').AsFloat]);
我得到了“159,25”。
有人可以帮我吗?
【问题讨论】:
-
嗯...也许您需要在运行查询之前将 cdsGen“Total”字段定义为浮点 (ftFloat) 类型。
-
如果我定义为 ftFloat,我得到类型不匹配,预期 Float 并得到 BCD
标签: oracle delphi tclientdataset