三个表,《合同档案》含所有合同信息500条数据,《进度应收明细》有所有回款数据,1000条数据。
《
进度应收 》500条数据,在项目事件MainTable中通过Filler填充,将所有合同档案的数据填充到《
进度应收 》中的合同编号,然后在《
进度应收 》中的(DataColChanged)通过代码把合同档案的合同金额、付款方式、客户名称等填过来,并根据“合同编号”,统计《
进度应收明细》的回款数据,为什么会死机呢?
(《进度应收》与《进度应收明细》、《回款明细》关联,并通过表达式计算应收金额、回款金额。
1、填充代码:
If MainTable.Name = "进度应收" Then
Dim f As New Filler
f.SourceTable = DataTables("合同档案")
f.SourceCols = "合同编号"
f.DataTable = DataTables("进度应收")
f.DataCols = "合同编号"
f.ExcludenullValue= True
f.ExcludeExistValue=True
f.Append=False
f.Fill()
End If
2、根据合同编号填充项目名称、客户名称、合同金额等代码
If e.DataCol.Name = "合同编号" Then '发生变化的是合同编号吗?在产品表找出该产品
Dim dr As DataRow
dr = DataTables("合同档案").Find("合同编号 = " & "'" & e.DataRow("合同编号") & "'" )
If dr IsNot Nothing '如果找到, 则设置各列内容
e.DataRow("项目名称")= dr("项目名称")
e.DataRow("客户名称")= dr("客户名称")
e.DataRow("分公司")= dr("分公司")
e.DataRow("年份")= dr("年份")
e.DataRow("签约人")= dr("签约人")
End If
End If
3、根据《进度应收明细》重置相关表,计算应收金额代码:
If DataTables("进度应收明细").HasChanges Then
DataTables("项目总表").DataCols("合同编号").RaiseDataColChanged()
DataTables("进度应收").DataCols("合同编号").RaiseDataColChanged()
e.DataRow("日期")=Date.Today()
e.DataRow("录入")=User.name()
End If
[此贴子已经被作者于2013-5-2 11:56:34编辑过]