Foxtable(狐表)用户栏目专家坐堂 → 【求助】自动编号问题


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

主题:【求助】自动编号问题

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


加好友 发短信
等级:婴狐 帖子:29 积分:372 威望:0 精华:0 注册:2020/7/2 8:34:00
【求助】自动编号问题  发帖心情 Post By:2020/7/18 4:52:00 [只看该作者]

老师,

我认为语法和逻辑没问题呀,怎么会报错呢?

请问正确的代码应该怎么写才能得到  输入创建日期、客户编码和部门编码得到 :

客户编码(4位)-部门编号(2位)-年号(2位)-顺序号(2位)

弄了好久,实在着急,麻烦老师帮忙解决下,十分感激!



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

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


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

表达式里面有多余的双引号

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


加好友 发短信
等级:婴狐 帖子:29 积分:372 威望:0 精华:0 注册:2020/7/2 8:34:00
  发帖心情 Post By:2020/7/18 10:45:00 [只看该作者]

老师,我反复测试了下,不知道多余再了那里,能具体告诉我吗?
谢谢

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


加好友 发短信
等级:超级版主 帖子:107739 积分:548028 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/18 10:47:00 [只看该作者]

发代码,不要截图

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


加好友 发短信
等级:婴狐 帖子:29 积分:372 威望:0 精华:0 注册:2020/7/2 8:34:00
  发帖心情 Post By:2020/7/18 10:56:00 [只看该作者]

问题1,不知道双引号多余在哪里?
问题2,我截取的是年的后2位,是不是后面的创建日期不需要这样写的?

Dim d As Date = e.DataRow("创建日期")
            Dim y As Integer = d.Year
            Dim m As Integer = d.Month
            Dim Days As Integer = Date.DaysInMonth(y,m)
            Dim fd As Date = New Date(y,m,1) '获得该月的第一天
            Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
            Dim bh As String = e.DataRow("客户编号") & "-" & e.DataRow("部门代号") & "-" & Format(d,"yy")        '生成编号的前缀
            If e.DataRow("项目编号").StartsWith(bh) = False '如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "客户编号 = '" & e.DataRow("客户编号") & " 'And "部门代号 = '" & e.DataRow("部门代号") & " 'And 创建日期 >= #" & fd & "# And 创建日期 <= #" & ld & "#  And [_Identify] <> " & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(项目编号)",flt)


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


加好友 发短信
等级:超级版主 帖子:107739 积分:548028 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/18 11:17:00 [只看该作者]

自己弹出结果看看就知道了,另外要注意空格的位置

msgbox(flt)

--------
flt = "客户编号 = '" & e.DataRow("客户编号") & "' And 部门代号 = '" & e.DataRow("部门代号") & "' And 创建日期 >= #" & fd & "# And 创建日期 <= #" & ld & "#  And [_Identify] <> " & e.DataRow("_Identify")

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


加好友 发短信
等级:婴狐 帖子:29 积分:372 威望:0 精华:0 注册:2020/7/2 8:34:00
  发帖心情 Post By:2020/7/18 11:26:00 [只看该作者]

问题1 了解了,谢谢

问题2 我截取的是年的后2位,是不是后面的创建日期不需要这样写的?

应该是怎么写的?

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


加好友 发短信
等级:超级版主 帖子:107739 积分:548028 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/18 11:36:00 [只看该作者]

贴出完整代码

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


加好友 发短信
等级:婴狐 帖子:29 积分:372 威望:0 精华:0 注册:2020/7/2 8:34:00
  发帖心情 Post By:2020/7/18 11:55:00 [只看该作者]

老师,

下面这段代码不出错了,但是自动编号的顺序号没有变化,请问是什么原因?

Select e.DataCol.Name
    Case "客户编号","部门代号"
        If e.DataRow.IsNull("客户编号") OrElse e.DataRow.IsNull("部门代号") Then
            e.DataRow("项目编号") = Nothing
        Else
            Dim dh As String = format(e.DataRow("创建日期"),"yy")
            Dim kh As String = e.DataRow("客户编号")
            Dim bb As String = e.DataRow("部门代号")
            Dim bh As String = kh & "-" & bb & "-" & dh        
            If e.DataRow("项目编号").StartsWith(bh) = False 
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "客户编号 = '" & kh & " 'And 部门代号 = '" & bb & " ' And [_Identify] <> " & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(项目编号)",flt) 
                If max > "" Then '如果存在最大单据编号
                    idx = CInt(max.Substring(9,2)) + 1 
                Else
                    idx = 1 
                End If
                e.DataRow("项目编号") = bh & Format(idx,"00")
            End If
        End If
End Select

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


加好友 发短信
等级:超级版主 帖子:107739 积分:548028 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/18 12:04:00 [只看该作者]

注意空格的位置,请仔细认真看6楼。如果看不出来,使用命令窗口调试(http://www.foxtable.com/webhelp/topics/1485.htm),把2个结果使用output.show输出来然后一个一个字符对比较

 回到顶部
总数 11 1 2 下一页