Excel ADOB SQLlogging集,ORDER BY在一个xlsx文件上工作,但不在其他人上?

为什么ORDER BY在一些xlsx文件上而不在其他的上?

我构buildSQL语句(使用ADOB)将数据从封闭的工作簿(我需要速度,并希望使用SQLsorting数据)移动到我的活动工作簿中。 下面是我使用的两个string,并且对于它们的关联文件都是完美的。

mySQL = "SELECT * FROM [" & SourceSheet$ & "$" & SourceRange$ & "] ORDER BY " & TargetSortColumn & ";" 'This works for my data dictionary. mySQL = "SELECT * FROM [" & SourceSheet$ & "$" & SourceRange$ & "];" 'This works for the Cost File. 

我无法find两个文件之间的根本区别。 我只是试图将工作表从每个closures的工作簿复制到我目前的工作簿,并用ORDER BYsorting。

我总是跳到我的错误陷阱,当我的成本文件使用ORDER BY。 当我点击下面的第二条语句时,会触发错误陷阱。

 Set Con = CreateObject("ADODB.Connection") Set Data = CreateObject("ADODB.Recordset") 

我已经使用debugging器来检查和传递到这个过程的参数是正确的每个文件。 我传入所有的string,并使用string来build立SQL语句,所以没有不匹配。

我已经打开这两个文件,并重新保存它们以确保它们不是文件的基本问题。 我正在使用Excel 2010。

两个文件中的工作表都有正确的名字,正确地传递给子程序。

两个工作表都有从单元格(1,1)开始的数据。

请记住这两个SQL语句对各自的文件正常工作。

为什么我不能在某些文件上使用ORDER BY?

我对这个问题上最有力的灰色细胞感到激动,任何指导都将不胜感激。

我知道了,但我不知道为什么, ORDER BY子句可能是NULL单元格崩溃?

我添加了一个WHERE子句,删除行code <> NULL ,然后我可以毫不费力地使用ORDER BY代码子句。

 mySQL = "SELECT * FROM [" & SourceSheet$ & "$" & SourceRange$ & "] WHERE code <> NULL ORDER BY code; 

这解决了这个问题。 我不明白为什么ORDER在我的EMPTY值的情况下不工作。 我只是希望他们在sorting顺序的顶部。

与VBA相比, WHERE子句是非常快速的。

无论如何,通过使用WHERE子句,SQL最适合工作! 小灰色的细胞现在处于和平状态。

Craigm