VBA on click_删除表的记录

时间:2015-08-05 13:01:11

标签: vba recordset

我试图删除表的记录而不是删除表单的记录。我有以下代码,但不起作用:

请有人帮忙。

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

1 个答案:

答案 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。