使用有序Sql语句填充内存中数据集(TdxMemData)时出现意外结果



我有一个数据集(TADODataset),它被馈送到内存中的数据集(TdxMemData)中,该数据集被分配给数据源(TDataSource)。当我运行程序并且SQL没有按任何顺序排序时,返回的三条记录显示在3个独立的报告页面(ReportBuilder)上。但是,当我按字段排序时,报告的前两条记录会附加在一起,只有最后一条记录才能正确显示。

这很神秘,信息量也不大,但我想看看我是否遗漏了一些简单的东西。代码不应该产生不同的结果,因为我订购了SQL,但事实确实如此。这让我相信我错过了组件的设置。是否有人知道排序SQL数据集可能导致的任何问题,以及它与内存中数据集交互的方式?我对使用这些组件类型非常陌生,我只是在寻找比我更有经验的人,让我知道我应该把它带到哪里。任何帮助都将不胜感激,如果有什么不清楚的地方,我会尽力澄清。提前谢谢。

更新8.14.2013:

SQL语句(在Order By之前):

SELECT r.RecordID, r.VisibleRouteID, r.DriverSideStudentsPerSeat,
       r.ServiceSideStudentsPerSeat, v.Vehicle, v.DriverSideRows, 
       v.ServiceSideRows, v.RecordID AS VehicleID 
FROM Route r
LEFT OUTER JOIN Vehicles v ON v.RecordID = r.VehicleID
WHERE r.RecordID = :RouteID 

SQL语句(添加订单依据后):

SELECT r.RecordID, r.VisibleRouteID, r.DriverSideStudentsPerSeat,
       r.ServiceSideStudentsPerSeat, v.Vehicle, v.DriverSideRows, 
       v.ServiceSideRows, v.RecordID AS VehicleID 
FROM Route r
LEFT OUTER JOIN Vehicles v ON v.RecordID = r.VehicleID
WHERE r.RecordID = :RouteID
ORDER BY r.VisibleRouteID

我在使用AceReporter时遇到了类似的问题。根据@AlexSC的说法,当对项目进行排序时,您在报告中定义的分组听起来像是将其中两条记录放在同一页上。例如,如果我有一个有3条记录的数据集:

col1, col2
----------
A, 1
B, 2
A, 3

如果我的报告按第1列分组,这将显示为3组,因为我们进入A-B-A。然而,如果我在col1上排序,那么行是A-A-B,所以前几行也被分组在一起。

最新更新