Foxtable(狐表)用户栏目专家坐堂 → 求助:关于时间格式的一段代码


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

主题:求助:关于时间格式的一段代码

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


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
求助:关于时间格式的一段代码  发帖心情 Post By:2017/1/18 11:59:00 [只看该作者]

If e.DataCol.Name = "下单时间" Then
    If e.DataRow.IsNull("下单时间") Then
        e.DataRow("订单编号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("下单时间"),"yyyyMMddHHmm") '以下单日期加时间为准生成订单号前12位
        If e.DataRow("订单编号").StartsWith(bh) = False '如果编号的前12位不符
            Dim max As String
            Dim idx As Integer
            MessageBox.show(e.DataRow("下单时间"))
            max = e.DataTable.Compute("Max(订单编号)","下单时间 = #" & e.DataRow("下单时间") & "# And [_Identify] <> " & e.DataRow("_Identify"))'取得该天的最大编号
            MessageBox.show(max)
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(13,3))+1                '获得最大编号的后四位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("订单编号") = bh  & Format(idx,"000")
        End If
    End If
End If


上面这段代码我是参考帮助手册的。现在的问题是红色部分不知道为什么判断不对,max一直为空,导致产生重复的订单编号


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20170118115704.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/1/18 11:59:35编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/18 12:06:00 [只看该作者]

改一下

 

Dim d As Date = e.DataRow("下单时间")

max = e.DataTable.Compute("Max(订单编号)","下单时间 >= #" & d.Date & "# And 下单时间 < #" & d.Date.AddDays(1) & "# And [_Identify] <> " & e.DataRow("_Identify"))'取得该天的最大编号


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


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By:2017/1/18 13:10:00 [只看该作者]

If e.DataCol.Name = "下单时间" Then
    If e.DataRow.IsNull("下单时间") Then
        e.DataRow("订单编号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("下单时间"),"yyyyMMddHHmmss") '以下单日期加时间为准生成订单号前14位
        If e.DataRow("订单编号").StartsWith(bh) = False '如果编号的前14位不符
            Dim max As String
            Dim idx As Integer
            Dim d As Date = e.DataRow("下单时间")
            max = e.DataTable.Compute("Max(订单编号)","下单时间 >= #" & d.Date & "# And 下单时间 < #" & d.Date.AddDays(1) & "# And [_Identify] <> " & e.DataRow("_Identify"))'取得该天的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(15,3))+1                '获得最大编号的后四位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("订单编号") = bh  & Format(idx,"000")
        End If
    End If
End If

代码改成这样产生了问题


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20170118115704.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By:2017/1/18 13:13:00 [只看该作者]

是这句出错了,已改好
idx = CInt(max.Substring(15,3))+1  

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/18 14:18:00 [只看该作者]

改成

 

idx = CInt(max.Substring(bh.length,3))+1                


 回到顶部