很奇怪:在订货单表中选取数据行,按客户每天的金额汇总到采购应付款中进行处理。代码在设计的窗口按钮中无任何反应,但在命令窗口中运行没有任何问题。 (类似的代码,用同样的方法处理订单和客户应收款时,没有问题 。)
代码如下:
If Tables("进货单").rows().count=0 Then
MessageBox.Show("暂时没有符合条件的进货数据!")
Else
Dim dtb As New DataTableBuilder("采购应付款0") ' 添加临时表
dtb.AddDef("是否打印", Gettype(Boolean))
dtb.AddDef("是否结清", Gettype(Boolean))
dtb.AddDef("供应商名称", Gettype(String), 40)
dtb.AddDef("已付款总额", Gettype(Single))
dtb.AddDef("应付款", Gettype(Single))
dtb.AddDef("总金额", Gettype(Double))
dtb.AddDef("联系人", Gettype(String), 16)
dtb.AddDef("联系电话", Gettype(String), 40)
dtb.AddDef("综合名称", Gettype(String), 60)
dtb.AddDef("到货日期", Gettype(Date))
dtb.Build()
DataTables("采购应付款0").DataRows.clear()
Dim zje As Single
For Each dr As Row In Tables("进货单").GetCheckedRows ' For Each dr As Row In Tables("进货单").rows 按钮的代码改为此代码后,对所有表中数据进行处理没问题。
dr("已编入应付款")=True
Dim dr2 As DataRow = DataTables("采购应付款0").AddNew()
For Each dc As DataCol In DataTables("进货单").DataCols
If DataTables("采购应付款0").DataCols.Contains(dc.Name) Then
dr2(dc.Name) = dr(dc.name)
End If
Next
Dim t As TimeSpan
Dim d0 As Date = #12/31/2015#
Dim d1 As Date = dr2("到货日期")
t = d1 - d0
dr2("综合名称")= t.TotalDays & "/" & dr2("供应商名称")
Next
Dim zhms As List(Of String)
zhms = DataTables("采购应付款0").GetValues("综合名称")
For Each zhm As String In zhms
zje=DataTables("采购应付款0").Compute("Sum(总金额)","综合名称 = '" & zhm & "'")
Dim ddr As DataRow
ddr =DataTables("采购应付款0").Find("综合名称 = '" & zhm & "'")
If ddr IsNot Nothing Then '如果找到的话
ddr("总金额")=zje
Dim drdr As DataRow
drdr =DataTables("采购应付款").Find("综合名称 = '" & zhm & "'")
If drdr IsNot Nothing Then '如果找到的话,重写总金额,因为可能金额有变化。
drdr("总金额")=ddr("总金额")
Else
drdr= DataTables("采购应付款").AddNew()
For Each dc As DataCol In DataTables("采购应付款0").DataCols
If DataTables("采购应付款").DataCols.Contains(dc.Name) Then
drdr(dc.Name) = ddr(dc.name)
End If
Next
End If
End If
Next
For Each addr2 As Row In Tables("采购应付款").rows
addr2("应付款")=addr2("总金额")-addr2("已付款总额")
If addr2("应付款")<=0 Then
addr2("是否结清")= True
addr2("是否打印")= False
addr2.Locked = True
Else
addr2("是否结清")= False
addr2("是否打印")= True
End If
Next
Tables("采购应付款").Cols("总金额").GrandTotal = True
Tables("采购应付款").Cols("已付款总额").GrandTotal = True
Tables("采购应付款").Cols("应付款").GrandTotal = True
Tables("采购应付款").GrandTotal = True
End If
Tables("采购应付款").Sort = "供应商名称,到货日期 desc"
Tables("采购应付款").Select(0,0)