Foxtable(狐表)用户栏目专家坐堂 → [求助]关于表事件datacolchangde的问题


  共有2841人关注过本帖树形打印复制链接

主题:[求助]关于表事件datacolchangde的问题

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


加好友 发短信
等级:婴狐 帖子:87 积分:701 威望:0 精华:0 注册:2014/8/4 11:54:00
[求助]关于表事件datacolchangde的问题  发帖心情 Post By:2014/11/29 11:41:00 [只看该作者]

大概结构,入库明细表通过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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:87 积分:701 威望:0 精华:0 注册:2014/8/4 11:54:00
  发帖心情 Post By:2014/11/29 11:55:00 [只看该作者]

还有我是用的SQL数据库,能不能通过SQL代码来弄,比如UPDATE触发器

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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

 回到顶部