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 イベントを使用するか、ユーザーがレコードを開くことができる小さなボタンを連続フォームの端に配置することをお勧めします。このイベントは、フォームの内部 Recordset Bookmark プロパティが実際に右クリックしたレコードに移動することを引き起こさない (または保証しない) ため、右クリックすると問題が発生します (ラベルとイメージ コントロールも同様です)。私の経験では、ボタン、テキストボックス、およびコンボボックスのみがブックマークをユーザーが選択しようとしているレコードに移動します。

これをテストするには、どのレコードが選択されているかを示すコードをさまざまなルーチンの先頭に置いてみてください。

MsgBox "RecordID = " & Me!RecordIDField

一貫して正しい ID を取得している場合、問題は、新しいフォームを開く方法、パラメーターや引数を渡す方法などに関係しています。

于 2013-09-04T15:24:47.707 に答える