以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于表事件datacolchangde的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=60693)

--  作者:lijin951
--  发布时间:2014/11/29 11:41:00
--  [求助]关于表事件datacolchangde的问题
大概结构,入库明细表通过datacolchangde事件传递值给库存表,来生成库存
入库明细表事件代码
Select Case e.DataCol.Name
    Case "物料编号","供应商","物料名称","型号规格","购进数量"
        Dim filter As String = "物料编号 = \'" & e.DataRow("物料编号") & "\' and 供应商 = \'" & e.DataRow("供应商") & "\' and 物料名称 = \'" & e.DataRow("物料名称") & "\' and 型号规格 = \'" & e.DataRow("型号规格") & "\'"
        
        If not (e.DataRow.IsNull("供应商") OrElse e.DataRow.IsNull("物料名称") OrElse e.DataRow.IsNull("型号规格") OrElse e.DataRow.IsNull("物料编号")) Then
            Dim fdr As DataRow = DataTables("库存表").Find(filter)
            If (fdr Is Nothing) Then   
                fdr = DataTables("库存表").AddNew
                fdr("物料编号") = e.DataRow("物料编号")
                fdr("物料名称") = e.DataRow("物料名称")
                fdr("型号规格") = e.DataRow("型号规格")
                fdr("供应商") = e.DataRow("供应商")
            End If
        End If
        If e.DataCol.Name = "购进数量" Then
            DataTables("库存表").DataCols("供应商").RaiseDataColChanged(filter)
        Else
            DataTables("库存表").DataCols("供应商").RaiseDataColChanged()
        End If
End Select

库存表事件代码
Select Case e.DataCol.Name
    Case "物料编号","物料名称","型号规格","供应商"   \'\'这个例子包含3个字段
        Dim filter As String = "物料编号 = \'" & e.DataRow("物料编号") & "\'and 供应商 = \'" & e.DataRow("供应商") & "\' and 物料名称 = \'" & e.DataRow("物料名称") & "\' and 型号规格 = \'" & e.DataRow("型号规格") & "\'"  
        e.DataRow("库存数量") = DataTables("入库明细表").Compute("sum(购进数量)", filter) 
End Select

本来这个结构没问题,但是现在需要给入库明细表加入一个判断列,只有为TRUE的时候再会计入库存表里面,为FALSE则不计入。这个判读是可以手动更改的
综上所诉,要求就是在入库明细表有值后,不要第一时间生成库存,而是需要在查询页面手动选定记录让判断列为TRUE后才生成库存
其实事件都有,只是如何在查询页面手动更改判读为TRUE后正确调用入库明细表的datacolchangde事件,及如何在datacolchangde事件中加入IF判断来检查判断列是否为TRUE
备注:判断字段 BINGO int NULL,

--  作者:lijin951
--  发布时间:2014/11/29 11:55:00
--  
还有我是用的SQL数据库,能不能通过SQL代码来弄,比如UPDATE触发器
--  作者:狐狸爸爸
--  发布时间:2014/11/29 17:04:00
--  
入库明细表:
 
Select Case e.DataCol.Name
    Case "物料编号","供应商","物料名称","型号规格","购进数量","判断列"
        Dim filter As String = "物料编号 = \'" & e.DataRow("物料编号") & "\' and 供应商 = \'" & e.DataRow("供应商") & "\' and 物料名称 = \'" & e.DataRow("物料名称") & "\' and 型号规格 = \'" & e.DataRow("型号规格") & "\'"
        
        If not (e.DataRow.IsNull("供应商") OrElse e.DataRow.IsNull("物料名称") OrElse e.DataRow.IsNull("型号规格") OrElse e.DataRow.IsNull("物料编号")) Then
            Dim fdr As DataRow = DataTables("库存表").Find(filter)
            If (fdr Is Nothing) Then   
                fdr = DataTables("库存表").AddNew
                fdr("物料编号") = e.DataRow("物料编号")
                fdr("物料名称") = e.DataRow("物料名称")
                fdr("型号规格") = e.DataRow("型号规格")
                fdr("供应商") = e.DataRow("供应商")
            End If
        End If
        If e.DataCol.Name = "购进数量" Then
            DataTables("库存表").DataCols("供应商").RaiseDataColChanged(filter)
        Else
            DataTables("库存表").DataCols("供应商").RaiseDataColChanged()
        End If
End Select
 
 
 
库存表:
Select Case e.DataCol.Name
    Case "物料编号","物料名称","型号规格","供应商"  
        Dim filter As String = "物料编号 = \'" & e.DataRow("物料编号") & "\'and 供应商 = \'" & e.DataRow("供应商") & "\' and 物料名称 = \'" & e.DataRow("物料名称") & "\' and 型号规格 = \'" & e.DataRow("型号规格") & "\'"  
        Filter  = Filter & " 判断列 = True"
        e.DataRow("库存数量") = DataTables("入库明细表").Compute("sum(购进数量)", filter) 
End Select