Foxtable(狐表)用户栏目专家坐堂 → [求助]第一列生成自动编号


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

主题:[求助]第一列生成自动编号

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


加好友 发短信
等级:三尾狐 帖子:660 积分:5180 威望:0 精华:0 注册:2019/7/26 12:54:00
[求助]第一列生成自动编号  发帖心情 Post By:2022/5/30 20:39:00 [只看该作者]

如题,根据第二列和第三列,生成第一列自动编号
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:求助第一列生成自动编号.table


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


加好友 发短信
等级:超级版主 帖子:110658 积分:563204 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/30 20:56:00 [只看该作者]


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


加好友 发短信
等级:三尾狐 帖子:660 积分:5180 威望:0 精华:0 注册:2019/7/26 12:54:00
回复:(有点蓝)参考:http://www.foxtable.com/webh...  发帖心情 Post By:2022/5/30 21:14:00 [只看该作者]

蓝主,上楼一列是日期,我的是两列字符,不懂修改。怎么修改?

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


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

看帮助里三、按类别编号

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


加好友 发短信
等级:三尾狐 帖子:660 积分:5180 威望:0 精华:0 注册:2019/7/26 12:54:00
回复:(有点蓝)看帮助里三、按类别编号  发帖心情 Post By:2022/5/31 7:55:00 [只看该作者]

蓝主,报错帮忙看看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:求助第一列生成自动编号.table



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


加好友 发短信
等级:超级版主 帖子:110658 积分:563204 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/31 8:47:00 [只看该作者]

                If max > "" Then '如果存在最大空间部位编号
                    idx = CInt(max.Substring(max.Length - 3)) + 1 '获得最大空间部位编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If

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


加好友 发短信
等级:小狐 帖子:371 积分:2672 威望:0 精华:0 注册:2020/7/24 10:30:00
回复:(有点蓝)         ...  发帖心情 Post By:2022/5/31 15:22:00 [只看该作者]


老师,这两句的主要差异是在哪里?  一个最大长度减3,一个从第三个数加三位数,怎么理解这个代码含义?
idx = CInt(max.Substring(max.Length - 3)) + 1

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

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


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

自己加代码调试看效果就知道了

Dim max As String = "123456-001"
Output.Show(max.Substring(max.Length - 3))
Output.show(max.Substring(2, 3))

max = "1234-001"
Output.show(max.Substring(max.Length - 3))
Output.show(max.Substring(2, 3))

如果第二列的字符长度不固定,明显第一句的用法才是正确的

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


加好友 发短信
等级:小狐 帖子:371 积分:2672 威望:0 精华:0 注册:2020/7/24 10:30:00
回复:(有点蓝)自己加代码调试看效果就知道了Dim ma...  发帖心情 Post By:2022/5/31 16:15:00 [只看该作者]

测试了一下,的确一目了然了。  有点像Excel函数里面的取右边的三位数。


另外,大家都是按照指导手册里面去写的这个,出错的比率不低,应该都是没有理解代码的含义的。

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


加好友 发短信
等级:婴狐 帖子:18 积分:270 威望:0 精华:0 注册:2023/3/20 13:01:00
  发帖心情 Post By:2023/3/22 11:03:00 [只看该作者]

elect Case e.DataCol.Name
    Case "第二列", "第三列"
        If e.DataRow.IsNull("第二列") AndAlso e.DataRow.IsNull("第三列") Then
            e.DataRow("第一列") = Nothing
        Else
            Dim max As String
            Dim idx As Integer
            Dim bh As String
            bh = e.DataRow("第二列") & "-" & e.DataRow("第三列") & "-"
            If e.DataRow("第一列").StartsWith(bh) = False Then
                max = e.DataTable.Compute("Max(第一列)", "第二列='" & e.DataRow("第二列") & "' And  第三列= '" & e.DataRow("第三列") & "'  And [_Identify] <> " & e.DataRow("_Identify"))
                If max > "" Then
                    idx = CInt(max.Substring(6, 3)) + 1
                Else
                    idx = 1
                End If
                e.DataRow("第一列") = bh  & format(idx, "000")
            End If 
        End If 
End Select

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