ResultSet.GetCompareFuncs for TimeStamp fields (ZAbstractRodDataset.pas line 5362) returns CompareDateTime_Asc (from ZDbcresultSet line 3283)
but comparision in this function takes data from TZVariant(V1).VDateTime while data is stored in TZVariant(V1).VTimeStamp.
I noticed that ZCompareTimeStamp is there so for possible fix i added in ZDbcResultset.pas
function CompareTimeStamp_Asc(const Null1, Null2: Boolean; const V1, V2): Integer; begin if Null1 and Null2 then Result := 0 else if Null1 then Result := -1 else if Null2 then Result := 1 else Result := ZCompareTimeStamp(TZVariant(V1).VTimeStamp, TZVariant(V2).VTimeStamp); end; function CompareTimeStamp_Desc(const Null1, Null2: Boolean; const V1, V2): Integer; begin Result := -CompareTimeStamp_Asc(Null1, Null2, V1, V2); end;
And changed in TZAbstractResultSet.GetCompareFuncs (ZDbcResulSet.pas) for timestamp's
stTimestamp: Result[i] := CompareTimestamp_Asc;
and
stTimestamp: Result[i] := CompareTimeStamp_Desc;
then it works for me :)
Best regards,
Marcin
@egonhugeist: That seems to be a design problem - what is the difference between TimeStamp and DateTime anyway?
Hello Marcin,
I implemented your Fix. Thank you and best regards,
Jan