以连续形式右键单击所选记录后打开新表格

时间:2013-09-03 12:30:12

标签: ms-access-2007

在我使用表单中的列表框以获取项目列表之前的访问数据库中,右键单击列表框中的每个选定项目后,我在下面的代码中打开新表单。

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

1 个答案:

答案 0 :(得分:1)

我建议您在所有文本框和组合中使用DoubleClick事件,或者在连续表单的一个边缘放一个小按钮,以允许用户打开记​​录。右键单击会给您带来问题(标签和图像控件也会出现问题),因为此事件不会导致(或确保)Form的内部Recordset Bookmark属性实际移动到他们右键单击的记录。根据我的经验,只有按钮,文本框和组合框会将书签移动到用户试图选择的记录。

要测试此功能,请尝试将代码放在不同例程的顶部,以显示所选的记录:

MsgBox "RecordID = " & Me!RecordIDField

如果您始终获得正确的ID,那么您的问题与打开新表单,传递参数或参数等有关。