以文本方式查看主题 - 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就可以不用另表了。 这里的"另表"仍然是过渡表,自由统计的零星数据需放在最终统计表中.
|
||||
-- 作者: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版主! |