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


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

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

帅哥哟,离线,有人找我吗?
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自动加载两列关联的数据行,不关联的行则不加载

 回到顶部
帅哥哟,离线,有人找我吗?
aza520
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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等列

 回到顶部
帅哥哟,离线,有人找我吗?
aza520
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 回到顶部
帅哥哟,离线,有人找我吗?
aza520
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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



 回到顶部