尝试连接到访问数据库时出现vbscript错误

时间:2015-02-13 00:26:49

标签: ms-access vbscript compiler-errors access-vba

这是剧本:

Option Explicit
'Supported in Access 2003 and newer versions
'Add a reference to "Microsoft Access xx.0 Object Library"
'or change code to do Late Binding to support multiple Access versions
Private Sub Command1_Click()
    Dim oApp As Access.Application
    Set oApp = CreateObject("Access.Application")
    oApp.OpenCurrentDatabase "C:\student_id_Ft Lupton.mdb", Exclusive:=False
    oApp.ExportXML ObjectType:=acExportTable, _
               DataSource:="Ft_lupton", _
               DataTarget:="C:\fortlupton.xml"
    oApp.CloseCurrentDatabase
    oApp.Quit acQuitSaveNone
    Set oApp = Nothing
End Sub

我收到以下错误:

script: forltuptontest.vbs line: 6 Char: 14 Error: expected end of statement Code: 800A0401 Source: Microsoft VBScript compilation error

不确定第6行第14行

有什么问题 在得到答案的精彩帮助之后:HansUp

这是脚本的工作版本,正是我需要的。

更新的代码如下所示:

Dim oApp
Set oApp = CreateObject("Access.Application")
Const acExportTable = 0
Const acQuitSaveNone = 2
oApp.OpenCurrentDatabase "C:\users\amoore19\desktop\Database\student_id_Ft Lupton.mdb", False
oApp.ExportXML 0, "Ft_lupton", "C:\users\amoore19\desktop\fortlupton.xml"
oApp.CloseCurrentDatabase
oApp.Quit 2
Set oApp = Nothing

2 个答案:

答案 0 :(得分:2)

VBScript不支持

Dim [variable name] As [something]。所有变量都是变体,Dim ... As会触发错误。

您可以通过此更改消除错误...

'Dim oApp As Access.Application
Dim oApp

不幸的是,脚本主机抱怨它遇到的第一个错误并停在那里。修复第一个错误后,您会看到更多错误。

VBScript并不了解Access命名常量,因此您必须提供每个常量的值而不是其名称。

  • 0表示 acExportTable
  • 2 for acQuitSaveNone

或者,如果您愿意,可以在脚本中定义常量,然后继续使用它们的名称。

Const acExportTable = 0
Const acQuitSaveNone = 2

VBScript无法处理Access方法的命名选项。因此,您必须丢弃选项名称并按预期顺序传递选项值。

'oApp.OpenCurrentDatabase "C:\student_id_Ft Lupton.mdb", Exclusive:=False
oApp.OpenCurrentDatabase "C:\student_id_Ft Lupton.mdb", False
'oApp.ExportXML ObjectType:=acExportTable, _
'           DataSource:="Ft_lupton", _
'           DataTarget:="C:\fortlupton.xml"
oApp.ExportXML 0, "Ft_lupton", "C:\fortlupton.xml"

最后,在修复错误后,您的脚本不会做任何事情,因为可执行语句在子例程中:Command1_Click()

您可以在Call Command1_Click()之后的行上添加End Sub来运行子例程。但是,我不明白为什么这里需要子程序;您可以放弃Private Sub Command1_Click()End Sub

答案 1 :(得分:1)

来自HansUp的工作解决方案,效果很好:

Dim oApp
Set oApp = CreateObject("Access.Application")
Const acExportTable = 0
Const acQuitSaveNone = 2
oApp.OpenCurrentDatabase "C:\users\amoore19\desktop\Database\student_id_Ft Lupton.mdb", False
oApp.ExportXML 0, "Ft_lupton", "C:\users\amoore19\desktop\fortlupton.xml"
oApp.CloseCurrentDatabase
oApp.Quit 2
Set oApp = Nothing`