以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]DataColChanged 问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=83985)

--  作者:husl
--  发布时间:2016/4/20 17:16:00
--  [求助]DataColChanged 问题
老师好,      我在表的DataColChanged 里设置了代码,但是当通过自定义项目...打开窗口然后选择内容写入列后,列内容改变之后代码有时候实现不了? 我测试重置列的话又可以实现代码。请问是代码问题还是?   代码如下:

If e.DataCol.Name = "库位"  Then
    Dim dr4 As  DataRow
    Dim filter4 As String
    Dim filter2 As String
    Dim filter As String = "1=1"
    If e.DataRow.isnull("品名") = False Then
        filter &= " and 品名 = \'" & e.DataRow("品名") & "\'"
    End If
    If e.DataRow.isnull("批号") = False Then
        filter &= " and 批号 = \'" & e.DataRow("批号") & "\'"
    End If
    
    filter4 = filter & " and [库位] = \'" & e.DataRow("库位") & "\' and [货权] = \'" & e.DataRow("货权") & "\'"
    
    filter2 = filter & " and [库位] = \'" & e.DataRow("库位") & "\' and [货权] = \'" & e.DataRow("货权") & "\' and [日期]=\'" & Date.today & "\'"
    
    
    
    
    
    
    
    dr4 = DataTables("总库存表").SQLFind(Filter4 ) 
    
    Dim Sum1 As Single=DataTables("总库存表").SQLCompute("Sum(昨日结存)", filter4)
    Dim Sum2 As Single=DataTables("出库明细表").Compute("Sum(出库重量)", filter2)
    If dr4 IsNot Nothing Then
        dr4("今日出库")=sum2
        dr4.Save
    End If

    If dr4 IsNot Nothing And Sum1 <e.DataRow("出库重量")  Then 
        
        Dim drs As List(Of DataRow) = DataTables("入库明细表").Select(Filter2 )
        
        If drs.Count > 0 Then 
            Dim Sum3 As Single= e.DataRow("出库重量")-sum1
            Dim str As String = ""
            For Each dr As DataRow In drs
                str = str & dr("入库车号") & "|" & sum3  & "+" & dr4("库位") & "|" & sum1 & "-"
            Next
            e.DataRow("出库详情")  = str.TrimEnd("-")
        End If
        
    ElseIf dr4 IsNot Nothing  And Sum1 >=e.DataRow("出库重量")  Then \'如果找到
        
        e.DataRow("出库详情") =e.DataRow("出库重量")
        
    End If
End If


--  作者:大红袍
--  发布时间:2016/4/20 17:19:00
--  
 加入msgbox,弹出是否进入执行了代码。
--  作者:husl
--  发布时间:2016/4/21 16:20:00
--  
袍大大。我试了下,如果已经有库位了,然后修改库位可以显示出 msgbox,但是如果是空的然后我写入库位的话就没msgbox
--  作者:大红袍
--  发布时间:2016/4/21 16:31:00
--  

 sqlFind、sqlCompute 的值,是查询保存的数据。

 

 没有弹出,就是没有查询到对应的数据,满足不了 IF 判断,所以不进入执行代码。


--  作者:husl
--  发布时间:2016/4/21 16:45:00
--  
好的,谢谢袍大大,我再研究下   SQLFIND 内容,明明有的为什么查不到。。看看是不是代码错了。
--  作者:大红袍
--  发布时间:2016/4/21 16:48:00
--  

1、弹出你的Filter看一看,去你的后台数据库那里,看看有没有对应的数据。

 

2、加入msgbox,看看执行到哪里就不执行了,然后看那句代码有什么问题。


--  作者:husl
--  发布时间:2016/4/21 17:09:00
--  
谢谢老师。msgbox 内容写什么可以判断代码停止呢?
--  作者:大红袍
--  发布时间:2016/4/21 17:10:00
--  
加入多个msgbox,看执行到哪里就知道啦,不断缩小范围
--  作者:husl
--  发布时间:2016/4/21 17:17:00
--  
原来这样…………好的,谢谢袍大大!图片点击可在新窗口打开查看