0

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

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
4

1 回答 1

1

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

要对此进行测试,请尝试将代码放在不同例程的顶部,以显示选择的记录:

MsgBox "RecordID = " & Me!RecordIDField

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

于 2013-09-04T15:24:47.707 回答