Ugl*_*ede 8 forms ms-access reference
我不是Access专家,我有一个(我希望!)简单的问题......
我有一个包含许多记录的表格.在一些文本框中,我只显示基础表中的值 - 因此它们绑定到相应的字段.
但是一些文本框应该包含计算值.有些计算很复杂,涉及表中的许多字段.我把计算写成VBA函数.我可以输入类似"控制源"的内容:
=MyFunction([Field1], [Field2], [Field3] ...)
Run Code Online (Sandbox Code Playgroud)
但我不想在函数调用中列出几十个字段.相反,我想将整个表单(或当前记录)作为参数发送,并让函数引用它需要的字段.我可以这样做:
=MyFunction([Forms]![MyForm])
Run Code Online (Sandbox Code Playgroud)
但我不喜欢在通话中命名表格.有没有办法将"当前形式"作为函数参数发送?在VBA中,您只需使用"Me"关键字,例如"Me![Field1]".但似乎表达中并未接受"我".
还有其他方法可以在表达式中引用当前表单吗?
(这是一个美化问题,我知道.但是使用"[Form]![MyForm]"并不是很好的编程.稍后你将控件复制到另一个表单并忘记更改表达式中的名称...)
感谢你的帮助!:-)
/安德斯
您可以使用:
=MyFunction([Form])
Run Code Online (Sandbox Code Playgroud)
代码是:
Function MyFunction(frm As Form)
MsgBox frm.Name
End Function
Run Code Online (Sandbox Code Playgroud)
“ me”只能从相应的表单对象中调用(即在对象的过程,函数和事件中)。
我最喜欢的引用当前表单的方法是调用screen.activeForm对象...
screen.activeForm.recordset.fields(myFieldname).value
screen.activeForm.controls(myControl).value
screen.activeForm.name
....
Run Code Online (Sandbox Code Playgroud)
当然,您可以将表单对象发送到自定义函数
my Result = myCustomFunction(screen.activeForm)
Run Code Online (Sandbox Code Playgroud)
或者,您可以构建用户定义的对象。然后,可以将所需的字段视为内部属性,在相应对象的Class_Initialize子级中设置。
| 归档时间: |
|
| 查看次数: |
30707 次 |
| 最近记录: |