以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  条件查询组合统计 数据填入已存在的“统计表”,而非窗口里的_table1  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=83032)

--  作者:湛江智
--  发布时间:2016/3/30 0:30:00
--  条件查询组合统计 数据填入已存在的“统计表”,而非窗口里的_table1
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:查询数据填入统计表,而非窗口里的_table1.table

DataSource怎么用?找不到窗口里表table1这个属性,
--  作者:Hyphen
--  发布时间:2016/3/30 8:41:00
--  
先生成统计表,再逐行把数据复制过去。

至于 DataSource怎么用,例子中不就是么
Tables("窗口1_Table1").DataSource = dt1

或者
e.Form.Controls("Table1").Table.DataSource = dt1 



--  作者:湛江智
--  发布时间:2016/3/30 9:01:00
--  
 Dim bd1 As New GroupTableBuilder("统计表1",DataTables("项目名称"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("主键编号") \'根据主键编号分组
bd1.Totals.AddDef("次键序号","项目名称_次键序号") \'对次键序号进行统计
bd1.Totals.AddDef("名称","项目名称_名称") \'对名称进行统计
dt1 = bd1.BuildDataSource()

Dim bd2 As New GroupTableBuilder("统计表2",DataTables("空间类型"))
Dim dt2  As fxDataSource
bd2.Groups.AddDef("主键编号") \'根据主键编号分组
bd2.Totals.AddDef("次键序号","空间类型_次键序号") \'对次键序号进行统计
bd2.Totals.AddDef("名称","空间类型_名称") \'对名称进行统计
dt2 = bd2.BuildDataSource()

Dim bd3 As New GroupTableBuilder("统计表3",DataTables("设计单位"))
Dim dt3  As fxDataSource
bd2.Groups.AddDef("主键编号") \'根据主键编号分组
bd2.Totals.AddDef("次键序号","设计单位_次键序号") \'对次键序号进行统计
bd2.Totals.AddDef("名称","设计单位_名称") \'对名称进行统计
dt2 = bd2.BuildDataSource()

Dim bd4 As New GroupTableBuilder("统计表4",DataTables("设计师"))
Dim dt4 As fxDataSource
bd3.Groups.AddDef("主键编号") \'根据主键编号分组
bd3.Totals.AddDef("次键序号","设计师_次键序号") \'对次键序号进行统计
bd3.Totals.AddDef("名称","设计师_名称") \'对名称进行统计
dt3 = bd3.BuildDataSource()

dt1.Combine("主键编号",dt2,"主键编号") \'将设计单位统计数据组合到项目名称统计数据
dt1.Combine("主键编号",dt3,"主键编号") \'将设计师统计数据组合到项目名称统计数据
Tables("窗口1_Table1").DataSource = dt1 \'将统计结果绑定到Table

e.Form.Controls("统计表").Table.DataSource = dt1 \'这一句加在最后面,不行,没明白怎么用


--  作者:Hyphen
--  发布时间:2016/3/30 9:03:00
--  
Tables("窗口1_Table1").DataSource = dt1 \'将统计结果绑定到Table

e.Form.Controls("统计表").Table.DataSource = dt1 \'这一句加在最后面,不行,没明白怎么用

这2个是一个东西,用其中一个就可以

--  作者:湛江智
--  发布时间:2016/3/30 9:25:00
--  

e.Form.Controls("统计表").Table.DataSource = dt1
\'Tables("窗口1_Table1").DataSource = dt1 \'将统计结果绑定到Table

替换了上面的代码,但是
窗口的统计表出来的结果,不能填入“统计表”,还需要增加代码嘛?


图片点击可在新窗口打开查看此主题相关图片如下:窗口的统计表出来的结果,不能填入
图片点击可在新窗口打开查看

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:窗口统计结果不能返回 统计表.table

[此贴子已经被作者于2016/3/30 9:31:33编辑过]

--  作者:大红袍
--  发布时间:2016/3/30 9:31:00
--  

填充数据,参考

 

http://www.foxtable.com/help/topics/0680.htm

 


--  作者:湛江智
--  发布时间:2016/3/30 10:15:00
--  

红袍大师,数据填充过去后,数据重复了,要实现存在 编号则覆盖,没有该编号则新建行赋值呢?

我用导入外部excle的函数,不知道怎么修改成窗口统计的导入,帮忙看看了 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:存在编号覆盖,不存在编号新建行.table


--  作者:大红袍
--  发布时间:2016/3/30 10:23:00
--  
Dim s1 As String = "主键编号,项目名称_次键序号,项目名称_名称,空间类型_次键序号,空间类型_名称,设计单位_次键序号,设计单位_名称,设计师_次键序号,设计师_名称" \'指定数据来源列
Dim Cols1() As String = s1.Split(",")
Dim Cols2() As String = s1.Split(",")
For Each dr1 As DataRow In DataTables("窗口1_Table1").Select("主键编号 is not null")
    Dim dr2 As DataRow = DataTables("统计表").Find("主键编号 = \'" & dr1("主键编号") & "\'")
    If dr2 Is Nothing Then dr2 = DataTables("统计表") .AddNew()
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next

--  作者:大红袍
--  发布时间:2016/3/30 10:29:00
--  


\'----------------------下面这段代码是导入外部excle,存在同编号则跳过.怎么改成:窗口统计表导入,存在同编号,则覆盖,不存在同编号,则新建----------
Dim book,c
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("窗口1_Table1").StopRedraw()
\'上面代码是导入,下面的代码是导入不重复的行
\'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"主键编号","主键编号","项目名称_次键序号","项目名称_名称","空间类型_次键序号","空间类型_名称","设计单位_次键序号","设计单位_名称","设计师_次键序号","设计师_名称"}
\'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim bh As String = sheet(n,0).Text
    Dim r As DataRow = DataTables("窗口1_Table1").Find("主键编号 = \'" & bh & "\'")
    If r Is Nothing Then \'如果不存在同编号
        r = DataTables("窗口1_Table1").AddNew()
    End If
    c = c + 1
    For m As Integer = 0 To nms.Length - 1
        r(nms(m)) = Sheet(n,m).Value
    Next
   
Next
Tables("窗口1_Table1").ResumeRedraw()
\'DataTables("统计表").Save  \'上面的代码是导入不重复的行,自动保存看不出那些事新增导入的
MessageBox.Show("导入完成,共导入" & c & "条记录")

 


--  作者:湛江智
--  发布时间:2016/3/30 10:30:00
--  
 红袍大师,存在编号的值更新了,但又重新建了一行,重复了
图片点击可在新窗口打开查看