comparing float in filter


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
 
Back
Top