我试着在这里寻找我的答案,但没有运气。我已经尝试了许多方法来实现这个目标,但是没有成功,所以我想我会发布我的问题。我可能会多次重复自己,但我想尽可能具体/详细。
我有一个表单,它有一个追加查询,可以将表单上的所有字段转换为表格。在这个表单上,我有一个不可见的控件(文本框),它提取用户的Windows登录ID并将其用作默认值。我有另一个字段(文本框)用于用户的全名。
我运行了一个查询来从我的表中提取员工数据以获得员工ID(与他们的Window的登录ID,名字和姓氏相同。我还运行了一个表达式来连接这两个名字字段合为一个以显示其全名。
我一直在努力做到这一点,以便当有人打开表单时,他们的全名已经预先加载。如上所述,这是根据他们的Window登录ID与我们记录的员工ID的比较预先加载的,因为它们相同。它本质上是Excel的vlookup()版本,我试图这样做。我尝试过dlookup()但是没有成功。
是否有人知道如何使表单上的员工姓名控件的默认值由员工ID控件确定,该控件的默认值基于用户的窗口登录ID?
示例:让我们说我有一个名叫Fred Flintstone的员工。在数据库中有一个表,其中包含名字和姓氏的字段。他的员工ID也是一个字段,即A111111。
打开表单时,会出现一个不可见的文本框控件,其默认值来自员工用来登录计算机的Windows登录ID。此Windows登录ID恰好是A111111,与员工的员工ID相同。
创建了一个查询,其中包含员工ID,名字,姓氏和表达式的字段,以连接两个名称字段。所以第一行是:| A111111 |弗雷德|打火石|弗雷德弗林特斯通|。我不知道如何在这里制作桌子,所以请耐心等待。
回到表单,有一个Employee Name字段。如何在打开表单时将Fred Flintstone显示为默认值?
注意:员工姓名字段最终将被锁定,以便员工无法更改。我不知道这会产生什么影响,但我想我会提到它。
答案 0 :(得分:0)
在表单的onload事件中(非常粗略的代码,需要进行一些调整..):
dim db as dao.database
Dim rs as dao.recordset
Dim username as string
dim SQL as string
username = Environ("USERNAME") 'There are better ways to get username, but this is just a quick example.
SQL = "SELECT * FROM Your_Query WHERE username = '" & username & "'"
set db = currentdb
set rs = db.openrecordset(SQL,dbopensnapshot)
if rs.recordcount > 0
rs.movefirst
me.UserNameField = rs!username
else
msg "User Not Found"
End If
set rs = nothing
set db = nothing