Office中国论坛/Access中国论坛
标题:
请给段代码!
[打印本页]
作者:
llee
时间:
2004-2-13 16:19
标题:
请给段代码!
在一个表里有ID和考勤时间和日期.我想写一段VBA代码判断当天12:00之前此ID是否已经考勤.
作者:
zhengjialon
时间:
2004-2-13 16:36
If DLookup("日期", "test", "id=5 and hour(日期)>11") Then
MsgBox "no"
Else
MsgBox "yes"
End If
作者:
llee
时间:
2004-2-13 17:19
有一个由此表生成的窗体,我在ID项输入的ID号为当前ID号.
请说一下Dlookup的用发吗?我的帮助里没有.
作者:
zhengjialon
时间:
2004-2-13 17:51
作者:zhengjialon 即将在首页的专栏作家文章中发表
提示: 以下用法示例适合于大部分的合计函数(域函数如
Max, DMin等)
语法:
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之类的合计函数必竟是一个预定义好格式的函数,所支持的语法有限,但对于大多数的要求是都能够满足的。
作者:
llee
时间:
2004-2-13 18:18
我写的通不过啊?不知道理解的对不对.前一个"上班考勤记录"为一个表的名字,后一个"上班考勤记录"为一个窗体的名字.日期,ID,时间.均为表中的一项.
If DLookup("日期", "上班考勤时间记录", "id=" & forms!上班考勤时间记录!ID" and 日期="now()" and 时间>"12:00"") Then
作者:
zhengjialon
时间:
2004-2-13 18:24
为什么不按我写给你的格式呢?
作者:
llee
时间:
2004-2-13 18:32
If DLookup("日期", "上班考勤时间记录", "id=5 and hour(日期)>11") Then
是这样吗?那么请问ID=5是什么意思哪?我要的是判断我在窗体中的ID项输入的值.
而且日期为当天的日期,时间为12:00之前.
为对于你的写法还没有理解深刻,请大侠指点!
作者:
zhengjialon
时间:
2004-2-13 18:46
If DLookup("日期", "上班考勤时间记录", "id='" & forms!上班考勤时间记录!ID "' and 日期=#" & date() & "# and hour(时间)>11") Then
作者:
zhengjialon
时间:
2004-2-13 18:47
你的ID是文本型吗? 是文本型就要用单引号,数值型就不要。
作者:
llee
时间:
2004-2-13 18:53
时数值型的,但它报错"缺少列表分割符或("怎么回事?
[此贴子已经被作者于2004-2-13 10:58:44编辑过]
作者:
zhengjialon
时间:
2004-2-13 20:56
If DLookup("日期", "上班考勤时间记录", "id='" & forms!上班考勤时间记录!ID & "' and 日期=#" & date() & "# and hour(时间)>11") Then
少了一个&
作者:
llee
时间:
2004-2-13 21:19
运行时错误'3075'
语法错误(操作符丢失)在查询表达式'id=7 and日期=#2003-2-13# and hour(时间)>11'中
怎么回事?
作者:
llee
时间:
2004-2-13 21:26
现在错误没有了,但在我连续输入两次数据时它并不跳出then后的对话框.
作者:
llee
时间:
2004-2-13 21:34
还是不成功.
现在让它就判断一下当天此ID是否考过勤,
If DLookup("日期", "上班考勤时间记录", "id=" & Forms!上班考勤时间记录!ID & " and 日期=#" & Date & "# ") Then
Msgbox :"已考勤"
但我连续输入2次ID后它并没有弹出对话框.
怎么回事哪?
作者:
llee
时间:
2004-2-13 21:46
现在好了,好像它判断的是如果表中没有此ID的当天考勤记录则运行then.是吗?
作者:
llee
时间:
2004-2-13 22:36
请问一下,这个函数返回值是什么哪?现在的查询跟我所要的不一样啊?
我要的判断是通过ID,查询表里当天此ID是否考过勤.
但现在还是实现不了,请问是不是有其他问题?还是我函数应用错了?
作者:
zhengjialon
时间:
2004-2-14 01:08
上传库上来再改吧,这样说了半天都不清楚。
作者:
llee
时间:
2004-2-16 16:06
大侠,就是这个了,问题好像还很多,请看看!
[attach]3500[/attach]
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3