Ms access Microsoft VBScript编译错误:应为语句结尾

Ms access Microsoft VBScript编译错误:应为语句结尾,ms-access,vbscript,vba,Ms Access,Vbscript,Vba,我试图在下面的VB脚本的帮助下将一些记录插入MS Access表。但当我试图执行它时,它抛出了编译错误:预期语句结束。有人能帮我找出哪里出了问题吗 Private Sub Form_Click() Dim dbs As DAO.Database Dim DbFullNAme As String DbFullName = "D:\G\Diamond\FINAL MS-Access\MS-Access project.accdb" Set dbs = OpenDatabase(D

我试图在下面的VB脚本的帮助下将一些记录插入MS Access表。但当我试图执行它时,它抛出了编译错误:预期语句结束。有人能帮我找出哪里出了问题吗

Private Sub Form_Click()
Dim dbs         As DAO.Database
Dim DbFullNAme  As String

DbFullName = "D:\G\Diamond\FINAL MS-Access\MS-Access project.accdb"
Set dbs = OpenDatabase(DbFullName)

dbs.Execute "INSERT INTO [2014_Status] ( Prompt, Project_Name, STATUS,Release_Name )SELECT     RoadMap.SPRF_CC, RoadMap.SPRF_Name, RoadMap.Project_Phase,RoadMap.Release_Name FROM RoadMap WHERE (((Exists (select 1 FROM [2014_Status] where RoadMap.SPRF_CC = [2014_Status].[Prompt]))=False));"
dbs.Close
End Sub
VBScript(与VBA或其他方言相反)不支持键入DIM。所以

Dim dbs         As DAO.Database
Dim DbFullNAme  As String
需要

Dim dbs
Dim DbFullNAme
VBscript没有本机OpenDatabase()函数。您需要使用连接到Access“数据库”。首先创建一个连接

Set dbs = CreateObject("ADODB.Connection")
然后确定和

代码的其余部分应该可以工作

更新wrt注释:

错误消息:

D:\G\Diamond\FINAL MS-Access\query1.vbs(2, 9) Microsoft VBScript compilation error: Expected end of statement
证明OT试图编写VBScript(添加误导性的vba/access标记为(C)Pankaj Jaju)。

VBScript(与vba或其他方言相反)不支持键入DIM。所以

Dim dbs         As DAO.Database
Dim DbFullNAme  As String
需要

Dim dbs
Dim DbFullNAme
VBscript没有本机OpenDatabase()函数。您需要使用连接到Access“数据库”。首先创建一个连接

Set dbs = CreateObject("ADODB.Connection")
然后确定和

代码的其余部分应该可以工作

更新wrt注释:

错误消息:

D:\G\Diamond\FINAL MS-Access\query1.vbs(2, 9) Microsoft VBScript compilation error: Expected end of statement
证明OT试图编写VBScript(添加误导性的vba/access标记是(C)Pankaj Jaju)。

添加到Ekkehard.Horner

VBScript只有一种称为变量的数据类型。变体是 可以包含不同类型数据的特殊数据类型 信息,取决于它的使用方式。因为变异是唯一的 VBScript中的数据类型,也是所有 VBScript中的函数

加入Ekkehard,Horner

VBScript只有一种称为变量的数据类型。变体是 可以包含不同类型数据的特殊数据类型 信息,取决于它的使用方式。因为变异是唯一的 VBScript中的数据类型,也是所有 VBScript中的函数


因此,让我们来分析一下这段代码不起作用的真正原因

我猜想,您已将Visual Basic for Applications(VBA)复制并粘贴到.VBS(Visual Basic脚本)文件中,并希望它能够正常工作

问题是VBA和VBScript是略有不同的语言。当您有机会时,查看stackoverflow上两个标记的信息部分

现在,让我们只修补代码并维护DAO对象,这样就不必使用ADODB重建数据库使用情况

ExecuteInsert
Sub ExecuteInsert()
    Dim dbs, DbFullName, acc
    Set acc = createobject("Access.Application")

    DbFullName = "D:\G\Diamond\FINAL MS-Access\MS-Access project.accdb"
    Set dbs = acc.DBEngine.OpenDatabase(DbFullName, False, False)
    dbs.Execute "INSERT INTO [2014_Status] ( Prompt, Project_Name, STATUS,Release_Name )SELECT     RoadMap.SPRF_CC, RoadMap.SPRF_Name, RoadMap.Project_Phase,RoadMap.Release_Name FROM RoadMap WHERE (((Exists (select 1 FROM [2014_Status] where RoadMap.SPRF_CC = [2014_Status].[Prompt]))=False));"
    dbs.Close
    msgbox "done"
End Sub
所做的更改

  • 为实现vbscript兼容性,已阻止变暗变量并将
    作为***
    语句删除
  • 设置一个访问对象,以便可以维护代码的其余部分
  • 在带有附加参数的
    OpenDatabase
    之前添加了
    acc.DBEngine.
  • 表单中重命名Sub\u单击
    以执行Insert,然后将
    ExecuteInsert
    放置在代码顶部,以便vbscript激活Sub。如果您只是将Sub放置在vbscript文件中,它不必运行,您必须直接激活它
    这段代码经过测试,并具有多种功能。祝你好运

    让我们来分析一下这段代码不起作用的真正原因

    我猜想,您已将Visual Basic for Applications(VBA)复制并粘贴到.VBS(Visual Basic脚本)文件中,并希望它能够正常工作

    问题是VBA和VBScript是略有不同的语言。当您有机会时,查看stackoverflow上两个标记的信息部分

    现在,让我们只修补代码并维护DAO对象,这样就不必使用ADODB重建数据库使用情况

    ExecuteInsert
    Sub ExecuteInsert()
        Dim dbs, DbFullName, acc
        Set acc = createobject("Access.Application")
    
        DbFullName = "D:\G\Diamond\FINAL MS-Access\MS-Access project.accdb"
        Set dbs = acc.DBEngine.OpenDatabase(DbFullName, False, False)
        dbs.Execute "INSERT INTO [2014_Status] ( Prompt, Project_Name, STATUS,Release_Name )SELECT     RoadMap.SPRF_CC, RoadMap.SPRF_Name, RoadMap.Project_Phase,RoadMap.Release_Name FROM RoadMap WHERE (((Exists (select 1 FROM [2014_Status] where RoadMap.SPRF_CC = [2014_Status].[Prompt]))=False));"
        dbs.Close
        msgbox "done"
    End Sub
    
    所做的更改

  • 为实现vbscript兼容性,已阻止变暗变量并将
    作为***
    语句删除
  • 设置一个访问对象,以便可以维护代码的其余部分
  • 在带有附加参数的
    OpenDatabase
    之前添加了
    acc.DBEngine.
  • 表单中重命名Sub\u单击
    以执行Insert,然后将
    ExecuteInsert
    放置在代码顶部,以便vbscript激活Sub。如果您只是将Sub放置在vbscript文件中,它不必运行,您必须直接激活它
    这段代码经过测试,并具有多种功能。祝你好运

    编译错误消息如下:D:\G\Diamond\FINAL MS Access\query1.vbs(2,9)Microsoft VBScript编译错误或:预期语句结束,仅为了验证,上述代码是
    query1.vbs
    中的代码?如果没有,请在您的问题中发布query1.vbs的代码。我认为您需要()围绕sql代码-dbs.Execute(“…”)。您确定您正确使用了此代码((存在(从[2014_Status]中选择1,其中RoadMap.SPRF_CC=[2014_Status].[Prompt])=False))。我认为Access不具备或不支持此功能。但在任何情况下,where子句看起来都很奇怪“…where null=false”或“…where 1=false”;在任何情况下,它都会失败,因为根本没有什么可插入的内容。在执行SQL语句之前,请先查看SQL语句的外观。@DonGeorge请不要思考,但在发布之前请检查事实:在VBScript中调用sub时,不得使用param list()。编译错误消息如下:D:\G\Diamond\FINAL MS Access\query1.vbs(2,9)Microsoft VBScript编译错误或:应为语句结尾,仅为验证,上述代码是
    query1.vbs
    中的代码?如果没有,请在您的问题中发布query1.vbs的代码。我认为您需要()围绕sql代码-dbs.Execute(“…”)。您确定您正确使用了此代码((存在(从[2014_Status]中选择1,其中RoadMap.SPRF_CC=[2014_Status].[Prompt])=False))。我认为Access不具备或不支持此功能。但在任何情况下,where子句看起来都很奇怪“…where null=false”或“…where 1=false”;并且在任何情况下,它都会失败,因为