
ACCESS中DLOOKUP的语法和格式.doc
2页ACCESS 中 DLOOKUP 的语法和格式语法:DLookup(expr,domain,[criteria])参数解释:expr:要获取值的字段名称domain:要获取值的表或查询名称criteria:用于限制 DLookup 函数执行的数据范围如果不给 criteria 提供值,Dlookup函数将返回域中的一个随机值正常用法用于数值型条件值:DLookup("字段名称","表或查询名称","条件字段名=n")用于字符串型条件值:(注意字符串的单引号不能丢失)DLookup("字段名称","表或查询名称","条件字段名=' 字符串值'")用于日期型条件值:(注意日期的#号不能丢失)DLookup("字段名称","表或查询名称","条件字段名=#日期值#")从窗体控件中引用条件值用法用于数值型条件值:DLookup("字段名称","表或查询名称","条件字段名="&forms!窗体名!控件名 )用于字符串型条件值:(注意字符串的单引号不能丢失)DLookup("字段名称","表或查询名称","条件字段名='"&forms!窗体名!控件名 &"'")用于日期型条件值:(注意日期的#号不能丢失)DLookup("字段名称","表或查询名称","条件字段名=#"&forms!窗体名!控件名 &"#")混合使用方法(支持多条件)在这种方法中也可以在条件中写入固定的值。
DLookup("字段名称","表或查询名称","条件字段名 1="&Forms!窗体名!控件名 1_&"AND 条件字段名 2='"&Forms!窗体名! 控件名 2&"'"_&"AND 条件字段名 3=#"&Forms!窗体名! 控件名 3&"#")注:Dlookup 之类的合计函数(域函数 )是 ACCESS 为用户提供的内置函数,通过这些函数可以方便的从一个表或查询中取得符合一定条件的值赋予变量或控件值,就不需要再用DAO 或者 ADO 打开一个记录集,然后再去从中获取一个值,这样所写的代码要少的多但是如果需要更灵活的设计,比如所查询的域没有在一个固定的表或查询里,而是一个动态的 SQL 语法,或是临时生成的复杂的 SQL 语句,亦或是需要代入循环的条件值等,此时还是需要从 DAO 或者 ADO 中定义记录集来获取值因为 Dlookup 之类的合计函数必竟是一个预定义好格式的函数,所支持的语法有限,但对于大多数的要求是都能够满足的正确:=DLookUp("名称","tGroup","部门编号='" & [所属部门] & "'")错误:=DLookUp("名称","tGroup","部门编号='" & tEmployee![所属部门]& "'")我在查询视图一个字段中输入:内容: DLookUp("内容","总结","[期别] Between DateAdd("d",15,[开始日期]) And DateAdd("d",10,[结束日期])")结果显示:输入的表达式包含无效语法,反亮显示指出"d"然后我又改了如下:内容: DLookUp("内容","总结","[期别] Between DateAdd('d',15,[开始日期]) And DateAdd('d',10,[结束日期])")结果显示不能找到您在表达式中输入的名称“开始日期”这个式子,我想可能函数把“[开始日期]”当作“总结”表中的一个字段名了,而我要的是执行查询时输入参数。
楼上感谢,这样我也改过的,没有语法错误,输入参数 2010-8-1 和 2010-8-30 但是查不出结果如果把上式,直接换成期望的常数,就有期望结果如下:内容: DLookUp("内容","总结","[期别] Between #2010-8-15# And #2010-9-10#")这句执行结果是对的自己已经搞定了,改为如下即可:内容: DLookUp("内容","总结","[期别] Between DateAdd('d',15,# " & [开始日期] & "#) And DateAdd('d',10,#" & [结束日期] & "#) ")。












