以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]第一列生成自动编号  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=177679)

--  作者:miaoqingqing
--  发布时间:2022/5/30 20:39:00
--  [求助]第一列生成自动编号
如题,根据第二列和第三列,生成第一列自动编号
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:求助第一列生成自动编号.table


--  作者:有点蓝
--  发布时间:2022/5/30 20:56:00
--  
参考:http://www.foxtable.com/webhelp/topics/2403.htm
--  作者:miaoqingqing
--  发布时间:2022/5/30 21:14:00
--  回复:(有点蓝)参考:http://www.foxtable.com/webh...
蓝主,上楼一列是日期,我的是两列字符,不懂修改。怎么修改?
--  作者:有点蓝
--  发布时间:2022/5/30 21:30:00
--  
看帮助里三、按类别编号
--  作者:miaoqingqing
--  发布时间:2022/5/31 7:55:00
--  回复:(有点蓝)看帮助里三、按类别编号
蓝主,报错帮忙看看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:求助第一列生成自动编号.table



--  作者:有点蓝
--  发布时间: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
--  发布时间:2022/5/31 15:22:00
--  回复:(有点蓝)         ...

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

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

--  作者:有点蓝
--  发布时间: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
--  发布时间:2022/5/31 16:15:00
--  回复:(有点蓝)自己加代码调试看效果就知道了Dim ma...
测试了一下,的确一目了然了。  有点像Excel函数里面的取右边的三位数。


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

--  作者:18996655501
--  发布时间: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