0

cmd ボタンを使用して、前の (連続) フォームの単一レコードからの情報を反映したい (2) txtboxes を持つポップアップ (単一) フォームを開きます。コマンドは

コマンドボタンのコード:

Private Sub cmdReassign_Click()
On Error GoTo ErrHandler
Dim strOpenArgs As String

strOpenArgs = Me.txtToolGroupID & "," & Me.txtEmployee_Name
DoCmd.OpenForm "popfrmReassignGroupedTools", OpenArgs:=strOpenArgs '

ExitHere:
    Exit Sub

ErrHandler:
    MsgBox Err.Number & ": " & Err.Description, vbExclamation
    Resume ExitHere

End Sub

Form_Open のコード

Private Sub Form_Open(Cancel As Integer)
On Error GoTo ErrHandler
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String
Dim strOpenArgs As String

    strOpenArgs = Me.OpenArgs

    Set dbs = CurrentDb
    strSQL = "SELECT * From qryToolReassignment_Grouped Where ToolGroupID=" & Me.txtToolGroupID & ";"
    Set rst = dbs.OpenRecordset(strSQL)

    If rst.EOF Then
        GoTo ExitHere
    End If

    With Me
        .txtToolCategoryQty = rst.Fields("[Quantity]")
        .txtToolLocation = rst.Fields("[Employee Name]")
    End With

ExitHere:
    On Error Resume Next
    Set rst = Nothing
    Set dbs = Nothing
    Exit Sub

ErrHandler:
    MsgBox Err.Number & ": " & Err.Description, vbExclamation
    Resume ExitHere

End Sub

情報が cmd ではなく cbo から呼び出された同様のセットアップからコードを借用したことは認めます。ポップアップ フォームが開くと、コマンドに関連付けられたレコードではなく、クエリの最初のレコードのみが表示されます。助言がありますか。ティア。

4

1 に答える 1

0

あなたが何を望んでいるのか私にはわかりません。ポップアップ フォームが BOUND で、既存のレコードを開きたい場合は、OpenForm の WHERE 引数を使用します。

DoCmd.OpenForm "popfrmReassignGroupedTools", , , "ToolGroupID=" & Me.txtToolGroupID

txtToolGroupID が連続フォームにある場合、ポップアップ フォームの Open イベントはそれを Me エイリアスで参照できません。

OpenArgs で複数の値を渡したい場合は、文字列操作関数を使用してデータ要素を解析する必要があります。

If Not IsNull(Me.OpenArgs) Then
    intID = Left(Me.OpenArgs, InStr(Me.OpenArgs, ",")-1)
    strEmp = Mid(Me.OpenArgs, InStr(Me.OpenArgs, ",")+1)
End If

レコードセット オブジェクトを宣言して開くためのすべてのコードの代わりに、DLookup() が役立つ場合があります。

于 2017-04-28T18:21:32.347 に答える