我尝试插入

时间:2015-09-26 18:27:53

标签: ms-access ms-access-2013

如果是Form,我会编写一些代码来从表中选择值并将其插入另一个表中。这是我的代码:

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT std_crs_absence.std_name, std_crs_absence.stg_number, std_crs_absence.crs_name, Sum(std_crs_absence.absence_time) AS SumOfabsence_time, Sum(std_crs_absence.molat) AS SumOfmolat " & _
"FROM std_crs_absence GROUP BY std_crs_absence.std_name, std_crs_absence.stg_number, std_crs_absence.crs_name ", dbOpenDynaset)
rs.MoveFirst
Do Until rs.EOF
    sqlinsert = "INSERT INTO abs_summary ([std_name],[stg_number],[crs_name],[SumOfabsence_time],[SumOfmolat])" & _
    " VALUES ('" & rs("std_name") & "','" & rs("stg_number") & "','" & rs("crs_name") & "'," & rs("absence_time") & "," & rs("molat") & ")"
    DoCmd.RunSQL (sqlinsert)
    rs.MoveNext
Loop
rs.Close
Set rs = Nothing

当事件执行时,它会给出一个错误,指出“此集合中找不到项目”。我做错了什么?

1 个答案:

答案 0 :(得分:1)

首次选择数据时,您将检索总和为SumOfabsence_timeSumOfmolat,但对于INSERT,您尝试使用rs("absence_time")rs("molat")。这些列不会存在于Recordset中,因此您会收到错误消息。您需要改为使用rs("SumOfabsence_time")rs("SumOfmolat")

(强制评论:你真的应该使用参数化查询而不是动态SQL。)