我有一个数据集(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,所以前几行也被分组在一起。