Andrey Maximenko. Ukraine
Member²
Code:
unit OracleFilter;
ttFloat:
case Operator of
opEQ: Result := Operand1.AsFloat = Operand2.AsFloat;
opNEQ: Result := Operand1.AsFloat <> Operand2.AsFloat;
end;
Code:
OracleData.pas
// Compare if two Doubles are as good as equal
// This function is necessary because SQL*Net converts floating point data
// a little bit different than Delphi
function AlmostEqual(D1, D2: Double): Boolean;
begin
if D2 <> 0 then D1 := (D1 - D2) / D2;
Result := Abs(D1) < 0.0000000001;
end;
Hi, Marco!
Can you change method comparing in OracleFilter
to AlmostEqual?
Example:
OracleDataSet1.sql.text := 'select 0.061 n from dual';
OracleDataSet1.open;
=>
1 visible records in OracleDataSet1
------------------------------------
OracleDataSet1.Filter := 'n=0.061';
OracleDataSet1.Filtered := true;
=>
no visible records in OracleDataSet1