【问题标题】:3134 run time error on Insert into statement3134 Insert into 语句运行时错误
【发布时间】:2013-11-07 16:16:14
【问题描述】:

我正在尝试编写一个表单来将数据插入到单个数据库中的多个表中。

我知道你不能通过单个 Insert into 语句来做到这一点,所以我读到我应该创建一个 transaction 并包含多个 Insert 语句。我在第二个插入语句中不断收到3134 run time error。代码如下:

Private Sub cmdAdd_Click()

    DBEngine.BeginTrans
    CurrentDb.Execute "INSERT into Names(StudentId, FirstName, MiddleName, LastName) VALUES (" & Me.txtStudentId & ",'" & _
        Me.txtFirstName & "','" & Me.txtMiddleName & "','" & Me.txtLastName & "')"
    CurrentDb.Execute "INSERT into Homeroom(StudentId, Grade, Homeroom_Primary, Name-Homeroom_Primary_Teacher) " & _
        "VALUES (" & Me.txtStudentId & ",'" & Me.txtGrade & "','" & Me.txtHomeroom & "','" & Me.txtTeacher & "')"
    CurrentDb.Execute "INSERT into [Ridgeview Math](StudentId, ExportGrade, DateTaken, SS, PR) VALUES (" & _
        Me.txtStudentId & ",'" & Me.txtGrade & "',#" & Me.txtMathdate & "#,'" & Me.txtMathSS & "','" & Me.txtMathPR & "')"
    CurrentDb.Execute "INSERT into [Ridgeview Reading](StudentId, ExportGrade, DateTaken, RSS, RPR, RIRL) " & _
        "VALUES (" & Me.txtStudentId & "','" & Me.txtGrade & "',#" & Me.txtReadingdate & "#,'" & Me.txtReadingSS & "','" & _
        Me.txtReadingPR & "','" & Me.txtReadingIRL & "')"
    CurrentDb.Execute "INSERT into CompassGroup(StudentId, CompassGroup) VALUES (" & Me.txtStudentId & _
        "," & Me.txtCompassGroup & ")"
    DBEngine.CommitTrans

End Sub

我对嵌套的 Insert 语句做错了吗?

这都与创建变量和输入数据的表单相关联。第一个 Insert 语句没有给我任何错误。如果您需要更多信息,请告诉我。

【问题讨论】:

  • “Name-Homeroom_Primary_Teacher”真的是列名吗?

标签: sql ms-access vba


【解决方案1】:

用破折号将字段名称 Name-Homeroom_Primary_Teacher 括起来。

我建议你用一个字符串变量来保存语句文本,Debug.Print是字符串,然后是Execute它。

Dim strInsert As String
strInsert = "INSERT into Homeroom(StudentId, Grade, Homeroom_Primary, [Name-Homeroom_Primary_Teacher]) " & _
        "VALUES (" & Me.txtStudentId & ",'" & Me.txtGrade & "','" & Me.txtHomeroom & "','" & Me.txtTeacher & "')"
Debug.Print strInsert
CurrentDb.Execute strInsert, dbFailonerror

如果出现错误,您可以转到立即窗口 (Ctrl+g) 检查语句文本。您可以复制该文本,在查询设计器中创建一个新查询,切换到 SQL 视图,粘贴文本,然后在那里测试语句。

此外,您使用的方法需要大量连接。您可以考虑的其他选项包括:参数查询;向DAO Recordsets 添加行。

【讨论】:

  • +1 用于推荐参数查询或记录集更新。没有他们,奥康纳女士和她的学生会有点麻烦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多