记录在 SQL 服务器中排序,但是当带到 MS Access 子窗体时,排序不同
Records are sorted in SQL Server, but when brought to MS Access subform, the sorting is different
我在 SQL 服务器中的查询是根据几个因素排序的,当我执行它时,排序都是正确的。我有一些使用以下代码填充的子表单:
Set db = OpenDatabase("", False, False, globalstrSQLConnection)
strSQL = "SELECT * FROM qryTaskSimple"
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot, dbSeeChanges)
Set Me.Recordset = rs
其中 globalstrSQLConnection
是我的 SQL 服务器上的数据库连接,qryTaskSimple
是上面提到的查询。但是子表单是按照完全不同的标准排序的。而不是按以下方式排序:
ORDER BY CASE WHEN tblTask.JobNum LIKE '***FULL***' THEN 0 ELSE 1 END, DivisionSortID, SuperintendentSortID, ISNULL(dbo.tblTask.Ordering, 999999999),
dbo.tblTask.JobNum, dbo.tblTask.Sequence
如查询中所述,它似乎仅按 tblTask.JobNum
排序...即使我将整个 ORDER BY
子句替换为 ORDER BY DivisionSortID
... 而且我不没有任何 VBA 代码可以进一步对子表单进行排序。
Access 中的查询和 table 有一个基础 query/table 对象 order by
,它可以覆盖 SQL order by
。您可以在各自的对象属性中看到它(并删除它)。
这可能非常令人沮丧,我不确定这是否是正在发生的事情,但无论如何,您可以通过简单地将它添加到您的 SQL 语句来强制进行所需的排序,将查询视为 table.
strSQL = "SELECT * FROM qryTaskSimple ORDER BY <your desired sorting using any qryTaskSimple cols>"
如果这不起作用,则在表单的 load() 事件中尝试(子)表单 orderby:
Private Sub Form_Load()
me.orderby = "your order by statements"
if me.orderbyon = false then me.orderbyon = true
End Sub
我在 SQL 服务器中的查询是根据几个因素排序的,当我执行它时,排序都是正确的。我有一些使用以下代码填充的子表单:
Set db = OpenDatabase("", False, False, globalstrSQLConnection)
strSQL = "SELECT * FROM qryTaskSimple"
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot, dbSeeChanges)
Set Me.Recordset = rs
其中 globalstrSQLConnection
是我的 SQL 服务器上的数据库连接,qryTaskSimple
是上面提到的查询。但是子表单是按照完全不同的标准排序的。而不是按以下方式排序:
ORDER BY CASE WHEN tblTask.JobNum LIKE '***FULL***' THEN 0 ELSE 1 END, DivisionSortID, SuperintendentSortID, ISNULL(dbo.tblTask.Ordering, 999999999),
dbo.tblTask.JobNum, dbo.tblTask.Sequence
如查询中所述,它似乎仅按 tblTask.JobNum
排序...即使我将整个 ORDER BY
子句替换为 ORDER BY DivisionSortID
... 而且我不没有任何 VBA 代码可以进一步对子表单进行排序。
Access 中的查询和 table 有一个基础 query/table 对象 order by
,它可以覆盖 SQL order by
。您可以在各自的对象属性中看到它(并删除它)。
这可能非常令人沮丧,我不确定这是否是正在发生的事情,但无论如何,您可以通过简单地将它添加到您的 SQL 语句来强制进行所需的排序,将查询视为 table.
strSQL = "SELECT * FROM qryTaskSimple ORDER BY <your desired sorting using any qryTaskSimple cols>"
如果这不起作用,则在表单的 load() 事件中尝试(子)表单 orderby:
Private Sub Form_Load()
me.orderby = "your order by statements"
if me.orderbyon = false then me.orderbyon = true
End Sub