ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4115|回复: 6

[分享] DLOOKUP在ADO及EXCEL表间的查询运用

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-7-11 23:15 | 显示全部楼层 |阅读模式
本帖最后由 lichaobin 于 2013-7-11 23:46 编辑

DLOOKUP在ADO及EXCEL表间的查询运用例子:按表1的数据查询,并添加表2的小类名称,必须用ADO+SQL在EXCEL表中完成!表1:sheet1数据如下:file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/05/clip_image001.jpgfile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/05/clip_image003.jpg表2:sheet2数据如下:file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/05/clip_image004.jpgfile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/05/clip_image005.jpg目的要搞成这样:file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/05/clip_image006.jpgSQL代码如下:SELECT [商品编码],[商品条码],[商品名称],[数量],[小类编码],DLOOKUP("小类名称","Sheet2$","商品编码=" & "'" & 商品编码 & "'") AS 小类名称 FROM [Sheet1$] 注意事项:   DLookup(expr, domain, [criteria]) DLookup("字段名称" , "表或查询名称" , "条件字段名 = n")   expr:要获取值的字段名称   domain :要获取值的表或查询名称    criteria:用于限制 DLookup 函数执行的数据范围。如果不给 criteria 提供值,Dlookup 函数将返回域中的一个随机值。 DLOOKUP函数在SELECT查询语句中使用,一般效率很差.但仍有作用.需要注 意的是:三参数均为文本,用双引号标志,字段变量值,前后需加"'"号表示值.例:DLOOKUP("字段名称","表和查询名称$","条件字段名="&","&字值变量名&"'")SELECT [商品编码],[商品条码],[商品名称],[数量],[小类编码],DLOOKUP("小类名称","Sheet2$","商品编码=" & "'" & 商品编码 & "'") AS 小类名称 FROM [Sheet1$]  请问有 accessDlookup函数 实例可以提供参考吗?  最佳答案 语法:    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("count([姓名])","[排课记录_学生]","[班组]='" & [Forms]![教室班组]![班组名称] &"'") DLookUp("[创建日期]","[任务列表]","[id] in(DLookUp(max(id),'[任务列表]'))") =Dlookup("max(层ID)","[标准化知识列表]","层ID like '"& left([层ID],len([层ID])-3)&"???'")    Dlookup函数3 摘 要:Dlookup函数3 工资表录入窗体中,如何使用DLOOKUP将上个月的该值设为默认值。可以给个例子吗工资 =DLookup("[工资字段名]","[工资表的名称]","[人员ID] = "& 人员ID &" AND [月份] = "& Str(当前月份 - 1))工资 =nz(DLookup("[工资字段名]", "[工资表的名称]", "[人员ID] = " & 人员ID & " AND [月份] = " & Str(当前月份 - 1)) ,0)4 Dlookup中如何使用变量作为条件?Dima As Stringa = Me.CaptionIf IsNull(DLookup("[权限名]", "权限查询", "[用户] =[Forms]![主面板]![用户名] And [权限名]= a ")dlookup这里总是报错!改成這樣吧.:If IsNull(DLookup("[权限名]", "权限查询", "[用户] ='" & [Forms]![主面板]![用户名] & "'" & " And [权限名]='" &  a & "'")5请教DLookup函数的返回值access帮助中“ValidationRule、ValidationText 属性”条目下有如下示例:ValidationRule 属性:DLookup("客户ID", "客户", "客户ID = Forms!客户!客户ID") Is NullValidationText 属性:输入项必须是唯一的“客户ID”(域合计函数只允许在窗体级的有效性中使用)请教各位,DLookup("客户ID", "客户", "客户ID = Forms!客户!客户ID") Is Null 的返回值是什么?谢谢!用on error gotoerrdim aa=DLookup("客户ID", "客户", "客户ID = Forms!客户!客户ID") exiterr:msgbox err显示值就是了楼上的朋友,不好意思,我刚开始学Access,请问您写的程序如何运行?在一个按钮的单击事件中,写上上面的代码,然后打开窗体,单击此按钮。a=DLookup("[客户ID]", "客户", "[客户ID] ="& Forms!客户!客户ID) msgbox "a=" & aDLookup("客户ID", "客户", "客户ID = Forms!客户!客户ID") Is Null 是一个条件判断式,返回True或False.而DLookup("客户ID", "客户", "客户ID = Forms!客户!客户ID") 则返回“客户”表(查询)中满足条件:"客户ID = Forms!客户!客户ID"的客户ID字段的字段值,如果没有满足条件的记录则返回"NULL"值。   dlookup可以多条件查询:成绩表姓名  性别  成绩张三  男     80张三  女     85 =dlookup("成绩","成绩表","姓名='" & 姓名 & “‘ and 性别='" & 性别 & “‘”)如果姓名=张三,性别=男,则返回80如果姓名=张三,性别=女,则返回85
DLOOKUP函数在ADO及EXCEL表中的运用例子.rar (182.7 KB, 下载次数: 148)

TA的精华主题

TA的得分主题

发表于 2013-7-11 23:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
dlookup是什么函数?自定义的?求解释{:soso_e100:}

TA的精华主题

TA的得分主题

发表于 2013-7-11 23:28 | 显示全部楼层
楼主,是我这边显示的问题,还是你的图片上传出了问题?怎么看不到你的图片!

我看到DLOOKUP前来看个究竟!

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-11 23:41 | 显示全部楼层
这个类同于EXCEL表中的VLOOKUP函数.在SQL中,是内置函数来的.
一般用于表间关联.当然,和JOIN不一样.
这个函数在ADO的SELECT查询语句中的用法是:
SELECT 字段1, DLOOKUP("要查询表2中的字段名","表2名$","条件语句") as 字段2 FROM 表1$

三个参数都是字符串表示,当然,条件语句具体写法是:"表2条件字段名=" & "'" 表1字段变量名(值)  &"'"  ......
为什么?就是将变量值转成字符串值.表2的字段名,等于表1的条件字段值.前后必段用单引号表示.  

TA的精华主题

TA的得分主题

发表于 2013-7-11 23:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
dengjq2000 发表于 2013-7-11 23:28
楼主,是我这边显示的问题,还是你的图片上传出了问题?怎么看不到你的图片!

我看到DLOOKUP前来看个究竟 ...

是啊,我也看不到图片啊。

DLookup是什么?



TA的精华主题

TA的得分主题

发表于 2013-7-11 23:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
minjiwei 发表于 2013-7-11 23:42
是啊,我也看不到图片啊。

DLookup是什么?

不知道什么意思,总之EXCEL里本身没这个函数!
我还以为又什么广告,前来删除主题的!现在我都不知道该对此主题如何处理了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-12 00:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
版主,这个不是EXCEL表内置的函数,是ADO+SQL的,即类同于ACCESS的SQL代码一样.
如果真要删除,就删除.我应该放在ACCESS+SQL里.哎,发贴发错地方了.

点评

移至ACCESS版块了,建议整理一下主题帖格式。  发表于 2013-7-12 18:19
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 18:29 , Processed in 0.036688 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表