gpt4 book ai didi

sql-server - EXCEL SQL SELECT 无法识别 ThisWorkBook 中的字段名称

转载 作者:行者123 更新时间:2023-12-04 21:56:22 27 4
gpt4 key购买 nike

我是一个自学的 Excel VBA 和 SQL 用户。在添加复杂性之前,我正在测试一些简单的查询。我一定在这里遗漏了一些非常明显的东西......

我正在使用 ADO 连接在事件工作簿 (ThisWorkBook) 中的表上运行 SQL SELECT 语句。 Excel 表名为“tbl_QDB”,位于工作表“MyQDB”上。该表从单元格 A1 开始,因此 Table HeaderRowRange 上方没有空白或填充单元格。

我已经建立了到 ThisWorkBook 的 ADO 连接,并且工作正常。这是代码:

Sub ConnectionOpen2()

'### UNDER DEVELOPMENT
Dim sconnect As String
Const adUseClient = 3
Const adUseServer = 2
Const adLockOptimistic = 3
Const adOpenKeyset = 1
Const adOpenDynamic = 2

'used to connect to this workbook for SQL runs

On Error GoTo err_OpenConnection2

Set cn2 = CreateObject("ADODB.Connection")
Set rec2 = CreateObject("ADODB.Recordset")
rec2.CursorLocation = adUseClient
rec2.CursorType = adOpenStatic
rec2.LockType = adLockOptimistic

datasource = ThisWorkbook.FullName

sconnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & datasource & ";" & _
"Extended Properties=""Excel 12.0;HDR=YES;ReadOnly=False;Imex=0"";"

cn2.Open sconnect

'etc, etc...

End Sub

我可以运行这个最简单的基本 SELECT 查询:
SQLSTR="SELECT * FROM [MYQDB$]"
rec2.open SQLSTR, cn2

这有效并产生 10 条记录,即 rec2.recordcount=10。

但是,如果我尝试这个,它会出错:
SQLSTR="SELECT QID_1 FROM [MYQDB$]"

enter image description here

QID_1 是工作表“MyQDB”上表中的有效字段。
如果我将 QID_1 括在 () 或 [] 或 `` 中,它不会改变错误
我什至可以用组成的字段替换字段名称,例如DonaldDuck 和我得到同样的错误。

如果我使用“*”,但如果我使用表中的任何字段名称,为什么 SELECT 语句会起作用?这似乎很基本,我觉得我一定错过了一个简单但关键的点。

如果有人能指出错误,我将不胜感激!

最佳答案

SQL 应该可以工作 - 如果该字段存在。执行Select *并转储字段列表:

For i = 0 To rec2.Fields.Count - 1
Debug.Print rec2.Fields(i).Name
Next i

关于sql-server - EXCEL SQL SELECT 无法识别 ThisWorkBook 中的字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43914002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com