以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]跨表引用  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=120127)

--  作者:天一生水
--  发布时间:2018/6/7 16:43:00
--  [求助]跨表引用

合并发送多个案件后,怎样根据这个不规则的案号,在勾选“邮寄”后,将“邮寄清单”中的数据,填入数据表的相应案件中。

 


图片点击可在新窗口打开查看此主题相关图片如下:image 1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:image 2.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:跨表引用.table


--  作者:有点甜
--  发布时间:2018/6/7 17:15:00
--  
\'\'\'
Dim str As String = "(2018)鲁01行初330、333、356-358、赔初10-12号"
Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(\\([0-9]+\\)[鲁0-9]+)|(行初[0-9\\-]+)|(赔初[0-9\\-]+)|([0-9\\-]+)")
Dim qz As String = ""
Dim lx As String = ""
For i As Integer = 0 To mc.count-1
    Dim s As String = mc(i).value
    msgbox(s)
    If i = 0 Then
        qz = s
    Else
        If s.StartsWith("行初") Then
            lx = "行初"
            s = s.replace("行初", "")
        ElseIf s.StartsWith("赔初") Then
            lx = "赔初"
            s = s.replace("赔初", "")
        End If
        Dim ii = 0
        Dim jj = 0
        If s.Indexof("-") >= 0 Then
            ii = s.split("-")(0)
            jj = s.split("-")(1)
        Else
            ii = s
            jj = s
        End If
        For k As Integer = ii To jj
            msgbox(qz & lx & k & "号")
        Next
    End If
Next

--  作者:天一生水
--  发布时间:2018/6/7 21:58:00
--  
谢谢甜老师!
还有点问题:
每个案件会在多个时间向被送达人邮寄文书,当确定邮寄后(勾选逻辑列),把当前记录的“邮寄清单”写入数据表;
上次请教过老师单元格追加的问题,这次把不规则案号邮寄的代码合并写入DataColChanged事件中,但是不同时间追加的代码不会修改,请老师帮助,谢谢!

图片点击可在新窗口打开查看此主题相关图片如下:aa.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:不规则案号单元格追加.table

--  作者:有点甜
--  发布时间:2018/6/7 22:12:00
--  

不明白你的意思。

 

你要做什么操作以后,得到什么效果?


--  作者:天一生水
--  发布时间:2018/6/7 22:30:00
--  
先把勾选都去掉,例子里有相同案号但不同时间的(比如,第一行和第二行)邮寄清单。
勾选第一行后,第一行的“邮寄清单“写入数据表的相同案号里;再勾选第二行(案号和第一行相同),把第二行的“邮寄清单“内容追加进刚才的单元格。

--  作者:有点甜
--  发布时间:2018/6/7 22:52:00
--  

If e.DataCol.Name = "邮寄" Then \'如果内容发生变动的是品名列
    \'’If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空
    \'e.DataRow("邮寄清单") = Nothing \'那么清空此行单价列的内容
    \'Else
    Dim str As String = e.DataRow("案号")
    Dim drs = e.DataTable.Select("案号=\'" & str & "\' and 邮寄 = true", "收寄日期")
    Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(\\([0-9]+\\)[鲁0-9]+)|(行初[0-9\\-]+)|(赔初[0-9\\-]+)|(行终[0-9\\-]+)|([0-9\\-]+)")
    Dim qz As String = ""
    Dim lx As String = ""
    For i As Integer = 0 To mc.count-1
        Dim s As String = mc(i).value
        \'msgbox(s)
        If i = 0 Then
            qz = s
        Else
            If s.StartsWith("行初") Then
                lx = "行初"
                s = s.replace("行初", "")
            ElseIf s.StartsWith("赔初") Then
                lx = "行赔初"
                s = s.replace("赔初", "")
            ElseIf s.StartsWith("行终") Then
                lx = "行终"
                s = s.replace("行终", "")
            End If
            Dim ii = 0
            Dim jj = 0
            If s.Indexof("-") >= 0 Then
                ii = s.split("-")(0)
                jj = s.split("-")(1)
            Else
                ii = s
                jj = s
            End If
            For k As Integer = ii To jj
                \'msgbox(qz & lx & k & "号")
                Dim dr1 As DataRow
                dr1 = DataTables("数据表").Find("[案号] = \'" & qz & lx & k & "号" & "\'")
                If dr1 IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
                    Dim ls As new List(of String)
                    For Each cdr As DataRow In drs
                        For Each l As String In cdr.lines("邮寄清单")
                            If ls.Contains(l) = False Then
                                ls.Add(l)
                            End If
                        Next
                    Next
                    dr1.lines("邮寄清单") = ls
                End If
            Next
        End If
    Next
End If