Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
Vba ADO限制表名_Vba_Ms Access_Ado - Fatal编程技术网

Vba ADO限制表名

Vba ADO限制表名,vba,ms-access,ado,Vba,Ms Access,Ado,我必须连接到一个名为“数据库”的表,这似乎是不允许的。在不更改表名的情况下是否有解决方法 Set con = New ADODB.Connection con.CursorLocation = adUseClient RawData = IIf(SelectedRawDromXL <> "", SelectedRawDromXL, SelectedRawFile1) con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Da

我必须连接到一个名为“数据库”的表,这似乎是不允许的。在不更改表名的情况下是否有解决方法

 Set con = New ADODB.Connection
    con.CursorLocation = adUseClient
    RawData = IIf(SelectedRawDromXL <> "", SelectedRawDromXL, SelectedRawFile1)
    con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & RawData & ";Jet OLEDB:Database Password="
    Set objRecordsetraw = New ADODB.Recordset
    ggg = "DATABASE"
    objRecordsetraw.Open ggg, con, adOpenKeyset, adLockOptimistic
Set con=New ADODB.Connection
con.CursorLocation=adUseClient
RawData=IIf(SelectedRawDromXL“”、SelectedRawDromXL、SelectedRawFile1)
con.Open“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“&RawData&”Jet-OLEDB:数据库密码=”
Set objRecordsetraw=New ADODB.Recordset
ggg=“数据库”
打开ggg、con、adOpenKeyset、ADLOCKSETRAW

如果
数据库是一个表,我的建议是

ggg = "[DATABASE]"
objRecordsetraw.Open ggg, con, adOpenKeyset, adLockOptimistic
PS 1
AdLockOptimization+adCmdTable
在我的环境中不工作。当运行行
objRecordsetraw.Open ggg、con、adOpenKeyset、adLockOptimistic+adCmdTable
时,我得到RTE 3001

PS 2:这可能是问题的原因

如果
数据库是一个表,我的建议是

ggg = "[DATABASE]"
objRecordsetraw.Open ggg, con, adOpenKeyset, adLockOptimistic
PS 1
AdLockOptimization+adCmdTable
在我的环境中不工作。当运行行
objRecordsetraw.Open ggg、con、adOpenKeyset、adLockOptimistic+adCmdTable
时,我得到RTE 3001

PS 2:这可能是问题的原因
ggg
应该是有效的SQL字符串,如
SELECT*FROM tblName
或表resp的名称。存在于MS Access数据库文件中的查询。您收到的错误消息是什么?那么在哪一行呢?那么,我猜您会在
objRecordsetraw.Open ggg,con,adOpenKeyset,adLockOptimistic
这一行收到错误消息。原因是
ggg
在您的MS Access数据库中不包含表名或查询名,或者它是否包含?
ggg
应该是有效的SQL字符串,如
SELECT*FROM tblName
或表名resp。存在于MS Access数据库文件中的查询。您收到的错误消息是什么?那么在哪一行呢?那么,我猜您会在
objRecordsetraw.Open ggg,con,adOpenKeyset,adLockOptimistic
这一行收到错误消息。原因是
ggg
不包含MS Access数据库中的表或查询的名称,或者是这样吗?这也只是在
数据库
中添加了方括号后才起作用。我只能说它起作用了,现在我不明白为什么像
Customer
这样的表没有方括号,而
DATABASE
只有方括号才起作用,因为数据库是Access中的保留名称。这是因为只定义表名是必要的愚蠢,ADO只是将
SELECT*FROM
预先添加到它(查看
objRecordsetraw.Source
)。实际上,只能将表名与
adCmdTableDirect
结合使用,它实际上打开了一个具有不同功能的不同记录集类型。这也只是在
数据库
中添加括号时才起作用。我只能说它起作用了,现在我不明白为什么像
Customer
这样的表没有括号,而
数据库
只有括号才起作用,因为数据库是一个数据库Access中的保留名称。这是因为仅定义表名是愚蠢的,ADO只是将
SELECT*FROM
预先添加到它(查看
objRecordsetraw.Source
)。实际上,只应将表名与
adCmdTableDirect
结合使用,这样它实际上会打开具有不同功能的不同记录集类型。