以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  选定行后通过关联列自动加载  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=127591)

--  作者:aza520
--  发布时间:2018/11/17 15:46:00
--  选定行后通过关联列自动加载
有表A和表B,通过“第一列”和“第二列"进行关联,表A是父表,请问老师怎么实现当选择表A某一行是,表B自动加载两列关联的数据行,不关联的行则不加载
--  作者:有点蓝
--  发布时间: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
--  发布时间: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等列

--  作者:有点甜
--  发布时间:2018/11/19 9:46:00
--  

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

 

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

 


--  作者:aza520
--  发布时间: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

--  作者:有点甜
--  发布时间:2018/11/19 10:01:00
--  

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

 

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

 

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


--  作者:aza520
--  发布时间: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



--  作者:有点甜
--  发布时间:2018/11/19 17:34:00
--  

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=127595&page=1&star=2