Foxtable(狐表)用户栏目专家坐堂 → 选定行后通过关联列自动加载


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

主题:选定行后通过关联列自动加载

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
选定行后通过关联列自动加载  发帖心情 Post By:2018/11/17 15:46:00 [只看该作者]

有表A和表B,通过“第一列”和“第二列"进行关联,表A是父表,请问老师怎么实现当选择表A某一行是,表B自动加载两列关联的数据行,不关联的行则不加载

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


加好友 发短信
等级:超级版主 帖子:106132 积分:539771 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/11/17 15:55:00 [只看该作者]

表A,CurrentChanged事件

Dim r As Row  = Tables("表A").Current
If r Is Nothing Then '如果Current为Nothing
    Return '则返回
End If

DataTables("表B").LoadFilter = "第一列='" & r("第一列") & "' And 第二列='" & r("第二列") & "'"
DataTables("表B").Load

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/11/19 9:44:00 [只看该作者]

老师,我是通过选定窗口子表行来加载零号清单相应行,但是与我重置列的代码有冲突,每次重置列的时候会出现错误,是什么问题
Dim r As Row  = Tables("计量统计.计量汇总").Current
If r Is Nothing Then '如果Current为Nothing
    Return '则返回
End If

DataTables("零号清单").LoadFilter = "项目名称 ='" & r("项目名称") & "' And 施工合同段 ='" & r("施工合同段") & "'"
DataTables("零号清单").Load

重置列代码:
DataTables("计量统计").DataCols("第100章2").RaiseDataColChanged() '重置第100章2等列

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


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

重置列出错,说明你datacolchanged事件有问题。请加入msgbox调试代码

 

http://www.foxtable.com/webhelp/scr/1485.htm

 


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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/11/19 9:59:00 [只看该作者]

我是写在CurrentChanged事件下,如果改成以下则没问题,但是达不到我要的结果

Dim r As Row  = Tables("计量汇总").Current
If r Is Nothing Then '如果Current为Nothing
    Return '则返回
End If

DataTables("零号清单").LoadFilter = "项目名称 ='" & r("项目名称") & "' And 施工合同段 ='" & r("施工合同段") & "'"
DataTables("零号清单").Load

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


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

1、报什么错?贴出来说明;

 

2、如果是重置列的问题,就是你datcolchanged有问题导致的。

 

3、不会做实例发上来测试。


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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/11/19 17:22:00 [只看该作者]

“计量统计”表和“计量汇总”表是关联表,计量统计是父表,并在窗口设了一个计算按钮,统计生成计量汇总表

分别在计量统计表的DataColChanged事件和计量汇总表的CurrentChanged事件设如下代码,计算按钮可以正常使用。

DataColChanged事件代码:
Dim fdr = DataTables("计量汇总").find("项目名称 = '" & e.DataRow("项目名称") & "' And 施工合同段 = '" & e.DataRow("施工合同段") & "'", "计量期次 desc")
If fdr Is Nothing Then    
    e.DataRow("第100章2") = 0    
Else    
    e.DataRow("第100章2") = DataTables("计量汇总").compute("sum(第100章)", "项目名称 = '" & e.DataRow("项目名称") & "' And 施工合同段 = '" & e.DataRow("施工合同段") & "'") - fdr("第100章")    
End If

CurrentChanged事件代码:
Dim r As Row  = Tables("计量汇总").Current
If r Is Nothing Then '如果Current为Nothing
    Return '则返回
End If

DataTables("零号清单").LoadFilter = "项目名称 ='" & r("项目名称") & "' And 施工合同段 ='" & r("施工合同段") & "'"
DataTables("零号清单").Load

计算按钮代码:
Dim b As New SQLGroupTableBuilder("统计表1","中间计量表")
b.C
b.Groups.AddDef("项目名称") '根据产品分组
b.Groups.AddDef("施工合同段") '根据产品分组
b.Groups.AddDef("计量期次") '根据产品分组
b.Groups.AddDef("章节") '根据产品分组
b.Totals.AddExp("第100章","case when 章节 = '100' then Round(申报数量 * 单价,0) else 0 end")
b.Totals.AddExp("第200章","case when 章节 = '200' then Round(申报数量 * 单价,0) else 0 end")
b.Totals.AddExp("第300章","case when 章节 = '300' then Round(申报数量 * 单价,0) else 0 end")
b.Totals.AddExp("第400章","case when 章节 = '400' then Round(申报数量 * 单价,0) else 0 end")
b.Totals.AddExp("第500章","case when 章节 = '500' then Round(申报数量 * 单价,0) else 0 end")
b.Totals.AddExp("第600章","case when 章节 = '600' then Round(申报数量 * 单价,0) else 0 end")
b.Totals.AddExp("第700章","case when 章节 = '700' then Round(申报数量 * 单价,0) else 0 end")
b.Totals.AddExp("第800章","case when 章节 = '800' then Round(申报数量 * 单价,0) else 0 end")
b.Totals.AddExp("第900章","case when 章节 = '900' then Round(申报数量 * 单价,0) else 0 end")
b.Build '生成统计表
'MainTable = Tables("统计表1") '打开生成的统计表

DataTables("计量汇总").DataRows.Clear

Dim Cols1() As String = {"项目名称","施工合同段","计量期次","第100章","第200章","第300章","第400章","第500章","第600章","第700章","第800章","第900章"}'指定数据来源列
Dim Cols2() As String = {"项目名称","施工合同段","计量期次","第100章","第200章","第300章","第400章","第500章","第600章","第700章","第800章","第900章"}'指定数据接收表

For Each dr1 As DataRow In DataTables("统计表1").Select("[计量期次] > 0")
    Dim dr2 As DataRow = DataTables("计量汇总").Find("项目名称 = '" & dr1("项目名称") & "' and 施工合同段 = '" & dr1("施工合同段") & "' and 计量期次 = '" & dr1("计量期次")  & "'")
    If dr2 Is Nothing Then
        dr2 = DataTables("计量汇总").AddNew()
    End If
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next




当把CurrentChanged事件代码改成如下,点击计算按钮时则出现如图错误:
CurrentChanged事件代码:
Dim r As Row  = Tables("计量统计.计量汇总").Current
If r Is Nothing Then '如果Current为Nothing
    Return '则返回
End If

DataTables("零号清单").LoadFilter = "项目名称 ='" & r("项目名称") & "' And 施工合同段 ='" & r("施工合同段") & "'"
DataTables("零号清单").Load

错误提示:
.NET Framework 版本:2.0.50727.8937
Foxtable 版本:2017.12.18.1
错误所在事件:计量汇总,CurrentChanged
详细错误信息:
值不能为空。
参数名: key



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


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


 回到顶部