以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]SqlFind 时间查询条件的疑惑  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=151099)

--  作者:huangfanzi
--  发布时间:2020/6/15 12:27:00
--  [求助]SqlFind 时间查询条件的疑惑
项目中有以下代码,代码在表事件中双击行号打开一个打印预览窗口时执行:    
Dim dr上次车号 As DataRow
dr上次车号 = _dt销售出库.SQLFind("发货时间 < \'" & tb.Current("发货时间") & "\' And 通知单号 = \'" & tb.Current("通知单号") & "\' And 状态 = \'有效\' And 审核 = 1" ,"发货时间 Desc")
正常情况下,同一个单号发货时间不会相同,至少隔1分钟,可是,近期用户发生了发货时间相同的相同,举例如下:
通知单号   发货单号 发货车号     发货时间 
TZ001         1            1         2020-6-12 11:55
TZ001         2            2         2020-6-12 12:00
TZ001         3            3         2020-6-12 12:00
此时,执行上面代码,当打印2号或3号单时,上次车号都显示1号车,正确的情况是打印2号单才显示上次车号为1号车,打印3号单显示上次车号为2号车才对,新制定的规则是当时间相同时按发货单号排先后
于是我把代码改了下,如下:
dr上次车号 = _dt销售出库.SQLFind("发货时间 <= \'" & tb.Current("发货时间") & "\' And 通知单号 = \'" & tb.Current("通知单号") & "\' And 发货单号 < \'" & tb.Current("发货单号") & "\'And 状态 = \'有效\' And 审核 = 1" ,"发货时间 Desc,发货单号 Desc")
可查出来结果不对,打印3号单时,上次车号还是显示1号车,也就是说  发货时间 <= \'" & tb.Current("发货时间")   中的“=”没起作用,原因是什么呢?数据库用的是SQL

--  作者:有点蓝
--  发布时间:2020/6/15 13:45:00
--  
到后台数据库里看看,发货时间是不是还有秒和毫秒?

msgbox("发货时间 <= \'" & tb.Current("发货时间") & "\' And 通知单号 = \'" & tb.Current("通知单号") & "\' And 发货单号 < \'" & tb.Current("发货单号") & "\'And 状态 = \'有效\' And 审核 = 1" ) ‘看看实际条件’

--  作者:huangfanzi
--  发布时间:2020/6/16 8:19:00
--  
这是SQL的销售出库表的截图,没有毫秒,是不是要显示毫秒要在SQL中设置的?条件代码没什么问题,这个项目已经运行快2年了,就是最近才出现了同一时间的情况,只发时间不同,执行结果是正确的

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200616081448.jpg
图片点击可在新窗口打开查看
这个发货时间是在窗口中的SQLTable中录入的,并且设置了代码:
dt2.dataCols("发货时间").SetDateTimeFormat(DateTimeFormatEnum.DateTime) \'格式化时间
另外做了个测试,代码如下:

Dim dr1 As DataRow
dr1 = _dt销售出库.SQLFind("单号 = \'202006120112\'")
If dr1 IsNot Nothing Then \'如果找到的话
MessageBox.Show(dr1("发货时间"))
End If

Dim dr2 As DataRow
dr2 = _dt销售出库.SQLFind("单号 = \'202006120113\'")
If dr2 IsNot Nothing Then \'如果找到的话
MessageBox.Show(dr2("发货时间"))
End If

Dim Val As Integer
Val = _dt销售出库.SQLCompute("Count(单号)","发货时间 = \'" & dr1("发货时间") &"\'")
MessageBox.Show(Val)

单号112与113的发货时间是一样的,前二个MessageBox所显示的时间如下:

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200616084155.jpg
图片点击可在新窗口打开查看
可第三个MessageBox的显示是0,按理来说应该是2才对
另外,在FT的发货时间列上尝试筛选,果然也是筛选不出记录

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200616084440.jpg
图片点击可在新窗口打开查看
可是,哪些直接在主表上录入的时间是可以时行正常筛选的
难道就因为现在的这个发货时间是由于窗口中录入而出现异样了?

[此贴子已经被作者于2020/6/16 8:53:31编辑过]

--  作者:有点蓝
--  发布时间:2020/6/16 8:48:00
--  
发货单号是字符型?

联系客服远程看看