Foxtable(狐表)用户栏目专家坐堂 → 请教如何设计这个表达式


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

主题:请教如何设计这个表达式

帅哥哟,离线,有人找我吗?
大红袍
  31楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/6 0:57:00 [显示全部帖子]

For Each ary() As String In DataTables("冲压车间工资表").GetValues("日期|产品名称|生产形式", "日期 is not null and 生产形式 <> '个人'")
    Dim drs As List(Of DataRow) = DataTables("冲压车间工资表").Select("日期=#" & ary(0) & "# and 产品名称='" & ary(1) & "' and 生产形式='" & ary(2) & "'")
    Dim sum As Double = 0
    Dim count As Integer = 0
    Dim ls As new List(Of String)
    For Each dr As DataRow In drs
        Dim fdr As DataRow = DataTables("价格表").find("产品名称 = '" & dr("产品名称") & "'")
        If fdr IsNot Nothing
            dr("单价") = fdr("单价")
        End If
        Dim str As String = dr("姓名")
        If ls.Contains(str) = False Then
            sum += dr("数量") * dr("单价")
            count += 1
            ls.add(str)
            dr("备注") = dr("备注").replace("重复", Nothing)
        Else
            dr("备注") = "重复" & dr("备注").replace("重复", Nothing)
        End If
    Next
    For Each dr As DataRow In drs
        If dr("备注") Like "*矿工*" OrElse dr("备注") Like "*重复*" Then
            dr("分配金额") = Nothing
        Else
            dr("分配金额") = format(sum/count, "0.00")
        End If
    Next
Next
For Each dr As DataRow In DataTables("冲压车间工资表").Select("生产形式 = '个人'")
    dr("备注") = dr("备注").replace("重复", Nothing)
    dr("分配金额") = dr("数量") * dr("单价")
Next

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  32楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/6 0:58:00 [显示全部帖子]

以下是引用意悠心轻在2016/2/5 20:25:00的发言:
不能用排序,应用筛选,因为我只要这个人的工资明细,其他人的不显,在excel里这功能很容易实现的,在FOXTABLE2016里我就不知了,还不熟悉软件功能。

 

筛选?这个意思?

 

Tables("冲压车间工资表").filter = "分配金额 is not null and 姓名 = '张三'"
Tables("冲压车间工资表").Sort = "姓名,日期"


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  33楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/6 9:18:00 [显示全部帖子]

以下是引用意悠心轻在2016/2/6 8:10:00的发言:
  我打错字了,我是只要一个人的工资,其他人不显,一个个查找,打给个人,因此姓名不能用固定字符。
[此贴子已经被作者于2016/2/6 8:40:31编辑过]

 

弄一个窗口,然后加入一个文本框和一个按钮查询即可

 

Tables("冲压车间工资表").filter = "分配金额 is not null and 姓名 = '" & e.Form.Controls("TextBox1").Text & "'"
Tables("冲压车间工资表").Sort = "姓名,日期"

 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  34楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/6 9:20:00 [显示全部帖子]

format就是四舍五入,比如执行代码

 

msgbox(format(123.455, "0.00"))

如果重名的金额也计算如总金额,就这样改

 

For Each ary() As String In DataTables("冲压车间工资表").GetValues("日期|产品名称|生产形式", "日期 is not null and 生产形式 <> '个人'")
    Dim drs As List(Of DataRow) = DataTables("冲压车间工资表").Select("日期=#" & ary(0) & "# and 产品名称='" & ary(1) & "' and 生产形式='" & ary(2) & "'")
    Dim sum As Double = 0
    Dim count As Integer = 0
    Dim ls As new List(Of String)
    For Each dr As DataRow In drs
        Dim fdr As DataRow = DataTables("价格表").find("产品名称 = '" & dr("产品名称") & "'")
        If fdr IsNot Nothing
            dr("单价") = fdr("单价")
        End If
        Dim str As String = dr("姓名")
        sum += dr("数量") * dr("单价")
        If ls.Contains(str) = False Then
            count += 1
            ls.add(str)
            dr("备注") = dr("备注").replace("重复", Nothing)
        Else
            dr("备注") = "重复" & dr("备注").replace("重复", Nothing)
        End If
    Next
    For Each dr As DataRow In drs
        If dr("备注") Like "*旷工*" OrElse dr("备注") Like "*重复*" Then
            dr("分配金额") = Nothing
        Else
            dr("分配金额") = format(sum/count, "0.00")
        End If
    Next
Next
For Each dr As DataRow In DataTables("冲压车间工资表").Select("生产形式 = '个人'")
    dr("备注") = dr("备注").replace("重复", Nothing)
    dr("分配金额") = dr("数量") * dr("单价")
Next
[此贴子已经被作者于2016/2/6 14:14:17编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  35楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/6 11:49:00 [显示全部帖子]

旷工的问题,写错了:

 

 If dr("备注") Like "*旷工*" OrElse dr("备注") Like "*重复*" Then

 

空行的问题,你要先筛选,再汇总的。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  36楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/6 13:29:00 [显示全部帖子]

以下是引用意悠心轻在2016/2/6 13:24:00的发言:

你最后给我的程序重名的还是显示!

 

无语,你要不显示,就筛选啊,你自己删除筛选的代码的。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  37楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/6 13:34:00 [显示全部帖子]

For Each ary() As String In DataTables("冲压车间工资表").GetValues("日期|产品名称|生产形式", "日期 is not null and 生产形式 <> '个人'")
    Dim drs As List(Of DataRow) = DataTables("冲压车间工资表").Select("日期=#" & ary(0) & "# and 产品名称='" & ary(1) & "' and 生产形式='" & ary(2) & "'")
    Dim sum As Double = 0
    Dim count As Integer = 0
    Dim ls As new List(Of String)
    For Each dr As DataRow In drs
        Dim fdr As DataRow = DataTables("价格表").find("产品名称 = '" & dr("产品名称") & "'")
        If fdr IsNot Nothing
            dr("单价") = fdr("单价")
        End If
        Dim str As String = dr("姓名")
        If dr("备注") Like "*旷工*" = False Then
            sum += dr("数量") * dr("单价")
            If ls.Contains(str) = False Then
                count += 1
                ls.add(str)
                dr("备注") = dr("备注").replace("重复", Nothing)
            Else
                dr("备注") = "重复" & dr("备注").replace("重复", Nothing)
            End If
        End If
    Next
    For Each dr As DataRow In drs
        If dr("备注") Like "*旷工*" OrElse dr("备注") Like "*重复*" Then
            dr("分配金额") = Nothing
        Else
            dr("分配金额") = format(sum/count, "0.00")
        End If
    Next
Next
For Each dr As DataRow In DataTables("冲压车间工资表").Select("生产形式 = '个人'")
    dr("备注") = dr("备注").replace("重复", Nothing)
    dr("分配金额") = dr("数量") * dr("单价")
Next
Tables("冲压车间工资表").filter = "分配金额 is not null"
Tables("冲压车间工资表").Sort = "日期,产品名称,生产形式,生产工序"

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  38楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/6 13:35:00 [显示全部帖子]

以下是引用意悠心轻在2016/2/6 13:30:00的发言:

空行是因为汇总才在前面出现的,汇总之后筛选小计就没了,如此操作没意思!

 

你可以把空行删除掉啊。先筛选再汇总啊


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  39楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/6 13:36:00 [显示全部帖子]

 初学者,请先看视频教程

 

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=67187

 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  40楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/6 14:22:00 [显示全部帖子]

For Each ary() As String In DataTables("冲压车间工资表").GetValues("日期|产品名称|生产形式", "日期 is not null and 生产形式 <> '个人'")
    Dim drs As List(Of DataRow) = DataTables("冲压车间工资表").Select("日期=#" & ary(0) & "# and 产品名称='" & ary(1) & "' and 生产形式='" & ary(2) & "'")
    Dim sum As Double = 0
    Dim count As Integer = 0
    Dim ls As new List(Of String)
    For Each dr As DataRow In drs
        Dim fdr As DataRow = DataTables("价格表").find("产品名称 = '" & dr("产品名称") & "' and 工序 = '" & dr("生产工序") & "'")
        If fdr IsNot Nothing
            dr("单价") = fdr("单价")
        End If
        Dim str As String = dr("姓名")
        sum += dr("数量") * dr("单价")
        If ls.Contains(str) = False Then
            count += 1
            ls.add(str)
            dr("备注") = dr("备注").replace("重复", Nothing)
        Else
            dr("备注") = "重复" & dr("备注").replace("重复", Nothing)
        End If
    Next
    For Each dr As DataRow In drs
        If dr("备注") Like "*旷工*" OrElse dr("备注") Like "*重复*" Then
            dr("分配金额") = Nothing
        Else
            dr("分配金额") = format(sum/count, "0.00")
        End If
    Next
Next
For Each dr As DataRow In DataTables("冲压车间工资表").Select("生产形式 = '个人'")
    dr("备注") = dr("备注").replace("重复", Nothing)
    dr("分配金额") = dr("数量") * dr("单价")
Next
'Tables("冲压车间工资表").filter = "分配金额 is not null"
Tables("冲压车间工资表").filter = ""
Tables("冲压车间工资表").Sort = "日期,产品名称,生产形式,生产工序"

 回到顶部
总数 81 上一页 1 2 3 4 5 6 7 8 9 下一页