1

我有一个 excel 表,我通过 ODBC 从 oracle 将数据加载到“数据”表中。然后应用excel sql过滤一些数据

注意:我在服务器机器上工作,所以不能粘贴整个代码。但无论我说什么都是 100% 正确的。

'Load Data Sheet
Sql = Select * from oracleTable
. . . 
set rs1 = commandData.Execute() 'record set
'Then code to store rs1 values in to Data Sheet...
.
.
'Apply filter in Excel 
query = select col1,col2,col3 from [Data$A1:IV100] where col1='10'
set rs = commandData.Execute() 'record set

在写入模式下打开时返回正确的结果。但是,当我将工作表置于只读模式以供用户保护工作表内容时。它可以从 oracle 加载数据,然后当我在行执行过滤器 excel sql 时显示错误。

   set rs = commandData.Execute() ' Error at this line when opened in read only mode

错误:

[Microsoft][ODBC Excel 驱动程序] 参数太少。预计 1

是否类似于以只读方式打开 excel 时它在 Temp 目录中打开,所以在执行 excel 查询时,是否很难找到正确的工作表来应用 sql?

4

2 回答 2

1

您没有正确使用 .Execute() 函数。

非行返回的语法:

commandobject.Execute RecordsAffected, Parameters, Options 

行返回的语法:

Set recordsetobject = commandobject.Execute (RecordsAffected, Parameters, Options) 

这是更深入报道的链接:http: //www.devguru.com/technologies/ado/quickref/command_execute.html

于 2012-08-01T17:55:06.267 回答
0

我自己经常遇到这个错误。如果你挂断了试试这个:

  1. 打开 VBA 编辑器
  2. 按 Ctrl + G (这将打开即时窗口)
  3. 将查询分配给变量后立即在代码中设置断点(在本例中为紧随其后的行query =
  4. 当代码在断点处中断时,输入?query即时窗口并按 Enter
  5. 这会将 SQL 语句写入即时窗口
  6. 查看 SQL 语句是否有任何错误(缺少引号等)

您还可以尝试将即时窗口中的 SQL 语句粘贴到数据库中并运行查询。有时您的数据库会抛出更具体的错误消息,您可以相应地更正您的 VBA 代码。

于 2012-08-01T18:22:06.423 回答