Microsoft VBScript编译错误:预期结束语句

时间:2014-04-23 17:14:33

标签: ms-access vbscript access-vba

我试图在下面的VB Script的帮助下将一些记录插入到MS Access Table中。但是当我试图执行它时,它会抛出编译错误:语句的预期结束。请有人帮我弄清楚我哪里出错了。

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

3 个答案:

答案 0 :(得分:3)

VBScript(与VBA或其他方言相对)支持键入的Dims。所以

Dim dbs         As DAO.Database
Dim DbFullNAme  As String

需要

Dim dbs
Dim DbFullNAme

VBscript没有本机OpenDatabase()函数。您需要使用ADO连接到您的Access'数据库'。首先创建一个连接

Set dbs = CreateObject("ADODB.Connection")

然后确定connection string

dbs.Open cs

其余代码应该有效。

更新评论:

错误消息:

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)。

答案 1 :(得分:2)

因此,让我们分解一下这段代码无法正常工作的真正原因。

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

这个问题是VBA和VBScript的语言略有不同。获得商机后,在stackoverflow上查看两个标签的info部分。

现在,我们只需修补您的代码并维护您的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

所做的更改。

  1. 阻止您的昏暗变量并删除As ***语句以获取vbscript兼容性
  2. 设置访问对象,以便维护代码的其余部分。
  3. acc.DBEngine.之前添加OpenDatabase附加参数。
  4. 将您的Sub从Form_Click重命名为ExecuteInsert,然后将ExecuteInsert放在代码顶部,以便vbscript激活该子代码。如果你只是在vbscript文件中放置一个sub,它不一定会运行,你必须直接激活它。
  5. 此代码经过测试和功能。祝你好运。

答案 2 :(得分:0)

添加到Ekkehard.Horner http://www.csidata.com/custserv/onlinehelp/vbsdocs/vbs6.htm

  

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