我创建了一个名为login的登录表单,其中用户名输入到txtEmployee文本框中,我需要在MS Access中以另一种形式在第二页中显示相同内容。
答案 0 :(得分:26)
DoCmd.OpenForm
允许您传递任意值作为最后一个参数。可以在新表单中以Me.OpenArgs
:
' Invoked by some Button on the first form '
Sub GoToSecondPage()
DoCmd.OpenForm "MySecondPage", acNormal, , , , , txtEmployee.Value
End Sub
' Second form '
Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
lblShowEmployeeName.Value = Me.OpenArgs
End If
End Sub
(未经测试的代码示例。)
答案 1 :(得分:6)
您可以将分隔的字符串作为OpenArgs参数传递:
DoCmd.OpenForm FormName:="miscForm", OpenArgs:=paramstring
这是一个处理以管道分隔的字符串作为参数传递给DoCmd.OpenForm的例程:
Dim Pstring As Variant
If Len(Me.OpenArgs) > 0 Then
Pstring = Split(Me.OpenArgs, "|")
var1 = Pstring(0)
<etc..>
End If
答案 2 :(得分:4)
在打开表单时,我个人会通过open参数传递它们。例如,从表格A中你会写
DoCmd.OpenForm "frmB", , , , , acDialog,”Badger”
然后在表单B的OnOpen事件中,您可以捕获您已发送的内容
Me.txtSomething=Me.OpenArgs
你只能传递一件事但是我做的很多就是在open参数中传递一个以管道分隔的字符串然后将其拆分出来。
答案 3 :(得分:0)
一些想法......
使用登录用户名字段上的AfterUpdate事件将名称写入全局变量,然后使用OnLoad事件填充第二页上的字段。
或者,如果您打算始终打开日志,您可以直接将字段的默认值设置为= [Forms]![LogInForm]![UserName]
答案 4 :(得分:0)
为什么不创建一个公共函数来存储&amp; /或检索在执行第一个表单后存储的全局变量?这样您不仅可以在一个或多个表单上使用它,还可以在查询中使用它(例如,返回与您存储的用户名匹配的记录)。
我同意这是“假的”安全性,但也有时候它足以满足您的需求。之前我已经实现了这一点,我将环境字符串用户名与用户表中的条目匹配。
顺便说一句,我将此功能称为个性化,而非安全性。
只是一个想法。