老师,下面的代码是:从凭证明细表生成科目明细账,如果在科目明细表找到相同的凭证号和一级科目名称、明细科目、金方金额都有,根据新内容更新相关数据并返回不生成明细,如果没有找到,则将相关的列内容复制到科目明细。但有个问题是:橙色字体段不执行,就是有相同的行了,还是会增加相同凭证号的行,同时如果一个凭证号有几行明细,如果其中有两行的一级科目名称相同,则同一个一级科目名称的借方或贷方都只取第一个明细行的数据。比如会计凭证的明细是:
借:主营业务成本 2500
借:主营业务成本 2000
贷:银行存款 4500
生成科目明细表后,主营业务成本科目明细账的两行都是2500,而不是一行是2500,另一行是2000。
If User.IsRole("财务") OrElse USER.NAME = "开发者" Then
For Each r As Row In CurrentTable.Rows
If r("选择") = True Then
Dim dr1 As DataRow
'否则在科目明细表查找同名的凭证号和一级科目名称行,将找到的行赋值给变量dr1
dr1 = DataTables("科目明细").Find("[凭证号] = '" & r("凭证号") & "'And [一级科目名称] = '" & r("一级科目名称") & "'And [明细科目] = '" & r("明细科目") & "'And [借方金额] = '" & r("借方金额") & "'")
If dr1 IsNot Nothing Then '如果没有找到同名的凭证号和一级科目名称行,也就是dr1为Nothing
Return '那么返回
Else
Dim nma() As String = { "日期","科目编码","凭证号","一级科目名称","明细科目","借方金额","贷方金额" } 'A表数据来源列
Dim nmb() As String = { "日期","科目编码","凭证号","一级科目名称","明细科目","借方金额","贷方金额" } 'B表数据接收列
Dim dr As DataRow = DataTables("科目明细").AddNew
For i As Integer = 0 To nma.Length - 1
dr(nmb(i)) = r(nma(i))
Next
MainTable = Tables("科目明细") '选择表B作为主表.
End If
End If
Next
End If
[此贴子已经被作者于2016/4/26 16:39:09编辑过]