以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  如何从字符型列数据中自动读出其它列数据?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=104950)

--  作者:旭日生
--  发布时间:2017/8/9 7:10:00
--  如何从字符型列数据中自动读出其它列数据?
从类似案号“(2016)苏1311民初字第002号”,根据“2016”自动读出“年度”数据,根据“民初”自动填写类别代码,自动填写流水号。
1、年度从案号中读出
2、民监类别代码为AMJ,民申代码为AMS,民初类别代码为AMC
3、流水号为“年份后两位+当天月份
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test.table

+当天日期+4位顺序号”,如1708080001。
[此贴子已经被作者于2017/8/9 7:23:11编辑过]

--  作者:旭日生
--  发布时间:2017/8/9 7:12:00
--  
附件没上传上去?
--  作者:有点甜
--  发布时间:2017/8/9 9:16:00
--  

DataColChanged

 

Select Case e.DataCol.name
    Case "案号"
        Dim str As String = e.DataRow("案号")
        Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=\\()[0-9]+?(?=\\))")
        If mc.count>0 Then
            e.DataRow("年度列") = mc(0).value
        Else
            e.DataRow("年度列") = Nothing
        End If
        If str.Contains("民初") Then
            e.DataRow("类别") = "AMC"
        ElseIf str.Contains("民监")Then
            e.DataRow("类别") = "AMJ"
        ElseIf str.Contains("民申") Then
            e.DataRow("类别") = "AMS"
        Else
            e.DataRow("类别") = Nothing
        End If
    Case "年度列"
        If e.DataRow("年度列") > "" AndAlso e.DataRow("年度列").length >= 4 Then
            Dim bh As String = e.DataRow("年度列").Substring(2) & Format(Date.Today, "MMdd")
            If e.DataRow("流水号").contains(bh) = False Then
                Dim max As String = e.DataTable.Compute("max(流水号)", "流水号 like \'" & bh & "%\'")
                Dim i As Integer = 1
                If max > "" Then
                    i = max.SubString(bh.Length)+11
                End If
                e.DataRow("流水号") = bh & format(i, "0000")
            End If
        End If
End Select


--  作者:旭日生
--  发布时间:2017/8/9 14:39:00
--  
非常感谢版主!回答好快,深受启发。但还存在几个小问题:
1、应该还有一栏,“编号”。没有自动读出和填写,见附件表test.table.
2、“流水号”不能重复,当天流程号应自然排序。
3、其它语句都能读懂,这句读不懂,也没找到相关资料:
 Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=\\()[0-9]+?(?=\\))")

--  作者:有点甜
--  发布时间:2017/8/9 16:11:00
--  

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test (1).table

http://www.runoob.com/regexp/regexp-syntax.html

 


--  作者:旭日生
--  发布时间:2017/8/9 17:37:00
--  
真是高手!你们的服务速度和服务质量真是令人赞叹。非常感谢!
以前购买过易表,再学习一下FoxTable,准备购买一份。