0

我正在使用 cmd 按钮打开一个弹出式(单个)表单,其中包含 (2) 个 txtboxes,我想在前一个(连续)表单中反映来自单个记录的信息。该 cmd 将

cmd按钮上的代码:

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

我承认我从类似的设置中借用了代码,其中信息是从 cbo 而不是 cmd 调用的。当弹出表单打开时,只显示查询中的第一条记录,而不是与 cmd 关联的记录。有什么建议么。TIA。

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 回答