1  DLookup正常用法

用于数值型条件值:

DLookup("字段名称" , "表或查询名称" , "条件字段名 = n")

用于字符串型条件值:(注意字符串的单引号不能丢失)

DLookup("字段名称" , "表或查询名称" , "条件字段名 = '字符串值'")

用于日期型条件值:(注意日期的#号不能丢失)

DLookup("字段名称" , "表或查询名称" , "条件字段名 = #日期值#")

从窗体控件中引用条件值用法

用于数值型条件值:

DLookup("字段名称" , "表或查询名称" , "条件字段名 =" &

forms!窗体名!控件名)

用于字符串型条件值:(注意字符串的单引号不能丢失)

DLookup("字段名称" , "表或查询名称" , "条件字段名 = '" &

forms!窗体名!控件名 & "'")

用于日期型条件值:(注意日期的#号不能丢失)

DLookup("字段名称" , "表或查询名称" , "条件字段名 = #" &

forms!窗体名!控件名 & "#")

混合使用方法(支持多条件)

在这种方法中也可以在条件中写入固定的值。

DLookup("字段名称" , "表或查询名称" , "条件字段名1 = " & Forms!窗体名!控件名1  _

& " AND 条件字段名2 = '" & Forms!窗体名!控件名2 & "'" _

& " AND 条件字段名3 =#" & Forms!窗体名!控件名3 & "#")

2  DLookup 方法

请参阅 应用于 示例 特性

使用 DLookup 函数可以从指定记录集(一个域)内获取特定字段的值。

可以在 Visual Basic、宏、查询表达式、窗体或报表上的计算控件中使用 DLookup 函数。Variant 型。

expression.DLookup(Expr, Domain, Criteria)

[B]expression [/B]  必需。返回“Applies To”列表中的一个对象的表达式。

[B]Expr  必需 String 型。[/B]

用于标识需要返回其值的字段的表达式。可以是用来标识表或查询中字段的字符串表达式,也可以是执行字段中数据计算的表达式。在 expr 中,可以包含表中字段的名称、窗体上的控件、常量或函数。如果 expr 包括函数,则函数可以是内置的,也可以是用户自定义的,但不能是另一个域聚合函数或 SQL 聚合函数。

[B]Domain  必需 String 型。[/B]

字符串表达式,用于标识组成域的记录集。可以是一个表名称或查询名称。

Criteria  可选 Variant 型。

可选的字符串表达式,用于限制 DLookup 函数执行的数据范围。

例如,criteria 通常等价于 SQL 表达式中的 WHERE 子句,只是不含 WHERE 关键字。如果省略 criteria,DLookup 函数将在整个域计算 expr。任何包含在 criteria 中的字段必须同时也是 domain 中的字段,否则 Dlookup 函数将返回 Null。

说明

使用 Dlookup 可以显示窗体或报表数据源以外的字段值。例如,假定有一个基于“订单明细”表的窗体,显示“订单ID”、“产品ID”、“单价”、“数量”和“折扣”字段。而“产品名称”字段则位于另一个表,“产品”表中。通过在计算控件中使用 Dlookup 可以在同一窗体上显示“产品名称”。

DLookup 函数将基于 criteria 中指定的信息返回单个字段的值。虽然 criteria 是可选参数,但如果不为 criteria 提供数值,则 Dlookup 函数将返回域中的一个随机值。

如果没有记录满足 criteria,或者 domain 中没有任何记录,则 DLookup 函数将返回 Null。

如果有多个字段与条件相符,DLookup 函数将返回第一个匹配字段。用户应该指定条件以确保 DLookup 函数返回的字段值是唯一的。

可以在条件中使用主键值,例如在下例中使用 [雇员ID] 来确保 DLookup 函数返回唯一的值:

Dim varX As Variant

varX = DLookup("[LastName]", "Employees", "[EmployeeID] = 1")

无论是在宏、模块、查询表达式,还是在计算控件中使用 DLookup 函数,都必须仔细地构造 criteria 参数以确保能够正确地进行计算。

在查询的“条件”行、查询的计算字段表达式中或更新查询的“更新到”行中,均可以使用 DLookup 函数来指定条件。

如果要显示的字段不在窗体或报表所基于的数据源中,则也可以在窗体或报表上计算控件中的表达式中使用 DLookup 函数。例如,假定有一个基于“订单明细”表的“订单明细”窗体,窗体上有一个显示“产品ID”字段的、名为“产品ID”的文本框。若要根据文本框中的值从“产品”表查阅“产品名称”,则可以另外创建一个文本框并将其 ControlSource 属性设为以下表达式:

=DLookup("[ProductName]", "Products", "[ProductID] =" _

& Forms![Order Details]!ProductID)

提示

虽然可以使用 DLookup 函数显示外部表中字段的值,但更有效的方法是创建含有这两个表中所有所需字段的查询,然后以这个查询为基础创建窗体或报表。

也可以使用“查阅向导”来查找外部表中的值。

注意   使用该函数时,对 domain 中记录所做的未保存更改将不包括在内。如果要让 DLookup 函数基于更改后的值,必须先保存更改,方法是:单击“文件”菜单上的“保存记录”,将焦点移到另一个控件上,或者使用 Update 方法。

DLookup 函数将基于 criteria 中指定的信息返回单个字段的值。虽然 criteria 是可选参数,但如果不为 criteria 提供数值,则 Dlookup 函数将返回域中的一个随机值。

3         工资表录入窗体中,如何使用DLOOKUP将上个月的该值设为默认值。

可以给个例子吗

工资 = DLookup("[工资字段名]", "[工资表的名称]", "[人员ID] = " & 人员ID & " AND [月份] = " & Str(当前月份 - 1))

工资 = nz(DLookup("[工资字段名]", "[工资表的名称]", "[人员ID] = " & 人员ID & " AND [月份] = " & Str(当前月份 - 1)) ,0)

4  Dlookup中如何使用变量作为条件?Dim a As String

a = Me.Caption

If IsNull(DLookup("[权限名]", "权限查询", "[用户] =[Forms]![主面板]![用户名] And [权限名]= a ")

dlookup这里总是报错!

改成這樣吧.:

If IsNull(DLookup("[权限名]", "权限查询", "[用户] ='" & [Forms]![主面板]![用户名] & "'" & " And [权限名]='" &  a & "'")

5请教DLookup函数的返回值access帮助中“ValidationRule、ValidationText 属性”条目下有如下示例:

ValidationRule 属性:

DLookup("客户ID", "客户", "客户ID = Forms!客户!客户ID") Is Null

ValidationText 属性:

输入项必须是唯一的“客户ID”(域合计函数只允许在窗体级的有效性中使用)

请教各位,DLookup("客户ID", "客户", "客户ID = Forms!客户!客户ID") Is Null 的返回值是什么?

谢谢!

用on error goto err

dim a

a=DLookup("客户ID", "客户", "客户ID = Forms!客户!客户ID")

exit

err:

msgbox err

显示值就是了

楼上的朋友,不好意思,我刚开始学Access,请问您写的程序如何运行?

在一个按钮的单击事件中,写上上面的代码,然后打开窗体,单击此按钮。

a=DLookup("[客户ID]", "客户", "[客户ID] ="& Forms!客户!客户ID)

msgbox "a=" & a

DLookup("客户ID", "客户", "客户ID = Forms!客户!客户ID") Is Null 是一个条件判断式,返回True或False.

而DLookup("客户ID", "客户", "客户ID = Forms!客户!客户ID") 则返回“客户”表(查询)中满足条件:"客户ID = Forms!客户!客户ID"的客户ID字段的字段值,如果没有满足条件的记录则返回"NULL"值。

Dlookup函数综合释疑

提示:  以下用法示例适合于大部分的合计函数(域函数如:DMax, DMin,Dfirst,Dlast等)

语法:

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之类的合计函数必竟是一个预定义好格式的函数,所支持的语法有限,但对于大多数的要求是都能够满足的。

解释:

其实呢,[A girl]是一个ACCESS数据库中的表或者查询中的字段,这个函数最终返回这个字段中符合条件的第一个值。

[The world]是数据库中的表或者查询,这个表或者查询中包括了[A girl]和[...]字段。

最后面的]"[...] Like '"&[What I want]&"'"类似SQL的WHERE语句,也就是表或者查询中的[...]字段必须等于[What I want]。[What I want]是一个变量,一般是一个窗体上的文本框或者组合框。

Dlookup("[A girl]","[The world]","[...] Like '"&[What I want]&"'") 整句的意思是在[The world]这个表或者查询里面查找,当[...]字段等于变量[What I want]时,就返回[A girl]字段的第一个值。这个表达式里like可以替换为=,使用like时一般会加上通配符*。

这个函数只能返回符合条件的第一个值,你想让它随记录的变化而返回不同的值,可以将记录赋予[What I want]变量,并将文本框的数据源绑定这个函数表达式,这样随时变量改变,文本框的值也随之改变。但最好是对那个条件进行更严格的设置,使其符合条件的值只有一个,否则不能达到你的要求。

感觉你对这个函数的理解有问题,可以参见一些这个函数的例子。

----------------------------------------------

Dlookup("[A girl]","[The world]","[...] Like '"&[What I want]&"'")          老鬼版主的解释

vba代码来完成的。

Private Sub BB_AfterUpdate()

Me.BB = Abs(Int(Val(BB)))

If Me.BB > 12 Or Me.BB = 0 Then

MsgBox "取值不正确!": Exit Sub

End If

If IsNull(Me.AA) Or Me.AA = "" Then

DoCmd.GoToControl "aa"

Else

Me.Text2 = DLookup("[" & Me.BB & "月成本]", "成本表", "[商品ID]=" & Me.AA)

End If

End Sub

hi-wzj版主绝妙的传递字段名格式"["&      &"]"给DLookUp()增色不少

直接用:DLookUp("[" & [Forms]![成本]![BB] & "]","成本表","[商品ID]=forms![成本]![AA]") 也行了

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

DLookup使用详解相关推荐

  1. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  2. JVM年轻代,老年代,永久代详解​​​​​​​

    秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...

  3. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

  4. 通俗易懂word2vec详解词嵌入-深度学习

    https://blog.csdn.net/just_so_so_fnc/article/details/103304995 skip-gram 原理没看完 https://blog.csdn.net ...

  5. 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法

    深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...

  6. CUDA之nvidia-smi命令详解---gpu

    nvidia-smi是用来查看GPU使用情况的.我常用这个命令判断哪几块GPU空闲,但是最近的GPU使用状态让我很困惑,于是把nvidia-smi命令显示的GPU使用表中各个内容的具体含义解释一下. ...

  7. Bert代码详解(一)重点详细

    这是bert的pytorch版本(与tensorflow一样的,这个更简单些,这个看懂了,tf也能看懂),地址:https://github.com/huggingface/pytorch-pretr ...

  8. CRF(条件随机场)与Viterbi(维特比)算法原理详解

    摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...

  9. pytorch nn.LSTM()参数详解

    输入数据格式: input(seq_len, batch, input_size) h0(num_layers * num_directions, batch, hidden_size) c0(num ...

最新文章

  1. IOCP之accept、AcceptEx、WSAAccept的区别
  2. ansible(基础)
  3. 【CV】基于UNet网络实现的人像分割 | 附数据集
  4. 捷波朗STORM耳机设置中文_2020年 除了Airpods pro以外无线降噪蓝牙耳机如何选?五款热门入耳式蓝牙降噪耳机推荐...
  5. 基于超大规模集群的本地存储系统优化
  6. python中数据类型转换_Python(二).数据类型,数据类型转换
  7. python上手_Python 上手
  8. 工厂方法(Factory Pattern)
  9. python基础--导入模块
  10. eclipse汉化方法
  11. 华硕笔记本linux触摸板驱动,华硕笔记本触摸板驱动安装教程及打开方法
  12. 系统调用 操作系统课程设计 Linux内核编译 centos Ubuntu
  13. 开放世界游戏中的大地图背后有哪些实现技术
  14. 网线传输速度测试_千兆网络的速度测试
  15. 抖音根据关键词获取视频列表接口调用展示
  16. ssm启动不报错_ssm整合 启动表现层报错。。。
  17. python labelImg xml 格式的数据集解析及可视化
  18. python数据分析案例简单实战项目(一)--供应链销售数据分析
  19. R语言 回归诊断几种方法
  20. 小数化分数(C++)

热门文章

  1. 19岁天才少年纯手工自制CPU,直呼NB
  2. 企业数字化转型制胜案例全解析
  3. linux文件管理环境,linux教程环境搭建,基本命令及文件管理
  4. 2022跨境支付回顾,iPayLinks让“链接”更高效
  5. vue2引入Element UI的详细步骤
  6. flex+FluorineFx ASP.NET 视频拍照
  7. windows操作系统没有设置密码安全策略引发的威胁
  8. office2010 启动man_图解微软办公Office 2010八项新功能
  9. 未明学院:别做那只迷途的候鸟
  10. Arduino开发板使用红外遥控发射器和接收器的初学指南