以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]修改窗口按钮代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=79185)

--  作者:liuyixin662
--  发布时间:2015/12/25 17:09:00
--  [求助]修改窗口按钮代码
老师你好,麻烦修改一下代码
图片点击可在新窗口打开查看此主题相关图片如下:窗口按钮代码出错.png
图片点击可在新窗口打开查看
Dim s As String = e.Form.Controls("财务月份").Value
If s <> "" Then
    Tables("应付款按供应商汇总").StopRedraw() \'停止重绘
    DataTables("应付款按供应商汇总").DataRows.Clear
    Dim dt_in As List(Of DataRow) = DataTables("应付款采购明细表").Select("供应商编号 is not null", "供应商编号,供应商名称,月份") \'排序取出 应付采购 全部数据
    Dim drs_out As List(Of DataRow) = DataTables("应付款采购收票明细表").Select("供应商编号 is not null", "供应商编号,供应商名称,月份") \'排序取出 收票 全部数据
    Dim drs_init As List(Of DataRow) = DataTables("应付款初始欠票").Select("月份 <= " & s)
    Dim drs_init1 As List(Of DataRow) = DataTables("应付款初始账面应付款").Select("月份 <= " & s)
    Dim dts_in1 As List(Of DataRow) = DataTables("应付款付款明细表").Select("供应商编号 is not null", "供应商编号,供应商名称,月份")\'排序取出 付款 全部数据
    Dim r As Row
    Dim sum_curr_money, sum_prev_money As Double
    Dim sum_curr_count, sum_prev_count As Single
    r = Tables("应付款按供应商汇总").AddNew
    r("供应商编号") = dt_in(0)("供应商编号")
    r("供应商名称") = dt_in(0)("供应商名称")
    If dt_in(0)("月份") < s Then \'之前月
        sum_prev_count = sum_prev_count + dt_in(0)("数量")
        sum_prev_money = sum_prev_money + dt_in(0)("含税金额")
    Else If dt_in(0)("月份") = s Then \'本月份
        sum_curr_money = sum_curr_money + dt_in(0)("含税金额")
        sum_curr_count = sum_curr_count + dt_in(0)("数量")
    End If
    For i As Single = 1 To dt_in.Count - 1 \'写入供应商,同时统计数量和金额
        If dt_in(i)("供应商编号") <> dt_in(i-1)("供应商编号") OrElse dt_in(i)("供应商名称") <> dt_in(i-1)("供应商名称")  Then \'不同供应商
            r("本期购货_数量") = sum_curr_count
            r("本期购货_金额") = sum_curr_money
            r("期初应付_尚未开票_数量") = sum_prev_count \'暂存
            r("期初应付_尚未开票_金额") = sum_prev_money \'暂存
            r = Tables("应付款按供应商汇总").AddNew \'插入新数据
            r("供应商编号") = dt_in(i)("供应商编号")
            r("供应商名称") = dt_in(i)("供应商名称")
            sum_curr_money = 0
            sum_curr_count = 0
            sum_prev_count = 0
            sum_prev_money = 0
        End If
       
        If dt_in(i)("月份") < s Then \'之前月
            sum_prev_count = sum_prev_count + dt_in(i)("数量")
            sum_prev_money = sum_prev_money + dt_in(i)("含税金额")
        Else If dt_in(i)("月份") = s Then \'本月份
            sum_curr_money = sum_curr_money + dt_in(i)("含税金额")
            sum_curr_count = sum_curr_count + dt_in(i)("数量")
        End If
    Next
   
    For Each dr As DataRow In drs_init
        If DataTables("应付款按供应商汇总").find("供应商编号 = \'" & dr("供应商编号") & "\' And 供应商名称 = \'" & dr("供应商名称") & "\'") Is Nothing Then
            Dim nr = Tables("应付款按供应商汇总").AddNew
            nr("供应商编号") = dr("供应商编号")
            nr("供应商名称") = dr("供应商名称")
        End If
    Next
    For Each dr As DataRow In drs_init1
        If DataTables("应付款按供应商汇总").find("供应商编号 = \'" & dr("供应商编号") & "\' And 供应商名称 = \'" & dr("供应商名称") & "\'") Is Nothing Then
            Dim nr = Tables("应付款按供应商汇总").AddNew
            nr("供应商编号") = dr("供应商编号")
            nr("供应商名称") = dr("供应商名称")
        End If
    Next
   
    For Each dr As DataRow In drs_out
        If DataTables("应付款按供应商汇总").find("供应商编号 = \'" & dr("供应商编号") & "\' And 供应商名称 = \'" & dr("供应商名称") & "\'") Is Nothing Then
            Dim nr = Tables("应付款按供应商汇总").AddNew
            nr("供应商编号") = dr("供应商编号")
            nr("供应商名称") = dr("供应商名称")
        End If
    Next
    r("本期购货_数量") = sum_curr_count
    r("本期购货_金额") = sum_curr_money
    r("期初应付_尚未开票_数量")  = sum_prev_count \'暂存
    r("期初应付_尚未开票_金额")  = sum_prev_money \'暂存
   
    \'\'MessageBox.Show("供应商耗时: " & (Date.Now - st).TotalSeconds & "秒")
    \'\'st = Date.Now \'用于计算时间
    For Each dr As DataRow In DataTables("应付款按供应商汇总").DataRows \'填充统计数据      
        sum_curr_count = 0 \'累计本月开票数量
        sum_prev_count = 0 \'累计之前开票数量
        sum_curr_money = 0 \'累计本月开票金额
        sum_prev_money = 0 \'累计之前开票金额      
        Dim filter As String = "供应商编号 = \'" & dr("供应商编号") & "\' And 供应商名称 = \'" & dr("供应商名称") & "\'"
        drs_out = DataTables("应付款采购收票明细表").Select(filter, "月份") \'排序取出 开票 全部数据
        For Each dr_out As DataRow In drs_out
            If dr_out("月份") < s Then
                sum_prev_count = sum_prev_count + dr_out("开票_数量")
                sum_prev_money = sum_prev_money + dr_out("开票_含税金额")
            Else If dr_out("月份") = s Then
                sum_curr_count = sum_curr_count + dr_out("开票_数量")
                sum_curr_money = sum_curr_money + dr_out("开票_含税金额")
            Else
                Exit For
            End If
        Next
  Next     
       
        For Each dr As DataRow In drs_in1
            If DataTables("应付款按供应商汇总").find("供应商编号 = \'" & dr("供应商编号") & "\' And 供应商名称 = \'" & dr("供应商名称") & "\'") Is Nothing Then
                Dim nr = Tables("应付款按供应商汇总").AddNew
                nr("供应商编号") = dr("供应商编号")
                nr("供应商名称") = dr("供应商名称")
            End If
        Next
        r("本期支付_金额") = sum_curr_money
        r("期初应付_账面")  = sum_prev_money \'暂存
       
        For Each dr As DataRow In DataTables("应付款按供应商汇总").DataRows \'填充统计数据
            sum_curr_money = 0 \'累计本月付款金额
            sum_prev_money = 0 \'累计之前付款金额
            Dim filter As String = "供应商编号 = \'" & dr("供应商编号") & "\' And 供应商名称 = \'" & dr("供应商名称") & "\'"
            drs_in1 = DataTables("应付款付款明细表").Select(filter, "月份") \'排序取出 付款 全部数据
            For Each dr_in1 As DataRow In drs_in1
                If dr_in1("月份") < s Then
                    sum_prev_money = sum_prev_money + dr_in1("付款金额")
                Else If dr_init2("月份") = s Then
                    sum_curr_money = sum_curr_money + dr_in1("付款金额")
                Else
                    Exit For
                End If
            Next
           
            Dim qcsl As Single = DataTables("应付款初始欠票").compute("sum(入库_数量)", "供应商编号 = \'" & dr("供应商编号") & "\' And 供应商名称 = \'" & dr("供应商名称") & "\' and 月份 <= " & s)
            Dim qcsl1 As Single = DataTables("应付款初始欠票").compute("sum(入库_含税金额)", "供应商编号 = \'" & dr("供应商编号") & "\' And 供应商名称 = \'" & dr("供应商名称") & "\' and 月份 <= " & s)
            Dim qcsl2 As Single = DataTables("应付款初始账面应付款").compute("sum(账面应付金额)", "供应商编号 = \'" & dr("供应商编号") & "\' And 供应商名称 = \'" & dr("供应商名称") & "\' and 月份 <= " & s)
           
            Dim sum_in_prev_count As Single = dr("期初应付_尚未开票_数量")  \'从表中取出暂存数据
            Dim sum_in_prev_money As Double = dr("期初应付_尚未开票_金额")  \'从表中取出暂存数据
            Dim sum_in_prev_money As Double = dr("期初应付_账面")
           
            dr("本期收票_数量") = sum_curr_count
            dr("本期收票_金额") = sum_curr_money
            dr("本期支付_金额") = sum_curr_money
           
            dr("期初应付_账面") = sum_in_prev_money - sum_prev_money + qcsl2
            dr("期初应付_尚未开票_数量")  = sum_in_prev_count - sum_prev_count + qcsl
            dr("期初应付_尚未开票_金额")  = sum_in_prev_money - sum_prev_money + qcsl1
           
            dr("期末应付_账面") = dr("期初应付_账面") + dr("本期收票_金额") - dr("本期支付_金额")
            dr("期末应付_尚未开票_数量") = dr("期初应付_尚未开票_数量") + dr("本期购货_数量") - dr("本期收票_数量")
            dr("期末应付_尚未开票_金额") = dr("期初应付_尚未开票_金额") + dr("本期购货_金额") - dr("本期收票_金额")
        Next
        Tables("应付款按供应商汇总").ResumeRedraw()
    End If
--  作者:大红袍
--  发布时间:2015/12/25 17:11:00
--  

Dim dts_in1 As List(Of DataRow) = DataTables("应付款付款明细表").Select("供应商编号 is not null", "供应商编号,供应商名称,月份")\'排序取出 付款 全部数据

 

改成

 

Dim drs_in1 As List(Of DataRow) = DataTables("应付款付款明细表").Select("供应商编号 is not null", "供应商编号,供应商名称,月份")\'排序取出 付款 全部数据