gpt4 book ai didi

sql - 为什么 SQL 中字段名称周围的括号在 Access VBA ADO 中不起作用?

转载 作者:行者123 更新时间:2023-12-04 13:52:42 25 4
gpt4 key购买 nike

在 MS Access QBE 中,如果我粘贴以下 SQL,它会正常工作,并且会返回 2 条记录 -

SELECT [tmp_binning].[bn_faibash] FROM [tmp_binning] WHERE key2='0210043-HOU-STOR' ORDER BY [tmp_binning].[bn_faibash];

但是,如果我从 ADO 对象以编程方式在 VBA 中运行相同的查询,我会(错误地)没有记录。如果我更改 SQL 以删除字段名称周围的括号,它会正确返回 VBA ADO 中的 2 条记录。
SELECT [tmp_binning].bn_faibash FROM [tmp_binning] WHERE key2='0210043-HOU-STOR' ORDER BY [tmp_binning].bn_faibash;

我一直在谷歌上搜索失败,想弄清楚为什么会发生这种情况,谁能告诉我为什么?

谢谢。

最佳答案

首先,括号不是必需的,无论是在 Access UI 中还是通过 ADO。只需在所有环境中省略它们,问题就会消失。 (如果是 Access QBE 内容添加了括号,请考虑使用其他工具或手工编写 SQL 代码!)

其次,即使有括号,我也无法使用您的 SQL 代码重现错误,例如

Sub gjskdjs()

On Error Resume Next
Kill Environ$("temp") & "\DropMe.mdb"
On Error GoTo 0

Dim cat
Set cat = CreateObject("ADOX.Catalog")
With cat
.Create _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & _
Environ$("temp") & "\DropMe.mdb"
With .ActiveConnection

Dim Sql As String


Sql = _
"CREATE TABLE tmp_binning" & vbCr & "(" & vbCr & " bn_faibash VARCHAR(255)," & _
" " & vbCr & " key2 VARCHAR(255)" & vbCr & ");"
.Execute Sql

Sql = _
"INSERT INTO tmp_binning (bn_faibash, key2)" & _
" VALUES ('002', '0210043-HOU-STOR');"
.Execute Sql

Sql = _
"INSERT INTO tmp_binning (bn_faibash, key2)" & _
" VALUES ('001', '0210043-HOU-STOR');"
.Execute Sql

Sql = _
"SELECT [tmp_binning].bn_faibash " & vbCr & " FROM" & _
" [tmp_binning] " & vbCr & " WHERE key2 = '0210043-HOU-STOR'" & _
" " & vbCr & " ORDER " & vbCr & " BY [tmp_binning].bn_faibash;"
Dim rs
Set rs = .Execute(Sql)
MsgBox rs.GetString
End With
Set .ActiveConnection = Nothing
End With
End Sub

考虑将您的架构作为 SQL DDL 与示例数据一起发布。

关于sql - 为什么 SQL 中字段名称周围的括号在 Access VBA ADO 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4513552/

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