Foxtable(狐表)用户栏目专家坐堂 → 数据填充出问题


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

主题:数据填充出问题

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
数据填充出问题  发帖心情 Post By:2017/12/15 10:50:00 [只看该作者]

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


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

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By: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)


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

老师,重复填充的问题解决了,但还是出现有县区列填充到第几期结算列的情况 

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

我相填充的时候不填充”第几期结算“为0的数据,或者怎么样在生成”征地统计表“的时候不生成”第几期结算“为0的行

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


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

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

 

 

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


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


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

可以了,谢谢老师指点

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


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

我想在填充时先清空”S计量统计表“的所有数据,然后再进行填充,增回这个代码显示错误:
If e.DataTableName = "S计量统计表" Then
    e.Filter = "[_Identify] Is Null"
End If

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


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

删除数据,参考

 

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


 回到顶部