Foxtable(狐表)用户栏目专家坐堂 → 如何将子表里面的内容自动随着父表里面内容的变更而自动更新?


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

主题:如何将子表里面的内容自动随着父表里面内容的变更而自动更新?

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


加好友 发短信
等级:幼狐 帖子:126 积分:898 威望:0 精华:0 注册:2016/8/2 9:17:00
  发帖心情 Post By:2016/8/9 21:37:00 [只看该作者]

老师,什么叫逻辑列啊?我没有编程基础,很多问题不懂啊

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/9 21:39:00 [只看该作者]

 判断那一列新加的列,不要判断 断面名称 啊

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


加好友 发短信
等级:幼狐 帖子:126 积分:898 威望:0 精华:0 注册:2016/8/2 9:17:00
  发帖心情 Post By:2016/8/10 17:27:00 [只看该作者]

老师,恕我愚钝,我还是搞不好,能否帮我弄一下,谢谢

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/10 17:32:00 [只看该作者]

加一列 ABC,类型设置成 逻辑

 

If e.DataCol.Name = "abc" AndAlso e.DataRow("abc") = True Then
    Dim nma() As String = {"A1","A2","A3","A4"}
'A表数据来源列

   
Dim nmb() As String = {"B1","B2","B3","B4"} 'B表数据接收列
   
Dim dr As DataRow = DataTables("表B").AddNew
   
For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
   
Next
End
If


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


加好友 发短信
等级:幼狐 帖子:126 积分:898 威望:0 精华:0 注册:2016/8/2 9:17:00
  发帖心情 Post By:2016/8/10 18:27:00 [只看该作者]

老师,那是不是要在父表和子表中都加一列ABC,设置成逻辑列,这个逻辑列需不需要输入什么内容了?

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


加好友 发短信
等级:幼狐 帖子:126 积分:898 威望:0 精华:0 注册:2016/8/2 9:17:00
  发帖心情 Post By:2016/8/10 18:32:00 [只看该作者]

我建了一个,好像非要在表A逻辑列ABC中输入数字符才能显示?这是什么原因?

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


加好友 发短信
等级:幼狐 帖子:126 积分:898 威望:0 精华:0 注册:2016/8/2 9:17:00
  发帖心情 Post By:2016/8/10 18:57:00 [只看该作者]

老师您好,我按照您的代码写进去了,但是在操作中有两个问题,第一,就是逻辑列ABC,每个方框里面都要划钩,才有效,我有几百行,每一行都去划钩,有没有一次性全部选择的,要不然很费时间,每一行都要去点击;
图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看
                                                                                 第二,我在对父表进行编辑的时候,例如删除或者重新写的时候,老师出现方框中的错误,是什么原因,求解,谢谢!
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:幼狐 帖子:126 积分:898 威望:0 精华:0 注册:2016/8/2 9:17:00
  发帖心情 Post By:2016/8/10 18:59:00 [只看该作者]

具体的错误代码如下图,请老师帮忙指正,谢谢
图片点击可在新窗口打开查看此主题相关图片如下:5.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/10 19:45:00 [只看该作者]

 1、做个按钮

 

DataTables("表A").ReplaceFor("abc", True)

 

 2、贴出代码


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


加好友 发短信
等级:幼狐 帖子:126 积分:898 威望:0 精华:0 注册:2016/8/2 9:17:00
  发帖心情 Post By:2016/8/10 20:56:00 [只看该作者]

If e.DataCol.Name.Contains("L") Then
    If e.newvalue > "" AndAlso e.NewValue.Contains("L") Then
        e.DataRow(e.DataCol.name.Replace("L", "")) = val(e.NewValue) / 2
    Else
        e.DataRow(e.DataCol.name.Replace("L", "")) = e.NewValue
    End If
End If
If e.DataCol.Name = "ABC" AndAlso e.DataRow("ABC") = True Then
    Dim nma() As String = {"断面名称","监测月份","规划类别","断面类别","超标项目","超标倍数"} 
    Dim nmb() As String = {"断面名称","监测月份","规划类别","断面类别","超标项目","超标倍数"} 
    Dim dr As DataRow = DataTables("地表水监测结果统计表").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
    Next
End If
Select Case e.DataCol.Name
    
    Case "高锰酸盐指数","五日生化需氧量","氨氮","石油类","挥发酚","汞","铅","化学需氧量","总磷","铜","锌","氟化物","硒","砷","镉","六价铬","氰化物","阴离子表面活性剂","硫化物","规划类别数值","溶解氧"
        If e.DataRow.IsNull("高锰酸盐指数")  OrElse e.DataRow.IsNull("五日生化需氧量")  OrElse e.DataRow.IsNull("氨氮") OrElse e.DataRow.IsNull("石油类")  OrElse e.DataRow.IsNull("挥发酚")  OrElse e.DataRow.IsNull("汞")  OrElse e.DataRow.IsNull("铅") OrElse e.DataRow.IsNull("化学需氧量")  OrElse e.DataRow.IsNull("总磷")  OrElse e.DataRow.IsNull("铜")  OrElse e.DataRow.IsNull("锌") OrElse e.DataRow.IsNull("氟化物")  OrElse e.DataRow.IsNull("硒")  OrElse e.DataRow.IsNull("砷")  OrElse e.DataRow.IsNull("镉") OrElse e.DataRow.IsNull("六价铬")  OrElse e.DataRow.IsNull("氰化物") OrElse e.DataRow.IsNull("阴离子表面活性剂")  OrElse e.DataRow.IsNull("硫化物") OrElse e.DataRow.IsNull("溶解氧") OrElse e.DataRow.IsNull("溶解氧") Then Return 
        Dim dic As new Dictionary(of String, Double())
        dic.Add("高锰酸盐指数", new Double() {4,6,10,15,999})
        dic.Add("五日生化需氧量", new Double() {3,4,6,10,999})
        dic.Add("氨氮", new Double() {0.5,1,1.5,2,999})
        dic.Add("石油类", new Double() {0.05,0.05,0.5,1,999})
        dic.Add("挥发酚", new Double() {0.002,0.005,0.01,0.1,999})
        dic.Add("汞", new Double() {0.00005,0.0001,0.001,0.001,999})
        dic.Add("铅", new Double() {0.01,0.05,0.05,0.1,999})
        dic.Add("化学需氧量", new Double() {15,20,30,40,999})
        dic.Add("总磷", new Double() {0.1,0.2,0.3,0.4,999})
        dic.Add("铜", new Double() {1.0,1.0,1.0,1.0,999})
        dic.Add("锌", new Double() {1,1,2,2,999})
        dic.Add("氟化物", new Double() {1,1,1.5,1.5,999})
        dic.Add("硒", new Double() {0.01,0.01,0.02,0.02,999})
        dic.Add("砷", new Double() {0.05,0.05,0.1,0.1,999})
        dic.Add("镉", new Double() {0.005,0.005,0.005,0.01,999})
        dic.Add("六价铬", new Double() {0.05,0.05,0.05,0.1,999})
        dic.Add("氰化物", new Double() {0.05,0.2,0.2,0.2,999})
        dic.Add("阴离子表面活性剂", new Double() {0.2,0.2,0.3,0.3,999})
        dic.Add("硫化物", new Double() {0.1,0.2,0.5,1.0,999})
        Dim s As String = ""
        Dim n As String = ""
        Dim max As Double = 0
        Dim bz As Integer = e.DataRow("规划类别数值")
        If bz >= 2 Then
            For Each key As String In dic.Keys
                Dim ary() As Double = dic(key)
                For i As Integer = 0 To ary.length - 1
                    If e.DataRow(key) <= ary(i) Then
                        If i+2 > max Then
                            max = i+2
                        End If
                        If i+2 > bz Then
                            s = s & "," & key
n = n & "," & format((e.DataRow(key)-ary(bz-2)) / ary(bz-2), "0.##")
                        End If
                        Exit For
                    End If
                Next
            Next
            Dim rjy() As Double = new Double() {2,3,5,6,999}
            For i As Integer = 0 To rjy.length - 1
                If e.DataRow("溶解氧") < rjy(i) Then
                    If 6-i > max Then
                        max = 6-i
                    End If
                    If 6-i > bz Then
                        s = s & ",溶解氧"
                        n = n & "," & format(rjy(6-bz) / e.DataRow("溶解氧"), "0.##")
                    End If
                    Exit For
                End If
            Next
            
        End If
        
        e.DataRow("超标项目") = s.trim(",")
        e.DataRow("超标倍数") = n.trim(",")
        Dim ary1() As String = {"", "", "Ⅱ类", "Ⅲ类", "Ⅳ类", "Ⅴ类", "劣Ⅴ类"}
        e.DataRow("断面类别数值") = max
        e.DataRow("断面类别") = ary1(max)
    Case "断面名称"
        Dim fdr As DataRow = DataTables("名称类别").find("名称 = '" & e.DataRow("断面名称") & "'")
        If fdr IsNot Nothing Then
            Dim ary() As String = {"", "", "Ⅱ类", "Ⅲ类", "Ⅳ类", "Ⅴ类", "劣Ⅴ类"}
            e.DataRow("规划类别数值") = fdr("类别")
            e.DataRow("规划类别") = ary(fdr("类别"))
        End If

If e.DataCol.Name = "断面名称" AndAlso e.DataRow("断面名称") = True Then
    Dim nma() As String = {"断面名称","监测月份"}
    Dim nmb() As String = {"断面名称","监测月份"}
    Dim dr As DataRow = DataTables("地表水监测结果统计表").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
    For Each dc As DataCol In DataTables("地表水监测结果统计表").DataCols
        dr(dc.Name) = e.DataRow(dc.Name)
    Next
    Next
End If

End Select

 回到顶部
总数 31 上一页 1 2 3 4 下一页