有表1和nrb两个表,表1中有pID字段,nrb中有id字段。表1窗体的数据源是表1,为连续窗体。通过Shift键选择2条连续的窗体记录并按Del删除时,希望连带删除nrb表中的对应id的记录。所用代码如下:
Private Sub Form_Delete(Cancel As Integer)
Dim n2 As Long
n2 = Me.SelHeight '选取的记录条数作为For循环的终点
For I = 1 To n2
‘MsgBox "I: " & I & " n2: " & n2 & " pID: " & pID '监视循环参数及pID值的变化
DoCmd.RunSQL "DELETE nrb.* FROM nrb WHERE id = " & Me.pID
DoCmd.GoToRecord '使下一条记录成为当前
Next
End Sub
执行循环时,第一圈正确。见图一
[attach]37118[/attach]
第二圈时,循环控制值正确,但pID值仍是上一圈时的2。见图二
[attach]37119[/attach]
第三圈本不应再进行,但却未结束,I值从2又变回了1,pID值却变成了在第二圈就应变的4。见图三
[attach]37120[/attach]
最后的结果是两表中应删除的记录未按设想实现。
请高手帮助探讨并附例库。谢谢。
[attach]37121[/attach]作者: ui 时间: 2009-4-6 20:57
是怎么解决的, 楼上给个答案呢作者: koutx 时间: 2009-4-6 23:15 2#ui
不要For循环即可。
DoCmd.RunSQL "DELETE nrb.* FROM nrb WHERE id = " & Me.pID
DoCmd.GoToRecord '使下一条记录成为当前