Office中国论坛/Access中国论坛

标题: [求助]是代码错了吗? [打印本页]

作者: wgf2005    时间: 2005-5-10 03:14
标题: [求助]是代码错了吗?
意图:打开本窗体时首先判断数据表”日期“时间与系统时间作对比,如果日期字段值小于系统日期,则关闭窗体同时弹出一个消息框“试用期已到,如果大于系统时间则正常打开本窗体。
代码过程:在本窗体的加载事件中作出判断
   判断1、首先判断数据库中是否有”日期“这个数据表
如果有这个表,再判断这个表中的日期是否小于系统日期
如果小于系统日期,那么弹出消息”试用期已到“并删除这个表,同时关闭这个窗体。否则正常打开窗体。
   判断2、如果没有“日期”这个数据表,就弹出消息:试用期已到,同时关闭这个窗体。

这个问题真让我头疼:我将系统日期改为大于日期表中的日期,而系统却没有反映。问题出在哪啦?[attach]10345[/attach]


[此贴子已经被作者于2005-5-9 19:20:44编辑过]


作者: mhaibo    时间: 2005-5-10 03:58
dim dateA as date

dateA =DLookup("日期", "日期")

if dateA <date then
作者: 青青    时间: 2005-5-11 07:30
这是因为您将“日期”表里的“日期”字段设置为“文本”的类型了。

这样,DLookup("日期", "日期")获得的字串值永远大于日期值的。

使得 DLookup("日期", "日期") < Date   永远为  False

将日期字段改为“日期/时间”的数据类型就可以了。
作者: 青青    时间: 2005-5-11 07:42
代码可简化为:

Private Sub Form_Load()
On Error Resume Next
If Nz(DLookup("日期", "日期")) < Date Then 'Exit Sub '如果日期字段的日期值小于系统日期
   MsgBox "测试期已到" '弹出消息:测试期已到
   DoCmd.DeleteObject acTable, "日期" '删除“日期”数据表(防止用户修改日期表)
   DoCmd.Close '关闭窗体
End If
End Sub





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3