Foxtable(狐表)用户栏目专家坐堂 → 一级窗体中的table1 table2都是sqltable表,怎么实现二级窗口中新增数据后,在一级窗口的表数据即时刷新呢?


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

主题:一级窗体中的table1 table2都是sqltable表,怎么实现二级窗口中新增数据后,在一级窗口的表数据即时刷新呢?

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
一级窗体中的table1 table2都是sqltable表,怎么实现二级窗口中新增数据后,在一级窗口的表数据即时刷新呢?  发帖心情 Post By:2022/5/24 18:40:00 [只看该作者]

一级窗体中的table1 table2都是sqltable表,怎么实现二级窗口中新增数据后,在一级窗口的表数据即时刷新呢?

table1是主表  Current事件会更具当前表中的uuid  去出发table2加载主表uuid=uuid的数据

Current事件代码如下:
Dim zs1 As Integer = Tables(e.form.name & "_table1").Count
If zs1 >0 Then
    If Tables(e.form.name & "_table1").Current("uuid")<>"" Then
        vars("主表uuid")=Tables(e.form.name & "_table1").Current("uuid")
        Tables(e.form.name & "_table2").Filter="主表uuid='" & Tables(e.form.name & "_table1").Current("uuid") &"'"
        Dim zs2 As Integer = Tables(e.form.name & "_table2").Count
        If zs2 >0 Then
            Tables(e.form.name & "_table3").Filter="附件uuid='" & Tables(e.form.name & "_table2").Current("uuid") &"'"
        Else
            Tables(e.form.name & "_table3").Filter="uuid='XXXXXXX'"
        End If
    Else
        Tables(e.form.name & "_table2").Filter="uuid='XXXXXXX'"
    End If
End If


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

窗体关闭事件代码如下:【代码运行后刷新数据不是很完美,会导致table1表中的Current事件失效,一级窗体就只有最后筛选的这个表数据存在uuid关联数据了;有没有办法保持数据刷新的同时,原来table表中的Current事件代码又能够准确运行呢?
Dim cmd As new SQL Command
cmd.Connecti
cmd.Comman dText = "SE LECT * F ROM 知识库主表"
Dim dt As DataTable 
dt= cmd.ExecuteReader()
dt.LoadFilter=""
dt.Load
Dim tb As WinForm.Table = Forms("知识库").Controls("Table1")
tb.Table.DataSource =dt
tb.Table.SetColVisibleWidth("类别|120|级别|60|行业|120|单位|120|文件名|700")


cmd.Comm andText = "SE LECT * FR OM 知识库附件"
dt= cmd.Execu teReader()
dt.LoadFilter="主表uuid='" & tb.Table.Current("uuid") & "'"
dt.LoadFilter=""
dt.Load
Dim tb1 As WinForm.Table = Forms("知识库").Controls("Table2")
tb1.Table.DataSource =dt
tb1.Table.SetColVisibleWidth("文件名|1120")

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


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

二级窗口中新增数据后保存,然后重新加载一级窗体中的table1 table2

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)二级窗口中新增数据后保存,然后重新...  发帖心情 Post By:2022/5/24 21:32:00 [只看该作者]

老师有没有更好的加载方法呢?

 

当前是:

Dim cmd As new SQL Command
cmd.Connecti
cmd.Comman dText = "SE LECT * F ROM 知识库主表"
Dim dt As DataTable 
dt= cmd.ExecuteReader()
dt.LoadFilter=""
dt.Load
Dim tb As WinForm.Table = Forms("知识库").Controls("Table1")
tb.Table.DataSource =dt
tb.Table.SetColVisibleWidth("类别|120|级别|60|行业|120|单位|120|文件名|700")


cmd.Comm andText = "SE LECT * FR OM 知识库附件"
dt= cmd.Execu teReader()
dt.LoadFilter="主表uuid='" & tb.Table.Current("uuid") & "'"
dt.LoadFilter=""
dt.Load
Dim tb1 As WinForm.Table = Forms("知识库").Controls("Table2")
tb1.Table.DataSource =dt
tb1.Table.SetColVisibleWidth("文件名|1120")

 

加载出现一楼的问题,会导致table1中的行变化事件不是完美运行


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


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/24 22:02:00 [只看该作者]

cmd.Comm andText = "SE LECT * FR OM 知识库附件 where 主表uuid='" & tb.Table.Current("uuid") & "'"
dt= cmd.Execu teReader()
Dim tb1 As WinForm.Table = Forms("知识库").Controls("Table2")
tb1.Table.DataSource =dt
tb1.Table.SetColVisibleWidth("文件名|1120")

或者直接
Dim tb1 As able = Forms("知识库").Controls("Table2").Table
tb1.fill("SE LECT * FR OM 知识库附件 where 主表uuid='" & tb.Table.Current("uuid") & "'","数据源名称",false)
tb1.Table.SetColVisibleWidth("文件名|1120")


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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)cmd.Comm andText = "SE LECT * FR O...  发帖心情 Post By:2022/5/25 0:14:00 [只看该作者]

Current事件代码修改后问题得以初步解决

老师还有没有其他更简便的操作方法呢?

 

当前Current事件代码如下:

Dim cmd As New S QLCommand
cmd.Connectio nName = "业务"
cmd.CommandT ext = "SEL ECT * FR OM 知识库附件 "
Dim tb1 As WinForm.Table = Forms("知识库").Controls("Table2")
tb1.Table.DataSource = cmd .ExecuteReader()
tb1.Table.SetColVisibleWidth("文件名|1120")

Dim zs1 As Integer = Tables(e.form.name & "_table1").Count
If zs1 > 0 Then
    If Tables(e.form.name & "_table1").Current("uuid") <> "" Then
        vars("主表uuid") = Tables(e.form.name & "_table1").Current("uuid")
        tb1.Table.Filter = "主表uuid='" & Tables(e.form.name & "_table1").Current("uuid") & "'"
        Dim zs2 As Integer = tb1.Table.Count
        If zs2 > 0 Then
            Tables(e.form.name & "_table3").Filter = "附件uuid='" & tb1.Table.current("uuid") & "'"
        Else
            Tables(e.form.name & "_table3").Filter = "uuid='XXXXXXX'"
        End If
    Else
        Tables(e.form.name & "_table2").Filter = "uuid='XXXXXXX'"
    End If
End If

 

[此贴子已经被作者于2022/5/25 1:05:28编辑过]

 回到顶部