1

我有一个打开 Access DB 的 VBscript,我需要从其中一个表中创建一个查询,然后导出该表。我需要创建查询,因为我需要格式化数字列,因为在 DB 中它们有 10 个小数位,但导出时只有 2 个。我需要全部 10 个。我不控制这个 Access DB,而是下载它所以要求来源进行此查询不是一种选择。

以下错误是:“ADODB.Command:参数类型错误,超出可接受范围,或相互冲突。” 我错过了什么?

Dim oAccess
Set oAccess = CreateObject("Access.Application")

oAccess.OpenCurrentDatabase("dbfile here")

Dim oQry
Set oQry = CreateObject("ADODB.Command")

oQry.ActiveConnection = oAccess.CurrentProject.Connection
oQry.CommandType = 1
oQry.CommandText = "create view qryTable as select * from table"
oQry.Execute

Set oQry = Nothing
Set oAccess = Nothing
4

1 回答 1

2

.ActiveConnection一个字符串值对我有用。

oQry.ActiveConnection = oAccess.CurrentProject.Connection.ConnectionString

请注意,如果该字符串中的Provider是“ Jet.OLEDB ”并且您使用的是 64 位 Windows,则必须以 32 位模式运行脚本;我使用了cscript.exefrom的版本\Windows\SysWOW64

但是我不确定为什么要打开 Access 应用程序实例,然后创建并执行ADODB.Command. 也许这是一种重新使用应用程序的尝试,CurrentProject.Connection这样您就不需要从头开始创建一个。

不管是什么原因,如果你有一个 Access 实例,你就不需要ADODB.Command. 只需.Execute使用CurrentProject.Connection.

Dim oAccess, sSql

Set oAccess = CreateObject("Access.Application")
oAccess.OpenCurrentDatabase("dbfile here")

sSql = "create view qryTable as select * from [table]"
oAccess.CurrentProject.Connection.Execute sSql

Set oAccess = Nothing
于 2013-01-30T18:15:23.530 回答