Foxtable(狐表)用户栏目专家坐堂 → [求助]SqlFind 时间查询条件的疑惑


  共有2242人关注过本帖树形打印复制链接

主题:[求助]SqlFind 时间查询条件的疑惑

帅哥哟,离线,有人找我吗?
huangfanzi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]SqlFind 时间查询条件的疑惑  发帖心情 Post By:2020/6/15 12:27:00 [只看该作者]

项目中有以下代码,代码在表事件中双击行号打开一个打印预览窗口时执行:    
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

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/15 13:45:00 [只看该作者]

到后台数据库里看看,发货时间是不是还有秒和毫秒?

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

 回到顶部
帅哥哟,离线,有人找我吗?
huangfanzi
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/16 8:48:00 [只看该作者]

发货单号是字符型?

联系客服远程看看

 回到顶部