以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Filter 问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173395)

--  作者:edisontsui
--  发布时间:2021/11/27 15:51:00
--  Filter 问题
Dim a As DataRow = DataTables("钣金送货单").Find("材料 is null") 
Dim Nian As String = a("送货年月日").Substring(0,4)

上面的代码放在一个按钮里面。查找时是从 钣金送货单 这个表的所有数据行进行查找。我希望只从筛选后的数据行里面去查找数据。请问要怎样改代码?谢谢、

--  作者:jialihaha
--  发布时间:2021/11/27 16:00:00
--  
http://www.foxtable.com/webhelp/topics/0552.htm
--  作者:有点蓝
--  发布时间:2021/11/27 16:38:00
--  
dim filter as string = "材料 is null"
if Tables("钣金送货单").filter > "\' then
filter = filter & " and " & Tables("钣金送货单").filter
end if 
Dim a As DataRow = DataTables("钣金送货单").Find(filter ) 
if a isnot bhing then
Dim Nian As String = a("送货年月日").Substring(0,4)
end if


--  作者:edisontsui
--  发布时间:2021/11/27 16:46:00
--  
这些代码,我老是学不会,没有理解前面4行的含义。
--  作者:有点蓝
--  发布时间:2021/11/27 17:14:00
--  
把筛选的条件合并到其它条件里


--  作者:edisontsui
--  发布时间:2022/9/1 15:25:00
--  
    If CurrentTable.name.contains("员工名单") Then
        Dim filter As String = Tables("请假加班").filter
        If filter > "" Then filter = filter & " and "
            Dim xms As List(Of String) = DataTables("请假加班").GetValues("姓名",Tables("请假加班").filter)
            For Each xm As String In xms
                Dim qty As Integer = Tables("请假加班").Compute("sum(无薪假天数)", "姓名 =\'" & xm & "\' ")
                Dim dr97 As DataRow = DataTables("员工名单").find("姓名 =\'" & xm & "\' ")
                If dr97 IsNot Nothing Then
                    If qty > 0 Then
                        dr97("无薪假天") = qty
                    Else
                        dr97("无薪假天") = Nothing
                    End If
                End If
            Next
    End If

上面的代码,我先在“请假加班”里面做一次筛选,然后再执行 Tables("请假加班").Compute("sum(无薪假天数)", "姓名 =\'" & xm & "\' ") 的计算,希望只计算筛选后的数据,但是实际上计算出来的qty 却还是筛选前的数据,请问是哪里的问题呢?谢谢。

--  作者:有点蓝
--  发布时间:2022/9/1 15:36:00
--  
 If CurrentTable.name.contains("员工名单") Then
        Dim filter As String = Tables("请假加班").filter
        If filter > "" Then 
filter = filter & " and 姓名 =\'" & xm & "\'"
else
 filter = "姓名 =\'" & xm & "\'"
endif
            Dim xms As List(Of String) = DataTables("请假加班").GetValues("姓名",Tables("请假加班").filter)
            For Each xm As String In xms
                Dim qty As Integer = Tables("请假加班").Compute("sum(无薪假天数)", filter )
                Dim dr97 As DataRow = DataTables("员工名单").find("姓名 =\'" & xm & "\' ")

--  作者:edisontsui
--  发布时间:2022/9/1 16:23:00
--  
我后来再测试一次,好像6楼的数据又正确了。奇怪。
--  作者:edisontsui
--  发布时间:2022/9/2 13:35:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:临时代码1.rar

请看附件代码。我还加了一句:
Dim ty9 As String = DataTables("考勤记录").GetComboListString("季度") 

但是这句会处理筛选前的数据,而我希望它处理筛选后的数据,请问这里要怎样修改?谢谢。

--  作者:有点蓝
--  发布时间:2022/9/2 13:37:00
--  
不都一样的处理方法?

Dim ty9 As String = DataTables("考勤记录").GetComboListString("季度",Tables("考勤记录").filter