Menu

#528 Sort is not working on TimeStamp fields

8.0-Beta
closed
nobody
None
Bug Report
2021-09-01
2021-07-22
Marcin
No

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

Related

Feature Requests / Suggestions: #39

Discussion

  • marsupilami79

    marsupilami79 - 2021-08-23

    but comparision in this function takes data from TZVariant(V1).VDateTime while data is stored in TZVariant(V1).VTimeStamp.

    @egonhugeist: That seems to be a design problem - what is the difference between TimeStamp and DateTime anyway?

     
  • marsupilami79

    marsupilami79 - 2021-09-01

    Hello Marcin,

    I implemented your Fix. Thank you and best regards,

    Jan

     
  • marsupilami79

    marsupilami79 - 2021-09-01
    • status: open --> closed
     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.