Foxtable(狐表)用户栏目专家坐堂 → [求助]跨表引用


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

主题:[求助]跨表引用

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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]跨表引用  发帖心情 Post By:2018/6/7 16:43:00 [只看该作者]

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

 


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

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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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

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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2018/6/7 21:58:00 [只看该作者]

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

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/7 22:12:00 [只看该作者]

不明白你的意思。

 

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


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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2018/6/7 22:30:00 [只看该作者]

先把勾选都去掉,例子里有相同案号但不同时间的(比如,第一行和第二行)邮寄清单。
勾选第一行后,第一行的“邮寄清单“写入数据表的相同案号里;再勾选第二行(案号和第一行相同),把第二行的“邮寄清单“内容追加进刚才的单元格。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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

 回到顶部