在我使用表单中的列表框以获取项目列表之前的访问数据库中,右键单击列表框中的每个选定项目后,我在下面的代码中打开新表单。
Private Sub ItemList_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Const RIGHTBUTTON = 2
If Button = RIGHTBUTTON Then
DoCmd.OpenForm "frmShortcut_GenerateTask"
DoCmd.MoveSize udtPos.X * mp.TwipsPerPixelX, udtPos.Y * mp.TwipsPerPixelY
End If
End Sub
现在我使用的是连续形式而不是列表框,我已经定义了一个[isselected]字段,用于在单击后以连续形式选择每个记录。现在我的问题是如何编写用于右键单击和打开新表单的代码。
我使用了与列表框相同的代码,但它不起作用,没有任何反应。
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Const RIGHTBUTTON = 2
If Button = RIGHTBUTTON Then
DoCmd.OpenForm "frmShortcut_GenerateTask"
DoCmd.MoveSize udtPos.X * mp.TwipsPerPixelX, udtPos.Y * mp.TwipsPerPixelY
End If
End Sub
Private Sub P_Click()
On Error Resume Next
Me.IsSelected = Not Me.IsSelected
' Save the status
Me.Dirty = False
' Force conditional highlighting
P_ForceHighLight
' Update display in SF_Selected
Me.Parent("SF_Selected").Requery
ActiveControl.SelLength = 0
On Error GoTo 0
End Sub
答案 0 :(得分:1)
我建议您在所有文本框和组合中使用DoubleClick事件,或者在连续表单的一个边缘放一个小按钮,以允许用户打开记录。右键单击会给您带来问题(标签和图像控件也会出现问题),因为此事件不会导致(或确保)Form的内部Recordset Bookmark属性实际移动到他们右键单击的记录。根据我的经验,只有按钮,文本框和组合框会将书签移动到用户试图选择的记录。
要测试此功能,请尝试将代码放在不同例程的顶部,以显示所选的记录:
MsgBox "RecordID = " & Me!RecordIDField
如果您始终获得正确的ID,那么您的问题与打开新表单,传递参数或参数等有关。