1

単一のデータベース内の複数のテーブルにデータを挿入するフォームを作成しようとしています。

単一のステートメントでそれを行うことはできないことを知っているので、複数の Insert ステートメントInsert intoを作成して含める必要があることを読みました。私は 2 番目の挿入ステートメントtransactionを続けています。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 ステートメントでは、エラーは発生しません。さらに情報が必要な場合はお知らせください。

4

1 に答える 1

2

ダッシュがあるため、フィールド名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

于 2013-11-07T17:05:16.220 に答える