我试图删除表的记录而不是删除表单的记录。我有以下代码,但不起作用:
请有人帮忙。
Private Sub Cmd_X_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim rsCount As Integer
Dim BizNO As Field
Dim Bank_Role As Field
Dim i, j As Integer
Set db = CurrentDb()
Set rs_date = db.OpenRecordset("TRD_Pricing-In date_REAL")
Set PE_ID = rs_date.Fields("Pricing_Element_ID")
rs_date.MoveLast
rs_dateCount = rs_date.RecordCount
MsgBox (rs_dateCount)
MsgBox (Me.Pricing_Element_ID)
MsgBox (PE_ID.Value)
rs_date.MoveLast
For i = 1 To rs_dateCount
If Me!Pricing_Element_ID = PE_ID Then
rs_date.DELETE
Else
rs_date.MovePrevious
End If
Next i
End Sub
答案 0 :(得分:0)
在你的for循环中,你没有比较正确的元素。当你这样做时:
Set PE_ID = rs_date.Fields("Pricing_Element_ID")
将PE_ID设置为第一条记录的Pricing_Element_ID的值。您打算设置对它的引用,并且每次记录集前进到下一条记录时,您希望更新此引用。但这不是它的工作原理。每次提前记录集时,都必须在当前记录中获取该字段。所以你必须写:
If Me!Pricing_Element_ID = rs_date.Fields("Pricing_Element_ID") Then
注意:根据经验,我发现记录集的计数并不总是准确的。因此,而不是for循环,使用while循环:
While (Not EOF(rs_date))
If Me!Pricing_Element_ID = rs_date.Fields("Pricing_Element_ID") Then
rs_date.DELETE
Else
rs_date.MoveNext
End If
Wend
另请注意,无需从最后到第一个处理记录集;直到下一个直到EOF。