以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请各位老师指点一下  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=1333)

--  作者:abcdzabcdz
--  发布时间: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
--  发布时间:2008/12/6 16:03:00
--  
问题1很简单。
问题2就不知道了,何不上传你的文件。
--  作者:czy
--  发布时间:2008/12/6 16:28:00
--  
另外楼主的表述是否有点问题呀,按理说统计数据是最终结果,另表才是过渡表。
用sql的ExecuteReader就可以不用另表了。
--  作者:abcdzabcdz
--  发布时间:2008/12/6 17:04:00
--  
以下是引用czy在2008-12-6 16:28:00的发言:
另外楼主的表述是否有点问题呀,按理说统计数据是最终结果,另表才是过渡表。
用sql的ExecuteReader就可以不用另表了。

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

文件如下:

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


--  作者:don
--  发布时间: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
--  发布时间:2008/12/7 17:01:00
--  
谢谢 don版主!