以文本方式查看主题

-  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=111107)

--  作者:aza520
--  发布时间:2017/12/15 10:50:00
--  数据填充出问题
我在窗口的一个按钮写了如下代码,想实现这样的功能:从“S征地明细"表(分页加载)提取数据生成一个能统计后台数据的”征地统计表“,然后将”征地统计表“中的对应列填充到”S计量统计表“中,希望每次点击按钮都能将”征地统计表“中与”S计量统计表“不重复的数据列填入,重复的则不填入。
但我写的代码,每每次点击都会出现重复填充,而且有填充列不对应的情况。求老师指教


图片点击可在新窗口打开查看此主题相关图片如下:p$pqwi36zds)@51jp)_vf7.png
图片点击可在新窗口打开查看
 

--  作者:aza520
--  发布时间:2017/12/15 10:52:00
--  
代码如下:
Dim b As New GroupTableBuilder("征地统计表",DataTables("S征地明细"))
b.Groups.AddDef("项目名称") \'根据产品分组
b.Groups.AddDef("县区") \'根据产品分组
b.Groups.AddDef("第几期结算") \'根据产品分组
b.Totals.AddDef("征地数量") \'对数量进行统计
b.FromServer = True
b.Build \'生成统计表
MainTable = Tables("征地统计表") \'打开生成的统计表


Dim Cols1() As String = {"项目名称","县区","第几期结算","征地数量"}\'指定数据来源列
Dim Cols2() As String =  {"项目名称","县区","第几期结算","本期结算征地数量"}\'指定数据接收表
For Each dr1 As DataRow In DataTables("征地统计表").Select("[第几期结算] > 0")
    Dim dr2 As DataRow = DataTables("S征地计量统计表").AddNew()
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next

Dim Vals As List(of String())
Vals = DataTables("征地统计表").GetValues("项目名称|县区|第几期结算|征地数量")
For i As Integer = 0 To Vals.Count - 1
    Dim dr As DataRow = DataTables("S征地计量统计表").AddNew()
    dr("第几期结算") = Vals(i)(0)


--  作者:有点甜
--  发布时间:2017/12/15 11:05:00
--  

填充之前,先查找

 

 

Dim Cols1() As String = {"项目名称","县区","第几期结算","征地数量"}\'指定数据来源列
Dim Cols2() As String =  {"项目名称","县区","第几期结算","本期结算征地数量"}\'指定数据接收表
For Each dr1 As DataRow In DataTables("征地统计表").Select("[第几期结算] > 0")
    Dim dr2 As DataRow = DataTables("S征地计量统计表").Find("项目名称 = \'" & dr1("项目名称") & "\' and 县区 = \'" & dr1("县区") & "\' and 第几期结算 = \'" & dr1("第几期结算") & "\' and 本期结算征地数量 = \'" & dr1("征地数量") & "\'")
    If dr2 Is Nothing Then
        dr2 = DataTables("S征地计量统计表").AddNew()
    End If

    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next


--  作者:aza520
--  发布时间:2017/12/15 11:15:00
--  
老师,重复填充的问题解决了,但还是出现有县区列填充到第几期结算列的情况 
--  作者:有点甜
--  发布时间:2017/12/15 11:25:00
--  
以下是引用aza520在2017/12/15 11:15:00的发言:
老师,重复填充的问题解决了,但还是出现有县区列填充到第几期结算列的情况 

 

下面这段代码?如果不需要,你不可以删掉?

 

Dim Vals As List(of String())
Vals = DataTables("征地统计表").GetValues("项目名称|县区|第几期结算|征地数量")
For i As Integer = 0 To Vals.Count - 1
    Dim dr As DataRow = DataTables("S征地计量统计表").AddNew()
    dr("第几期结算") = Vals(i)(0)

--  作者:aza520
--  发布时间:2017/12/15 11:31:00
--  
我相填充的时候不填充”第几期结算“为0的数据,或者怎么样在生成”征地统计表“的时候不生成”第几期结算“为0的行
--  作者:有点甜
--  发布时间:2017/12/15 11:33:00
--  

For Each dr1 As DataRow In DataTables("征地统计表").Select("[第几期结算] > 0")

 

 

Vals = DataTables("征地统计表").GetValues("项目名称|县区|第几期结算|征地数量", "[第几期结算] > 0")


--  作者:aza520
--  发布时间:2017/12/15 11:34:00
--  
可以了,谢谢老师指点
--  作者:aza520
--  发布时间:2017/12/15 11:46:00
--  
我想在填充时先清空”S计量统计表“的所有数据,然后再进行填充,增回这个代码显示错误:
If e.DataTableName = "S计量统计表" Then
    e.Filter = "[_Identify] Is Null"
End If

--  作者:有点甜
--  发布时间:2017/12/15 12:03:00
--  

删除数据,参考

 

DataTables("S征地计量统计表").DataRows.Clear