使用Access 2007,我创建了一个表单(f_login)和一个查询(c_login),我想从我的sql查询中获取结果并通过文本框显示在我的表单上。 这是我的SQL查询(工作):
SELECT t_lvl.nr_lvl
FROM t_admin INNER JOIN t_lvl ON t_admin.nr_rf = t_lvl.nr_rf
WHERE (((t_admin.nr_rf)=[Forms]![f_login]![txb_user].[VALUE]) AND ((t_admin.psw)=[Forms]![f_login]![txb_psw].[VALUE]));
我试图把我的文本框的控制源放在那些代码上,但它们都没有用......
=DLookup("[nr_lvl]","[c_login]")
=DLookup("nr_lvl","c_login")
=DLookup("c_login","nr_lvl")
=DLookUp("[c_login]";"[nr_lvl] =" & [Forms]![f_login]![txb_lvl])
我真的不知道为什么它不起作用!
答案 0 :(得分:1)
在立即窗口中测试你的DLookup
表达式(你可以用 Ctrl + g 去那里)。
在立即窗口中键入此内容并按返回后,查看您获得的内容。
Debug.Print TypeName(DLookup("nr_lvl","c_login")), DLookup("nr_lvl","c_login")
您告诉我们c_login
是一个查询,向我们展示了该查询的SQL,并确认查询返回正确的结果。由于nr_lvl
是从该查询返回的字段,因此在表单视图中打开表单DLookup
时,我不明白为什么f_login
会失败。
那么看看立即窗口中DLookup
会发生什么...它是否返回任何值,错误的值或错误消息。然后你需要弄清楚如何改变它以获得正确的结果。
OTOH,如果DLookup
在立即窗口中为您提供了正确的结果,则表单的问题是文本框值不会更新以响应txb_user
中的更改和/或txb_psw
您应该从前两个的更新后事件中重新查询第三个文本框(使用DLookup
作为其控制源的文本框)。