Foxtable(狐表)用户栏目专家坐堂 → 编号问题


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

主题:编号问题

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
编号问题  发帖心情 Post By:2016/6/28 12:43:00 [只看该作者]


If e.DataCol.Name = "订舱日期" Then
    If e.DataRow.IsNull("订舱日期") Then
        e.DataRow("订舱编号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("订舱日期"),"yyyyMMdd") '取得订舱编号的8位前缀
        If e.DataRow("订舱编号").StartsWith(bh) = False '如果订舱编号的前8位不符
            Dim  max As String
            Dim  idx As  Integer
            max = e.DataTable.Compute("Max(订舱编号)","订舱日期 = #" & e.DataRow("订舱日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大订舱编号
            If  max > "" Then '如果存在最大订舱编号
                idx = CInt(max.Substring(9,3)) + 1  '获得最大订舱编号的后三位顺订舱编号,并加1
            Else
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
                idx = 1 '否则顺订舱编号等于1
            End  If
            e.DataRow("订舱编号") = bh & "-内贸" & Format(idx,"000")
         End If
    End  If
 End  If

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2016/6/28 12:44:00 [只看该作者]


If e.DataCol.Name = "订舱日期" Then
    If e.DataRow.IsNull("订舱日期") Then
        e.DataRow("订舱编号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("订舱日期"),"yyyyMMdd") '取得订舱编号的8位前缀
        If e.DataRow("订舱编号").StartsWith(bh) = False '如果订舱编号的前8位不符
            Dim  max As String
            Dim  idx As  Integer
            max = e.DataTable.Compute("Max(订舱编号)","订舱日期 = #" & e.DataRow("订舱日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大订舱编号
            If  max > "" Then '如果存在最大订舱编号
                idx = CInt(max.Substring(9,3)) + 1  '获得最大订舱编号的后三位顺订舱编号,并加1
            Else
                idx = 1 '否则顺订舱编号等于1
            End  If
            e.DataRow("订舱编号") = bh & "-内贸" & Format(idx,"000")
         End If
    End  If
 End  If
这个代码出错在哪里,才会形成所有的编号变成一样了。

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


加好友 发短信
等级:四尾狐 帖子:953 积分:7252 威望:0 精华:0 注册:2011/9/6 13:36:00
  发帖心情 Post By:2016/6/28 13:04:00 [只看该作者]


If e.DataCol.Name = "订舱日期" Then
    If e.DataRow.IsNull("订舱日期") Then
        e.DataRow("订舱编号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("订舱日期"),"yyyyMMdd") '取得订舱编号的8位前缀
        If e.DataRow("订舱编号").StartsWith(bh) = False '如果订舱编号的前8位不符
            Dim  max As String
            Dim  idx As  Integer
            max = e.DataTable.Compute("Max(订舱编号)","订舱日期 = #" & e.DataRow("订舱日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大订舱编号
            If  max > "" Then '如果存在最大订舱编号
                idx = CInt(max.Substring(12)) + 1  '获得最大订舱编号的后三位顺订舱编号,并加1
            Else
                idx = 1 '否则顺订舱编号等于1
            End  If
            e.DataRow("订舱编号") = bh & "-内贸" & Format(idx,"000")
         End If
    End  If
 End  If
这个代码出错在哪里,才会形成所有的编号变成一样了。

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2016/6/28 13:26:00 [只看该作者]

貌似也不对,关键我要想把红色【内贸】加进去,所以才出现问题的。

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


加好友 发短信
等级:五尾狐 帖子:1174 积分:8782 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2016/6/28 13:52:00 [只看该作者]

设置代码列,列的内容就是“内贸”

采用这种格式会好些
Select e.DataCol.Name
    Case "代码".....

给你个参考 这段代码编出来的是例如:P16001-110001Z-DQ201-01
Select e.DataCol.Name
    Case "系统编号_工程专业","系统编号_年份日期","设计编号_电压等级","设计编号_设计阶段","图纸编号_专业类别","图纸编号_顺序编号"
        If e.DataRow.IsNull("系统编号_工程专业") OrElse e.DataRow.IsNull("系统编号_年份日期") OrElse e.DataRow.IsNull("设计编号_电压等级") OrElse e.DataRow.IsNull("设计编号_设计阶段") OrElse e.DataRow.IsNull("图纸编号_专业类别") OrElse e.DataRow.IsNull("图纸编号_顺序编号") Then
            e.DataRow("图签图号") = Nothing
        Else
            Dim d As Date = e.DataRow("系统编号_年份日期")
            d = new Date(d.Year, 1,1)
            Dim max As Integer
            Dim flt As String
            flt = "系统编号_工程专业 = '"& e.DataRow("系统编号_工程专业") & "' And 系统编号_年份日期 >= #" & d & "# and 系统编号_年份日期 < #" & d.AddYears(1) & "# And [_Identify] <> " & e.DataRow("_Identify")
            max = e.DataTable.Compute("Max(系统编号_顺序编号)",flt) '取得该月的相同工程代码的最大单据编号
            e.DataRow("系统编号_顺序编号") = max + 1
            flt = "系统编号_工程专业 = '"& e.DataRow("系统编号_工程专业") & "' And 设计编号_电压等级 = '" & e.DataRow("设计编号_电压等级") & "' And 系统编号_年份日期 >= #" & d & "# and 系统编号_年份日期 < #" & d.AddYears(1) & "# And [_Identify] <> " & e.DataRow("_Identify")
            max = e.DataTable.Compute("Max(设计编号_工程编号)",flt) '取得该月的相同工程代码的最大单据编号
            e.DataRow("设计编号_工程编号") = max + 1
            flt = "系统编号_工程专业 = '"& e.DataRow("系统编号_工程专业") & "' and 图纸编号_专业类别 = '" & e.DataRow("图纸编号_专业类别") & "' and 设计编号_电压等级 = '" & e.DataRow("设计编号_电压等级") & "' And 系统编号_年份日期 >= #" & d & "# and 系统编号_年份日期 < #" & d.AddYears(1) & "# And [_Identify] <> " & e.DataRow("_Identify")
            max = e.DataTable.Compute("Max(设计编号_工程编号)",flt) '取得该月的相同工程代码的最大单据编号
            'e.DataRow("分册顺序号") = max + 1
            e.DataRow("图签图号") = e.DataRow("系统编号_工程专业") & format(d, "yy") & format(e.DataRow("系统编号_顺序编号"), "000-") & e.DataRow("设计编号_电压等级") & format(e.DataRow("设计编号_工程编号"), "000") & e.DataRow("设计编号_设计阶段") & "-" & e.DataRow("图纸编号_专业类别") & Format(e.DataRow("图纸编号_分册编号"), "00-") & Format(e.DataRow("图纸编号_顺序编号"),"00")
        End If
End Select


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/28 14:43:00 [只看该作者]

If e.DataCol.Name = "订舱日期" Then
    If e.DataRow.IsNull("订舱日期") Then
        e.DataRow("订舱编号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("订舱日期"),"yyyyMMdd") & "-内贸" '取得订舱编号的8位前缀
        If e.DataRow("订舱编号").StartsWith(bh) = False '如果订舱编号的前8位不符
            Dim  max As String
            Dim  idx As  Integer
            max = e.DataTable.Compute("Max(订舱编号)","订舱日期 = #" & e.DataRow("订舱日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大订舱编号
            If  max > "" Then '如果存在最大订舱编号
                idx = CInt(max.Substring(bh.length,3)) + 1  '获得最大订舱编号的后三位顺订舱编号,并加1
            Else

                idx = 1 '否则顺订舱编号等于1
            End  If
            e.DataRow("订舱编号") = bh & Format(idx,"000")
         End If
    End  If
 End  If


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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2016/6/28 15:25:00 [只看该作者]

感觉这个代码是没有问题,可能是其他代码引起这个生成的编号出现问题,整列都变成最后一次生成的编号

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/28 15:30:00 [只看该作者]

 上传foxtable实例说明问题。

 回到顶部