以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  有空查找-3  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131505)

--  作者:hcfbehero
--  发布时间:2019/2/28 2:09:00
--  有空查找-3
这次又来一个新的问题了,就是有空位的查找,在实例里我编写好了事件代码,但就是因为有空位查找不出来。
这样的,销售档案为基础数据表,泵送明细为查找表,我在泵送明细表中用销档和车型(这两个是必填的),以及时段、位置,去销售档案表里查找价和台班方量,如果销档、车型、时段和位置四个都为非空,那么是能查找到我需要的数据的,但是时段和位置,如果其中一个或是两个为空,即使我在查找时让其为空,那么就查找不了了,请高手们帮更下代码,要是能解释下就更好了。


图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:有空查找.rar
[此贴子已经被作者于2019/2/28 2:14:43编辑过]

--  作者:有点甜
--  发布时间:2019/2/28 9:18:00
--  

照抄

 

Select Case e.DataCol.name
    Case "销档","泵车信息_车型"
        Dim drs1 = e.DataTable.Select("销档=\'" & e.DataRow("销档") & "\' and 泵车信息_车型=\'" & e.DataRow("泵车信息_车型") & "\'")
        Dim drs = DataTables("销售档案").Select("销档编号=\'" & e.DataRow("销档") & "\' and 泵送费用_车型=\'" & e.DataRow("泵车信息_车型") & "\'")
        For Each cdr As DataRow In drs
            Dim flag As Boolean = True
            For Each dr As DataRow In drs1
                If cdr("泵送费用_时段") = dr("单价_时段") AndAlso cdr("泵送费用_位置") = dr("单价_位置") Then
                    flag = False
                    Exit For
                End If
            Next
            If flag Then
                e.DataRow("单价_价") = cdr("泵送费用_单价")
                e.DataRow("台班方量") = cdr("泵送费用_台班方量")
                e.DataRow("单价_时段") = cdr("泵送费用_时段")
                e.DataRow("单价_位置") = cdr("泵送费用_位置")

            End If
        Next
End Select

 

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=130873&authorid=0&page=0&star=2

 


--  作者:hcfbehero
--  发布时间:2019/2/28 13:10:00
--  
甜版主,测试了下,出不来呢,
--  作者:有点甜
--  发布时间:2019/2/28 15:14:00
--  

认认真真看代码,认认真真测试。

 

删除你之前的数据,然后输入 销档和车型。


--  作者:hcfbehero
--  发布时间:2019/2/28 16:45:00
--  
对不起了版主,可能是我没表达明白,我的意思是,我在泵送明细中查找销售档案里的数据,只要单价_价和台班方量,单价_时段和单价_位置是在销售档案表里有的时候,再输上去,没有就都空着,麻烦您再帮看下,对不起了
--  作者:有点甜
--  发布时间:2019/2/28 17:21:00
--  
Select Case e.DataCol.name
    Case "销档","泵车信息_车型","单价_时段","单价_位置"
        Dim filter As String = "1=1"
        If e.DataRow.IsNull("销档") Then
            filter &= " and 销档编号 is null"
        Else
            filter &= " and 销档编号 = \'" & e.DataRow("销档") & "\'"
        End If
       
        If e.DataRow.IsNull("泵车信息_车型") Then
            filter &= " and 泵送费用_车型 is null"
        Else
            filter &= " and 泵送费用_车型 = \'" & e.DataRow("泵车信息_车型") & "\'"
        End If
       
        If e.DataRow.IsNull("单价_时段") Then
            filter &= " and 泵送费用_时段 is null"
        Else
            filter &= " and 泵送费用_时段 = \'" & e.DataRow("单价_时段") & "\'"
        End If
       
        If e.DataRow.IsNull("单价_位置") Then
            filter &= " and 泵送费用_位置 is null"
        Else
            filter &= " and 泵送费用_位置 = \'" & e.DataRow("单价_位置") & "\'"
        End If       
       
        Dim fdr = DataTables("销售档案").find(filter)
        If fdr IsNot Nothing Then
            e.DataRow("单价_价") = fdr("泵送费用_单价")
            e.DataRow("台班方量") = fdr("泵送费用_台班方量")
        End If
End Select

--  作者:hcfbehero
--  发布时间:2019/2/28 17:33:00
--  
完美解决,谢谢了,非常感谢!