我正在使用cmd按钮打开一个弹出式(单个)表单,其中包含(2)txtbox,我想要反映上一个(连续)表单中单个记录的信息。 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。
答案 0 :(得分: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()可能会服务。