2013-04-24 30 views
1

使用Access 2007,我创建了一个窗体(f_login)和一个查询(c_login),并且我想从我的sql查询中获得结果并显示在我的表单上,通过文本框。 这里是我的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]) 

我真的不知道为什么它不”工作!

回答

1

测试在立即窗口中的DLookup表达式(你可以用按Ctrl + 克去那里)。

看到您在立即窗口中输入后得到的结果,然后按返回

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作为控制源的那个)从前两个更新事件中删除。