在MS Access 2010应用程序中,我使用此SQL语句:
SELECT myTable.field1, myTable.field2, ...
INTO temporaryTable
FROM myTable
ORDER BY myTable.field4, myTable.field3
temporaryTable中记录的顺序通常不符合ORDER子句中的定义,也不符合temporaryTable中的顺序。
一段时间以来,我已经尝试过订购和复制表格,然后再次将表格清除并修复,但它没有帮助。它似乎也是一个幻像,有时它起作用,有时候不起作用。因此,我必须编写一个透明但缓慢的VBA解决方法。
有人知道这个,这是一个错误,最好的解决方法是什么?我错过了要设置的参数吗?
提前致谢: - )
答案 0 :(得分:1)
对此类问题的标准回答是:
你永远不应该依赖于任何特定的表中的行" natural"订购。大多数(如果不是全部)数据库都是如此,而不仅仅是Access。换句话说,没有ORDER BY子句的SELECT * FROM something
(或等效)意味着可以任何顺序返回行。实际上,如果你多次执行它,这样的语句可能不一定会以相同的顺序返回每个调用的行(虽然Access确实对它有相当的一致性)。
如果您需要按特定顺序将记录导出到Excel(如问题评论中所述),那么您应该在Access中创建一个包含ORDER BY子句的已保存查询,然后将查询导出到Excel。
答案 1 :(得分:1)
如果您确实需要临时表和特定订单,请尝试使用DELETE + APPEND查询而不是MAKE TABLE查询。在“不那么临时”的表格中,您将能够定义主键和/或默认排序顺序。