我有一个主要形式" fmEmpHWList2"里面有两个子表格。在子表单中" frmSWList2"我有文本字段,我使用Dlookup函数从表中获取值。 当我在子窗体上测试这一切时,一切正常。但是当我把子表单放到主表单中时,我得到了#34; #Name?"错误。
这是我在mainform中的当前代码,它给了我错误,我需要修复:
=DLookUp("Version","EmpSWSum","Software = '7-Zip' AND EmpID=" & [Forms]![fmEmpHWList2]![frmSWList2].[Form]![EmpID])
仅在子表单中,此代码可以正常工作
=DLookUp("Version","EmpSWSum","Software = 'ADG R4i CSDB Client' AND EmpID=" & [Forms]![frmSWList2]![EmpID])
注意事项:EmpID是一个数字
感谢您花时间帮我解决此问题
答案 0 :(得分:0)
建议命名子窗体容器控件与它所拥有的对象不同,例如ctrSWList。然后在主窗体控件中编码:
=DLookUp("Version","EmpSWSum","Software = '7-Zip' AND EmpID=" & [ctrSWList]![EmpID])
但是,如果此表达式位于子窗体的控件中,并且您希望引用子窗体上的另一个控件,则不需要窗体名称和类前缀。
=DLookUp("Version","EmpSWSum","Software = '7-Zip' AND EmpID=" & [EmpID])
如果子窗体是独立打开的话,这也应该有效。
答案 1 :(得分:0)
我采用了不同的方法并且创建了一个函数而不是执行DLookUp。我认为这是一种更好的方法。我以开放的形式加载函数。
1 Function RunParameterQuery_DAO(Asset As String, Software As String, sTextBox As String) As String
2 ' Comments: Runs a query containing parameters
3 Const cstrQueryName As String = "qrySWVers"
4 Dim dbs As DAO.Database
5 Dim qdf As DAO.QueryDef
6 Dim rst As DAO.Recordset
7
8 Set dbs = CurrentDb()
9 Set qdf = dbs.QueryDefs(cstrQueryName)
10 qdf.Parameters("asset") = Asset
11 qdf.Parameters("name") = Software
12 ' Open recordset on the query
13 Set rst = qdf.OpenRecordset()
14 Do While Not rst.EOF
15 Me.Controls(sTextBox).Value = rst![SWVer]
16 rst.MoveNext
17 Loop
18 MsgBox (Me.Controls(sTextBox).Value)
19 rst.Close
20 qdf.Close
21 dbs.Close
22 End Function
运行它
Call RunParameterQuery_DAO("L52651", "TortoiseSVN", "TortoiseSVN")