Foxtable(狐表)用户栏目专家坐堂 → 窗口中动态生成的表自动引用的数据同步更新


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

主题:窗口中动态生成的表自动引用的数据同步更新

美女呀,离线,留言给我吧!
采菊东篱下
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
窗口中动态生成的表自动引用的数据同步更新  发帖心情 Post By:2023/3/22 18:41:00 [显示全部帖子]

窗口中基本信息是Normal类型,窗口中棋赛名称管理是动态生成的表,

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20230322181905.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20230322181944.png
图片点击可在新窗口打开查看
e.DataRow.Save
Select Case e.DataCol.Name
    Case "棋赛名称", "棋赛副名"
        Dim Filter As String
        If e.DataCol.Name = "棋赛名称" Then
            Filter = "[棋赛名称] = '" & e.OldValue & "' And [棋赛副名] = '" & e.DataRow("棋赛副名") & "'" 
        Else
            Filter = "[棋赛名称] = '" & e.DataRow("棋赛名称") & "' And [棋赛副名] = '" & e.OldValue & "'"
        End If
        Dim drs As List(Of DataRow) = DataTables("基本信息").SQLSelect(Filter)
        If drs IsNot Nothing Then
            For Each dr As DataRow In drs
                dr(e.DataCol.Name) = e.NewValue
                dr.Save()
            Next
        End If
        With DataTables("基本信息")
            .LoadPage = 0 '加载第一页
            .LoadTop = 20 '每页5行
            .loadover = "_Identify"
            .LoadReverse = True
            .Load()
        End With
End Select
    这段代码在后台数据表中修改棋赛名称管理数据,基本信息表上的数据能实现同步自动引用更新,把上面的代码在全局DataColChanged表事件中改为如下,在窗口中修改棋赛名称管理上的数据,窗口中的基本信息数据没同步自动更新
If Forms("主窗口").opened And Forms("主窗口").ExistControl("Table棋赛名称管理") Then
    If e.DataTable.Name = "Table棋赛名称管理" Then
        e.DataRow.Save
        Select Case e.DataCol.Name
            Case "棋赛名称", "棋赛副名"
                Dim Filter As String
                If e.DataCol.Name = "棋赛名称" Then
                    Filter = "[棋赛名称] = '" & e.OldValue & "' And [棋赛副名] = '" & e.DataRow("棋赛副名") & "'"
                Else
                    Filter = "[棋赛名称] = '" & e.DataRow("棋赛名称") & "' And [棋赛副名] = '" & e.OldValue & "'"
                End If 
                Dim drs As List(Of DataRow) = DataTables("基本信息").SQLSelect(Filter)
                If drs IsNot Nothing Then
                    For Each dr As DataRow In drs
                        dr(e.DataCol.Name) = e.NewValue
                        dr.Save()
                    Next
                End If
                With DataTables("基本信息")
                    .LoadPage = 0 '加载第一页
                    .LoadTop = 20 '每页5行
                    .loadover = "_Identify"
                    .LoadReverse = True
                    .Load()
                End With
                With DataTables("主窗口_Table2")
                    .LoadPage = 0 '加载第一页
                    .LoadTop = 20 '每页5行
                    .loadover = "_Identify"
                    .LoadReverse = True
                    .Load()
                    Forms("主窗口").Controls("TextBox3").Value = 1 & "/" & .TotalPages
                End With
        End Select
    End If
End If
[此贴子已经被作者于2023/3/22 20:51:32编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/3/23 16:59:00 [显示全部帖子]

在窗口中修改棋赛名称管理上的数据基本信息表没任何反应,改为MessageBox.show(Filter)也没弹窗。为什么数据表上行,在窗口上不行?

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/3/23 17:46:00 [显示全部帖子]

改为MessageBox.show(Forms("主窗口").opened)
MessageBox.show(Forms("主窗口").ExistControl("Table棋赛名称管理"))
全没弹窗
[此贴子已经被作者于2023/3/23 17:46:13编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/3/23 20:18:00 [显示全部帖子]

1、这"棋赛名称", "棋赛副名"2个是表达式列,不是表达式
2、代码没有放对地方
3、窗口表如果是动态绑定的,请使用全局表事件,代码是写在全局表事件的DataColChanged
[此贴子已经被作者于2023/3/23 20:17:47编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/3/23 20:59:00 [显示全部帖子]

在项目事件Initialize中写入:

DataTables("基本信息").GlobalHandler.DataColChanged = True
依然无效。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/3/23 21:09:00 [显示全部帖子]

If Forms("主窗口").opened And Forms("主窗口").ExistControl("Table棋赛名称管理") Then
    DataTables("Table棋赛名称管理").GlobalHandler.DataColChanged = True
End If
这样写也无效。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/3/23 22:13:00 [显示全部帖子]

    Case "排座表字体设置"
        Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
        Dim dt1 As WinForm.Table
        Dim mc1 As String = "排座表字体设置"
        If tab.TabPages.Contains(mc1) = False Then
            tab.TabPages.Add(mc1, mc1)
            dt1 = Forms("主窗口").CreateSQLTable("Table'" & mc1 & "'", "Select * Fr om {排座表字体设置}", "")
            tab.Tabpages(mc1).AddControl(dt1)
            tab.SelectedIndex = tab.TabPages.count + 1
        Else
            dt1 = Forms("主窗口").Controls("Table'" & mc1 & "'")
        End If
        dt1.SetBounds(0, 0, 1140, 520)
        dt1.Table.SetColVisibleWidth("窗口名称|140|棋赛名称|190|棋赛名称字体选择|120|标题字体大小|90|棋赛副名|190|棋赛副名字体选择|120|副题字体大小|90|表字体|50|表字号|50")
        dt1.Table.SetHeaderRowHeight(40)
        Dim pg1 As WinForm.TabPage = Forms("主窗口").Controls("TabControl1").Tabpages(mc1)
        tab.SelectedPage = pg1
        DataTables("Table棋赛名称管理").GlobalHandler.DataColChanged = True
End Select
    

动态生成的表,把这段代码放到生成的表后也无反应。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/3/24 8:54:00 [显示全部帖子]

无改变。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/3/24 12:04:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛2023324.rar


 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2023/3/24 13:53:00 [显示全部帖子]

888888

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