Foxtable(狐表)用户栏目专家坐堂 → 为什么流水账的AfterMoveRow表事件不起效


  共有11962人关注过本帖平板打印复制链接

主题:为什么流水账的AfterMoveRow表事件不起效

帅哥哟,离线,有人找我吗?
yankunhao
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1020 积分:7171 威望:0 精华:0 注册:2008/9/1 22:34:00
为什么流水账的AfterMoveRow表事件不起效  发帖心情 Post By:2010/12/18 16:00:00 [只看该作者]

我做了个流水账,用外部数据源做的,在测试的时候AfterMoveRow表事件的代码不执行

然后想将其发到论坛来求助,谁知在定向到内部表后AfterMoveRow表事件的代码却执行了(难道内部表和外部表有什么不同的地方?)!

真怪,想不出是什么原因。外部数据源是用SQL Server

密码都是123

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:订单生产按排供需流水账1.rar

 


此主题相关图片如下:03.jpg
按此在新窗口浏览图片

"订单生产安排供需流水账"表里的

DataColChanged 事件代码:

 

Select Case e.DataCol.Name
    Case "日期"
        e.DataRow("会计期间")=e.DataRow("日期").Year & Format(e.DataRow("日期").Month,"00")
       
       
    Case "料品编码","会计期间","订单需求量","生产供给量","摘要"
        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("料品名称")
            e.DataRow("料品规格")= dr("料品规格")
            e.DataRow("库存单位")= dr("库存单位")
           
        Else
            '否则清除部门和姓名两列的内容
            e.DataRow("每一打的公斤数") =Nothing
            e.DataRow("最低安全库存量") =Nothing
            e.DataRow("通用范围")= Nothing
            e.DataRow("料品归类")= Nothing
            e.DataRow("料品名称")= Nothing
            e.DataRow("料品规格")= Nothing
            e.DataRow("库存单位")= Nothing
           
        End If
       
        Dim dr1 As DataRow
       
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
                      
        dr1 = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [会计期间] = '" & mr("会计期间") & "'and [料品编码] = '" & mr("料品编码") & "'", "[_SortKey] Desc")
        If dr1 Is Nothing Then '如果没有上一行,说明本行就是同产品的第一行
            If mr("摘要")="期初结存" Then '这里的用意是本流水账是按每个会计期间来结账的,就是每个会计期间都有一个“期初结存”,这样用户从数

 

                                                       据库里加载数据的时候只要加载一个会计期间的数据就能正常计算了。当然如果到了要处理下一个会计期间

 

                                                       时就要做个结账处理:将当期的每个产品的结存结转到下一个会计期间的期初结存里。
            Return
            Else
            mr("结存量") = mr("生产供给量") - mr("订单需求量")
                dr1 = mr
              End If
           
           
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr1("_SortKey") & " And [会计期间] = '" & dr1("会计期间") & "'and [料品编码] = '" & dr1("料品编码") & "'")
        For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
            drs(i)("结存量") = drs(i-1)("结存量") + drs(i)("生产供给量") - drs(i)("订单需求量")
        Next  
'当然这里的代码还未能想到同一个会计期间里的日期比较,如:这个会计期间里如果同一天里同一款产品都有数据的时候。
                
        
    Case "结存量","库存单位","每一打的公斤数"
        Select Case e.DataRow("库存单位")
            Case "公斤","千克"
                e.DataRow("公斤数")= e.DataRow("结存量")
            Case Else
                e.DataRow("公斤数")= e.DataRow("结存量")*e.DataRow("每一打的公斤数")
        End Select
       
End Select

 

 

"订单生产安排供需流水账"表里的

AfterMoveRow 事件代码:

 

 

 

 

Dim Key As Decimal
Dim Index As Integer
Dim Filter As String
Dim r As Row
Index = Math.Min(e.OldIndex, e.NewIndex)
Key = e.Table.Rows(Index)("_SortKey")
r = e.Table.Rows(e.NewIndex)
Filter = "[_SortKey] >= " & Key & " And [会计期间] = '" & r("会计期间") & "'and [料品编码] = '" & r("料品编码") & "'"
e.Table.DataTable.DataCols("料品编码").RaiseDataColChanged(Filter)

[此贴子已经被作者于2010-12-20 8:24:34编辑过]

 回到顶部
总数 20 1 2 下一页