【发布时间】:2015-04-07 00:22:22
【问题描述】:
我有一个名为 Student 的表,其中包含有关学生的信息,例如他们的姓名。另一个名为 Exam 的表,其中包含考试日期和学生姓名作为主键。我有一个表格,可用于从列表框中选择多个学生,然后在所选日期将其插入到考试表中。
我相信我的语法是正确的,因为如果我使用 Access 的查询生成器并复制/粘贴我的 SQL 查询并删除表单内容,它将按预期工作。当我尝试从 VB 运行它时遇到的错误是 Exam.Exam_Date 是未知的并检查我的拼写。我正在拼写它在表格中的拼写方式。
难道不能在 Access 的 VB 中使用 INSERT INTO SELECT 查询吗??
这是我的代码:
Private Sub add_Click()
Dim Students As String
Dim i As Integer
Dim dbs As DAO.Database
Dim SQL As String
SQL = ""
Students = "'"
For i = 0 To Me.StudentListBox.ListCount - 1
'check to see if students name is selected
If Me.StudentListBox.Selected(i) = True Then
'list student names in a string separated by commas
Students = Students + CStr(Me.StudentListBox.ItemData(i)) & "','"
End If
Next
If IsNull(Me.ExamDate) Then 'check if user entered an Exam date
MsgBox "Please select a date for the Exam."
ElseIf Students = "'" Then 'check if user selected ant Students
MsgBox "Please select Students to add to an Exam."
Else
'remove trailing comma
Students = Left(Students, Len(Students) - 2)
'sql query to add list of Students to an Exam on specified date
SQL = "INSERT INTO Exam (Exam.Exam_Date, Exam.Student_Name) SELECT '" & CDate(Me.ExamDate) & "', Students.Full_Name FROM Students WHERE Students.Full_Name IN (" & Students & ");"
DoCmd.RunSQL SQL
End If
结束子
【问题讨论】:
-
我认为这不重要,但请尝试将插入更改为
INSERT INTO Exam (Exam_Date, Student_Name) SELECT。 Access可以顺便使用insert...select语句。 -
谢谢jpw!我不太明白为什么,但你的建议奏效了!
标签: sql ms-access vba ms-access-2013