Foxtable(狐表)用户栏目专家坐堂 → 请各位老师指点一下


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

主题:请各位老师指点一下

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


加好友 发短信
等级:小狐 帖子:324 积分:3801 威望:0 精华:0 注册:2008/9/1 7:34:00
请各位老师指点一下  发帖心情 Post By:2008/12/6 14:58:00 [只看该作者]

 

请各位老师指点一下:

问题一:下列解法能否更进一步优化?

1、6次填充数据过程能否用循环语句或其它更优语句代替?

2、能否精简过程,直接在”另表”中得到结果,不经过”统计数据”这样的过渡表,行吗?

问题二:是否还有其它解法?

 

 

 

‘将”表2”中的数据填充到”另表”中

DataTables("另表").DataRows.Clear()

Syscmd.Project.Compact(False)

 

‘填充表2第一组数据到另表

dim f1 As New Filler

f1.SourceTable = DataTables("表2")

f1.SourceCols = "名称1,数量1"

f1.Distinct = True

f1.DataTable = DataTables("另表")

f1.DataCols = "名称,数量"

f1.Fill()

 

‘填充表2第二组数据到另表

dim f2 As New Filler

f2.SourceTable = DataTables("表2")

f2.SourceCols = "名称2,数量2"

f2.Distinct= False 

f2.DataTable = DataTables("另表")

f2.DataCols = "名称,数量"

f2.Fill()

 

‘填充表2第三组数据到另表

dim f3 As New Filler

f3.SourceTable = DataTables("表2")

f3.SourceCols = "名称3,数量3"

f3.Distinct= False 

f3.DataTable = DataTables("另表")

f3.DataCols = "名称,数量"

f3.Fill()

 

‘填充表2第四组数据到另表

dim f4 As New Filler

f4.SourceTable = DataTables("表2")

f4.SourceCols = "名称4,数量4"

f4.Distinct= False 

f4.DataTable = DataTables("另表")

f4.DataCols = "名称,数量"

f4.Fill()

 

‘填充表2第五组数据到另表

dim f5 As New Filler

f5.SourceTable = DataTables("表2")

f5.SourceCols = "名称5,数量5"

f5.Distinct= False 

f5.DataTable = DataTables("另表")

f5.DataCols = "名称,数量"

f5.Fill()

 

‘填充表2第六组数据到另表

dim f6 As New Filler

f6.SourceTable = DataTables("表2")

f6.SourceCols = "名称6,数量6"

f6.Distinct= False 

f6.DataTable = DataTables("另表")

f6.DataCols = "名称,数量"

f6.Fill()

 

‘对”另表”中数据进行分组统计

Dim b As New GroupTableBuilder("统计数据",DataTables("另表"))

b.Groups.AddDef("名称")

b.Totals.AddDef("数量")

b.VerticalTotal = True

b.Build

Maintable = Tables("统计数据")

 


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2008/12/6 16:03:00 [只看该作者]

问题1很简单。
问题2就不知道了,何不上传你的文件。

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2008/12/6 16:28:00 [只看该作者]

另外楼主的表述是否有点问题呀,按理说统计数据是最终结果,另表才是过渡表。
用sql的ExecuteReader就可以不用另表了。

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


加好友 发短信
等级:小狐 帖子:324 积分:3801 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2008/12/6 17:04:00 [只看该作者]

以下是引用czy在2008-12-6 16:28:00的发言:
另外楼主的表述是否有点问题呀,按理说统计数据是最终结果,另表才是过渡表。
用sql的ExecuteReader就可以不用另表了。

这里的"另表"仍然是过渡表,自由统计的零星数据需放在最终统计表中.

文件如下:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:abcdz.table


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2008/12/6 19:19:00 [只看该作者]

'''
Dim Da As DataTable = DataTables("表2")
DataTables("另表").DataRows.Clear()
Dim TS,T As String
dim i,i1,sum,rs as Integer
For  i  = 1 to 6
    For Each dr As DataRow in Da.Select("姓名" & i & ">''")
         If Ts Is Nothing OrElse Ts.Indexof(dr("姓名" & i )) = -1 Then 
             Ts = Ts  & "," & dr("姓名" & i )
        End If
     Next
Next
rs = Ts.substring(1).split(",").Length
Tables("另表").Addnew(rs)
For i  = 0 to rs-1
    T = Ts.substring(1).split(",")(i)
    Tables("另表").rows(i)("姓名")=T
    sum=0
    for i1 =1 to 6
        sum =sum+Da.Compute("Sum(数量" & i1 & ")","姓名" & i1 & "='" & T & "'")
    Next  
    Tables("另表").rows(i)("数量") = SUm
Next

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


加好友 发短信
等级:小狐 帖子:324 积分:3801 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2008/12/7 17:01:00 [只看该作者]

谢谢 don版主!

 回到顶部