Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql VBA查询中列名称内的方括号?_Sql_Vba_Database_Ado - Fatal编程技术网

Sql VBA查询中列名称内的方括号?

Sql VBA查询中列名称内的方括号?,sql,vba,database,ado,Sql,Vba,Database,Ado,我试图访问的列的名称中有一个方括号问题 列名称:[KPI]标准交付功能,因此[找不到任何关于此的文档,所以我做了一些实验。我创建了一个小表,其中包含一列与您的列名完全相同的列,并从[Sheet1$]执行Select*,并查看了返回的记录集中的列名。结果发现,用括号替换的括号: Dim conn As ADODB.Connection, rs As ADODB.Recordset Set conn = New ADODB.Connection Dim connString As String co

我试图访问的列的名称中有一个方括号问题

列名称:[KPI]标准交付功能,因此[找不到任何关于此的文档,所以我做了一些实验。我创建了一个小表,其中包含一列与您的列名完全相同的列,并从[Sheet1$]执行
Select*
,并查看了返回的记录集中的列名。结果发现,用括号替换的括号:

Dim conn As ADODB.Connection, rs As ADODB.Recordset
Set conn = New ADODB.Connection
Dim connString As String
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Name & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;"""
conn.Open connString
Set rs = conn.Execute("Select * from [Sheet1$]")

Dim i As Integer
For i = 0 To rs.Fields.Count
    Debug.Print rs.Fields(i).Name
Next

>> (KPI) Standard Delivery Capability SO (<0/0)
dim fieldname as String, sql as String
fieldName = "[(KPI) Standard Delivery Capability SO (<0/0)]"

' Use field in result set:
sql = "Select " & fieldname & " from [Sheet1$]"
Set rs = conn.Execute(sql)

' Use field in Where-Clause:
sql = "Select * from [Sheet1$] where " & fieldname & " > 100"
Set rs = conn.Execute(sql)
Dim conn作为ADODB.Connection,rs作为ADODB.Recordset
Set conn=新的ADODB.连接
将字符串变为字符串
connString=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“&ThisWorkbook.Name&“;”和“Extended Properties=”“Excel 12.0 Xml;HDR=YES;”
连接打开连接字符串
设置rs=conn.Execute(“从[Sheet1$]中选择*”)
作为整数的Dim i
对于i=0到rs.Fields.Count
调试.打印rs.Fields(i).Name
下一个

>>(KPI)标准交付能力(你的
where
子句没有结束。
where
条件是什么?我的不好,where部分不重要,它工作得很好,它充满了变量,所以我认为这样代码会更清楚。唯一的问题是列名中的suqare括号。你是否尝试将列设置为“[a name with.”[和]括号]”?所以在字段名周围放上方括号,并转义字段中已经存在的方括号?@Roemer我不确定,你是什么意思。你能给我举个例子,它在这个例子中是什么样子的吗?如果你的意思是我应该更改列的名称,我不能这样做。啊,我现在看到stackoverflow删除了我的反斜杠!啊ggg…让我们再试一次:
[带\[和\]括号的名称]
。但FunThomas可能有更好的主意。非常有趣,发现得很好!非常感谢,你刚刚救了我。我花了几个小时编写这一行代码。
Dim conn As ADODB.Connection, rs As ADODB.Recordset
Set conn = New ADODB.Connection
Dim connString As String
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Name & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;"""
conn.Open connString
Set rs = conn.Execute("Select * from [Sheet1$]")

Dim i As Integer
For i = 0 To rs.Fields.Count
    Debug.Print rs.Fields(i).Name
Next

>> (KPI) Standard Delivery Capability SO (<0/0)
dim fieldname as String, sql as String
fieldName = "[(KPI) Standard Delivery Capability SO (<0/0)]"

' Use field in result set:
sql = "Select " & fieldname & " from [Sheet1$]"
Set rs = conn.Execute(sql)

' Use field in Where-Clause:
sql = "Select * from [Sheet1$] where " & fieldname & " > 100"
Set rs = conn.Execute(sql)
WhatToSelect = "avg([(KPI) Standard Delivery Capability SO (<0/0)])"