谢谢各位。
项目C在合同表中是没有对应记录的,但必须列出,所以,只能增加临时表且编写所有代码了。现在已经解决了。
现附上实际表的代码作为共享:
'创建临时表
Dim dtb As New DataTableBuilder("账面信息")
dtb.AddDef("实体名称",Gettype(String),6)
dtb.AddDef("项目名称",Gettype(String),40)
dtb.AddDef("编号",Gettype(Integer))
dtb.AddDef("合同额",Gettype(Integer))
dtb.AddDef("合同名称",Gettype(String),75)
dtb.AddDef("合同编号",Gettype(String),11)
dtb.AddDef("初始合同额",Gettype(Integer))
dtb.AddDef("结算金额",Gettype(Integer))
dtb.AddDef("上报产值",Gettype(Integer))
dtb.AddDef("签认产值",Gettype(Integer))
dtb.AddDef("签认日期",Gettype(Date))
dtb.AddDef("到款合计",Gettype(Integer))
dtb.AddDef("签认欠款",Gettype(Integer))
dtb.AddDef("审批成本",Gettype(Integer))
dtb.AddDef("累计成本",Gettype(Integer))
dtb.AddDef("累计支出",Gettype(Integer))
dtb.AddDef("借款余额",Gettype(Integer))
dtb.Build()
'准备工作
MainTable= Tables("账面信息")
Tables("项目全面管理").filter="[项目名称] not Like '*管理经费*' And [项目名称] not Like '*未列项目*'" '排除管理经费和未列项目
Tables("项目全面管理").sort="实体名称,编号"
Tables("合同台账管理").sort="实体名称,项目名称"
Dim i,k,r As Integer
Dim dr1 As Row
Dim dr,dr2,dr3 As DataRow
k=Tables("项目全面管理").rows.count
'添加记录
For i=0 To k-1 '以项目全面管理表为准逐行搜索每个项目在合同台账管理表中的合同记录
'添加项目全面管理表的记录
dr1= Tables("项目全面管理").rows(i)
dr3=DataTables("账面信息").addnew()
dr3("实体名称")=dr1("实体名称")
dr3("项目名称")=dr1("项目名称")
dr3("编号")=dr1("编号")
dr3("合同额")=dr1("合同额_合计")
dr3("上报产值")=dr1("营业额_总计")
dr3("签认产值")=dr1("参考数据_签认营业额")
dr3("签认日期")=dr1("参考数据_签认日期")
dr3("到款合计")=dr1("到款合计")
dr3("签认欠款")=dr1("参考数据_签认欠款")
dr3("审批成本")=dr1("审批成本")
dr3("累计成本")=dr1("参考数据_累计成本")
dr3("累计支出")=dr1("参考数据_累计支出")
dr3("借款余额")=dr1("参考数据_借款余额")
'添加合同台账管理表的记录
dr =DataTables("合同台账管理").Find("实体名称 = '" & dr1("实体名称") & "' And 项目名称='" & dr1("项目名称") & "'")
r = Tables("合同台账管理").FindRow(dr)
If r>=0 Then
r=0
For Each dr2 In DataTables("合同台账管理").Select("[实体名称] = '" & dr1("实体名称") & "' And [项目名称]='" & dr1("项目名称") & "'")
If r>0 Then
dr3=DataTables("账面信息").AddNew()
End If
dr3("实体名称")=dr1("实体名称")
dr3("项目名称")=dr1("项目名称")
dr3("合同名称")=dr2("合同名称")
dr3("合同编号")=dr2("合同编号")
dr3("初始合同额")=dr2("初始合同额")
dr3("结算金额")=dr2("结算金额")
r=1
Next
End If
Next
'生成汇总统计表
Dim t As Table = Tables("账面信息")
Dim g As SubtotalGroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = True
g = New SubtotalGroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "实体名称"
g.TotalOn = "合同额,初始合同额,结算金额,上报产值,签认产值,到款合计,签认欠款,审批成本,累计成本,累计支出,借款余额"
g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)
t.Subtotal()
'自动列宽,较长的项目名称和合同名称用固定列宽
略
[此贴子已经被作者于2012-8-18 13:47:44编辑过]