Excel ADOB SQL记录集,ORDER BY工作在一个xlsx文件上,但不在其他文件上



为什么ORDER BY在某些xlsx文件上工作而在其他文件上不起作用?

我构建SQL语句(使用ADOB)从关闭的工作簿移动数据(我需要速度,并希望使用SQL对数据进行排序)到我的活动工作簿。下面是我使用的两个字符串,它们都可以完美地用于它们相关联的文件。

   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.

我找不出这两个文件有什么根本的不同。我只是想从每个关闭的工作簿中复制一个工作表到我的当前工作簿中,并使用ORDER BY对其进行排序。

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

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

我已经使用调试器来检查,并且传入此过程的参数对于每个文件都是正确的。我传入所有字符串并使用字符串来构建SQL语句,因此那里没有不匹配。

我打开了两个文件并保存了它们,以确保它们没有基本的问题。我使用Excel 2010。

两个文件中的工作表都正确地将其正确的名称传递给子例程。

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

请记住,这两个SQL语句在各自的文件中都能正常工作。

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

在这个问题上,我已经鼓动了小灰细胞最激烈,任何指导将不胜感激。

我明白了,但我不知道为什么,也许NULL单元格崩溃的ORDER BY子句?

我添加了一个WHERE子句,它删除了列code <> NULL的行,然后我可以毫无困难地使用ORDER BY代码子句。

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

这就解决了问题。我不明白为什么ORDER不工作在我的情况下与空值。我只是希望它们排在排序顺序的最前面。

与VBA相比,WHERE子句的速度快得惊人。

无论如何,通过使用WHERE子句,SQL工作得非常出色!小灰细胞现在平静了。

Craigm

相关内容

最新更新