Foxtable(狐表)用户栏目专家坐堂 → [求助]当前表最后1行的数据更新统计到表B


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

主题:[求助]当前表最后1行的数据更新统计到表B

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


加好友 发短信
等级:幼狐 帖子:113 积分:980 威望:0 精华:0 注册:2023/6/18 23:26:00
[求助]当前表最后1行的数据更新统计到表B  发帖心情 Post By:2024/8/8 17:44:00 [只看该作者]

求助,下面代码,增加当前表最后1行修改后,当前表最后1行的数据更新统计到表B
当前表非最后1行修改不跨表更新到表B,也就是只有当前表最后1行修改才执行下面代码


If e.DataCol.Name = "第一列" Then '如果内容发生变动的是第一列列

    If e.NewValue Is Nothing Then '如果新值是空白,也就是第一列列的内容为空

        e.DataRow("第二列") = Nothing '那么清空此行第二列列的内容

    Else

        Dim dr As DataRow

        '否则在表B表查找同名的表B行,将找到的行赋值给变量dr

        dr = DataTables("表B").Find("[第一列] = '" & e.NewValue & "'")

        If dr IsNot Nothing Then '如果找到了同名的表B行,也就是dr不是Nothing

            e.DataRow("第二列") = dr("第二列")

        End If

    End If

End If

[此贴子已经被作者于2024/8/8 18:14:52编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111401 积分:567075 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/8/8 20:08:00 [只看该作者]

If e.DataCol.Name = "第一列" Then '如果内容发生变动的是第一列列
    If e.NewValue Is Nothing Then '如果新值是空白,也就是第一列列的内容为空
        e.DataRow("第二列") = Nothing '那么清空此行第二列列的内容
    Else
dim p as integer = tables(e.datatable.name).findrow(e.DataRow)
if p = tables(e.datatable.name).rows.count - 1 then
        Dim dr As DataRow
        '否则在表B表查找同名的表B行,将找到的行赋值给变量dr
        dr = DataTables("表B").Find("[第一列] = '" & e.NewValue & "'")
……

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


加好友 发短信
等级:幼狐 帖子:113 积分:980 威望:0 精华:0 注册:2023/6/18 23:26:00
回复:(有点蓝)If e.DataCol.Name = "第一列" Then ...  发帖心情 Post By:2024/8/8 20:45:00 [只看该作者]

蓝大师,图片补充表达一下,要实现的是当前表A最后1行的值,自动更新同步到表B的成绩列,
之前我的描述有问题,上楼代码跟图片想要的效果不符,辛苦帮忙


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb



[此贴子已经被作者于2024/8/8 20:52:12编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111401 积分:567075 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/8/8 21:01:00 [只看该作者]

dim p as integer = tables(e.datatable.name).findrow(e.DataRow)
if p = tables(e.datatable.name).rows.count - 1 then
        Dim dr As DataRow = DataTables("表B").Find("[科目] = '" & e.DataCol.Name & "'")
        If dr IsNot Nothing Then '如果找到了同名的表B行,也就是dr不是Nothing
            dr("成绩") = e.DataRow(e.DataCol.Name)
        End If
End If
[此贴子已经被作者于2024/8/8 21:01:05编辑过]

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


加好友 发短信
等级:幼狐 帖子:113 积分:980 威望:0 精华:0 注册:2023/6/18 23:26:00
回复:(有点蓝)dim p as integer = tables(e.datata...  发帖心情 Post By:2024/8/9 10:28:00 [只看该作者]

蓝大师,下面代码放在 表切换时报错,求助

If MainTable.Name = "表A" Then '如果选择的主表是订单表
    Dim p As Integer = Tables(e.DataTable.name).findrow(e.DataRow)
    If p = Tables(e.DataTable.name).rows.count - 1 Then
        Dim dr As DataRow = DataTables("表B").Find("[科目] = '" & e.DataCol.Name & "'")
        If dr IsNot Nothing Then '如果找到了同名的表B行,也就是dr不是Nothing
            dr("成绩") = e.DataRow(e.DataCol.Name)
        End If
    End If
    
End If

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111401 积分:567075 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/8/9 10:36:00 [只看该作者]

放到datacolchanged事件,去掉第一行

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


加好友 发短信
等级:幼狐 帖子:113 积分:980 威望:0 精华:0 注册:2023/6/18 23:26:00
回复:(有点蓝)放到datacolchanged事件,去掉第一行...  发帖心情 Post By:2024/8/9 10:52:00 [只看该作者]

蓝大师,我这边想的是 表A最后5行都执行统计到表B
如果按上楼的代码,表A最后5行中的最后1行才在表事件编辑里执行代码,最后5行中的4行不执行代码
所以求助 放在 MainTable   事假里,下面代码怎么修改

If MainTable.Name = "表A" Then '如果选择的主表是订单表
    Dim p As Integer = Tables(e.DataTable.name).findrow(e.DataRow)

    If p = Tables(e.DataTable.name).rows.count - 1 Then
        Dim dr As DataRow = DataTables("表B").Find("[科目] = '" & e.DataCol.Name & "'")
        If dr IsNot Nothing Then '如果找到了同名的表B行,也就是dr不是Nothing
            dr("成绩") = e.DataRow(e.DataCol.Name)
        End If
    End If
    
    If p = Tables(e.DataTable.name).rows.count - 2 Then
        Dim dr As DataRow = DataTables("表B").Find("[科目] = '" & e.DataCol.Name & "'")
        If dr IsNot Nothing Then '如果找到了同名的表B行,也就是dr不是Nothing
            dr("成绩") = e.DataRow(e.DataCol.Name)
        End If
    End If

    If p = Tables(e.DataTable.name).rows.count - 3 Then
        Dim dr As DataRow = DataTables("表B").Find("[科目] = '" & e.DataCol.Name & "'")
        If dr IsNot Nothing Then '如果找到了同名的表B行,也就是dr不是Nothing
            dr("成绩") = e.DataRow(e.DataCol.Name)
        End If
    End If

    If p = Tables(e.DataTable.name).rows.count - 4 Then
        Dim dr As DataRow = DataTables("表B").Find("[科目] = '" & e.DataCol.Name & "'")
        If dr IsNot Nothing Then '如果找到了同名的表B行,也就是dr不是Nothing
            dr("成绩") = e.DataRow(e.DataCol.Name)
        End If
    End If

    If p = Tables(e.DataTable.name).rows.count - 5 Then
        Dim dr As DataRow = DataTables("表B").Find("[科目] = '" & e.DataCol.Name & "'")
        If dr IsNot Nothing Then '如果找到了同名的表B行,也就是dr不是Nothing
            dr("成绩") = e.DataRow(e.DataCol.Name)
        End If
    End If

 
End If

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111401 积分:567075 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/8/9 10:59:00 [只看该作者]

datacolchanged事件

    Dim p As Integer = Tables(e.DataTable.name).findrow(e.DataRow)
    If p >= Tables(e.DataTable.name).rows.count - 5 Then
        Dim dr As DataRow = DataTables("表B").Find("[科目] = '" & e.DataCol.Name & "'")
        If dr IsNot Nothing Then '如果找到了同名的表B行,也就是dr不是Nothing
            dr("成绩") = e.DataRow(e.DataCol.Name)
        End If
    End If

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


加好友 发短信
等级:幼狐 帖子:113 积分:980 威望:0 精华:0 注册:2023/6/18 23:26:00
回复:(有点蓝)datacolchanged事件    Di...  发帖心情 Post By:2024/8/9 11:21:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表a最后5水平行转表b垂直列.foxdb


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

蓝大师,求助实现的功能详见图片:
表A最后5水平行转表B垂直列 


 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111401 积分:567075 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/8/9 11:48:00 [只看该作者]

    Dim p As Integer = Tables(e.DataTable.name).findrow(e.DataRow)
    If p >= Tables(e.DataTable.name).rows.count - 5 Then
        Dim dr As DataRow = DataTables("表B").Find("[科目] = '" & e.DataCol.Name & "'")
        If dr IsNot Nothing Then '如果找到了同名的表B行,也就是dr不是Nothing
            dr("最后行_" & (Tables(e.DataTable.name).rows.count - p)) = e.DataRow(e.DataCol.Name)
        End If
    End If

 回到顶部
总数 17 1 2 下一页