aql 时间比较问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 09:33:00
这是我预定会议室时间冲突的问题,

int i,r

//没有数据则返回
if dw_2.rowcount() < 1 then return
//接收数据
dw_2.ACCEPTTEXT()
//判断会议室是否可以预定
dw_1.retrieve()

r=dw_1.rowcount()

for i=1 to r step 1
if dw_2.getitemstring(1,"会议室号")=dw_1.getitemstring(i,"会议室号") then
if dw_2.getitemdatetime(1,"开会时间")<=dw_1.getitemdatetime(i,"结束时间") and dw_2.getitemdatetime(1,"开会时间")>dw_1.getitemdatetime(i,"使用时间") or dw_2.getitemdatetime(1,"结束时间")>=dw_1.getitemdatetime(i,"开始时间") and dw_2.getitemdatetime(1,"结束时间")<=dw_1.getitemdatetime(i,"结束时间")or dw_2.getitemdatetime(1,"开会时间")<dw_1.getitemdatetime(i,"开始时间")and dw_2.getitemdatetime(1,"开会时间")>dw_1.getitemdatetime(i,"结束时间") then
messagebox("信息提示:","您想预定的会议室在这个时段已经被预定,请查询后,重新输入正确的信息!");
return

end if
end if

是不是时间比较上有问题, 你尝试下转换时间为字符串再比较,或者用时间比较函数.我也不知道你用的是VB还是什么, 但估计是在时间比较和赋值上有问题;

用排除法来确定出错语句;

把绝对不会出错的语句先 改成注释,再逐步缩小排除范围, 应该五分钟内能找到出错语句;

dw_2.getitemdatetime(1,"结束时间")
这样取出来的不是时间类型吧?

你是用的PB吧,我不是很清楚PB的语法,你试一下这个格式是什么,这样的话,我建议你查一下语法,看看什么格式

如果是在不行,你就是把数据库中的值读出来,赋给变量做类型转换,然后再做比较

要转换成字符型,直接用string(datetime) 就可以了
然后你是要比较什么东西,是取出来的两个值吗?