Foxtable(狐表)用户栏目专家坐堂 → 请教如何改


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

主题:请教如何改

美女呀,离线,留言给我吧!
意悠心轻
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
请教如何改  发帖心情 Post By:2017/2/14 13:00:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:捕获333.png
图片点击可在新窗口打开查看


 

我在包装车间工资表的表属性DataColChanged事件中修改了程序,因为要添加一个条件,如果当天的集体生产形式只有一种(即只有一条件生产线,以集体、集体1区分),则职位为拉长的系数为:1 + (fdr("系数") - 1)/ 2,否则系直接引用姓名表中的系数,程序修改后报错,请教如何修改。


 

[此贴子已经被作者于2017/2/15 11:58:51编辑过]

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2017/2/14 14:03:00 [显示全部帖子]

日期格式我修改过来没报错了,但对包装车间工资表姓名列重置列,软件消失,程序有问题,麻烦帮我看看怎么改,谢谢。

[此贴子已经被作者于2017/2/14 14:04:52编辑过]

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2017/2/14 15:04: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).Replace("'","''") & "'")
    Dim count As Integer = 0
    Dim ls As new List(Of String)
    If DataTables("包装车间工资表").DataCols.Contains("备注1") = False Then
        DataTables("包装车间工资表").DataCols.add("备注1", Gettype(String))
    End If
    For Each dr As DataRow In drs
        Dim str As String = dr("生产形式")
        If ls.Contains(str) = False Then
            count + = 1
            ls.add(str)
            dr("备注1") = dr("备注1").replace("重复", Nothing)
        Else
            dr("备注1") = "重复" & dr("备注1").replace("重复", Nothing)
        End If
    Next
    Select Case e.DataCol.name
        Case "日期","姓名","职位","系数"
            Dim d As Date = e.DataRow("日期")
            d = new Date(d.year, d.month, 1)
            Dim fdr As DataRow = DataTables("姓名").find("姓名 = '" & e.DataRow("姓名") & "' and 日期 >= #" & Format(d,"yyyy-MM-dd") & "# and 日期 < #" & Format(d.AddMonths(1),"yyyy -MM-dd") & "#", "日期 desc")
            If fdr IsNot Nothing
                e.DataRow("职位") = fdr("职位")
                If count > 1 Then
                    If e.DataRow("职位") Like "*拉长*" Then
                        e.DataRow("系数") = 1 + (fdr("系数") - 1)/ 2
                    Else
                        e.DataRow("系数") = fdr("系数")
                    End If
                Else
                    e.DataRow("职位") = Nothing
                    e.DataRow("系数") = Nothing
                End If
            End If
    End Select
Next

[此贴子已经被作者于2017/2/14 15:11:32编辑过]

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2017/2/14 15:10:00 [显示全部帖子]

我的本意是自动引用,哦写到按钮里啊?让我想想怎么改。


 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2017/2/14 15:55:00 [显示全部帖子]

我加了这段代码了,点重置列软件没消失了,但没实现自动引用系数。我在计算窗口里加了两个暂停执行事件代码按钮,一个执行的,一个关闭的,但并不明白它们在此的作用。


 

[此贴子已经被作者于2017/2/15 11:59:09编辑过]

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2017/2/14 17:21:00 [显示全部帖子]

下面的代码放到计算按钮里?是能引用了,但结果不对,因为你把计算分开了,计算是判断条件之一,如果当天的集体生产形式只有一种(即只有一条件生产线,以集体、集体1区分),则职位为拉长的系数为:1 + (fdr("系数") - 1)/ 2,否则系直接引用姓名表中的系数。

[此贴子已经被作者于2017/2/14 17:31:02编辑过]

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2017/2/14 18:51:00 [显示全部帖子]

  结果不对,我改成下面的公式,结果没安月份把相应月的系数引用。
[此贴子已经被作者于2017/2/14 20:25:58编辑过]

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2017/2/14 18:54:00 [显示全部帖子]

改为这样,结果把曾经是拉长的系数都引过去了!
Select Case e.DataCol.name
    Case "日期","姓名","职位","系数"
        Dim d As Date = e.DataRow("日期")
        d = new Date(d.year, d.month, 1)
        Dim fdr As DataRow = DataTables("姓名").find("姓名 = '" & e.DataRow("姓名") & "' and 日期 >= #" & Format(d,"yyyy-MM-dd") & "# and 日期 < #" & Format(d.AddMonths(1),"yyyy -MM-dd") & "#", "日期 desc")
        If fdr IsNot Nothing
            e.DataRow("职位") = fdr("职位")
            If e.DataTable.GetValues("生产形式", "日期 = #" & e.DataRow("日期") & "# and 生产形式 <> '个人'").Count = 1 Then
                If e.DataRow("职位") Like "*拉长*" Then
                    e.DataRow("系数") = 1 + (fdr("系数") - 1)/ 2
                Else
                    e.DataRow("系数") = fdr("系数")
                End If
            Else
                e.DataRow("职位") = Nothing
                e.DataRow("系数") = Nothing
            End If
        End If
End Select
[此贴子已经被作者于2017/2/14 20:33:03编辑过]

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2017/2/14 21:26:00 [显示全部帖子]

这是喷涂车间的工资表,姓名列同样有程序安所在行年月引用系数表对应年月岗位、系数,包装车间的工资表的系数引用原理与喷涂差不多,只是多了一个条件,同一天不重复的集体生产形式只有一种时,拉长的系数等于当前行所对应年月引用姓名表相应年月系数:1 + (fdr("系数") - 1)/ 2,否则直接引用与当前行年月对应的姓名表的系数 fdr("系数"),现在安照你说的做成这样,不安计算窗口中的关闭姓名重置错误按钮直接重置姓名列就掉线,按了不掉线,但执行姓名重置没反应,应如何解决这问题。
foxtabl是不能完全完成工资计算,还有二资分配,加班费、水电扣减、个人所得税等要在excel中完成,但目录树查找、同步录入、引用,运行程序进行初次分配还是foxtable强,目前完成工资分配要二者结合。
[此贴子已经被作者于2017/2/15 14:43:22编辑过]

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2017/2/14 21:29:00 [显示全部帖子]

  真正要把生产管好,还要核对ERP软件的上的数据,看计划、生产、进仓数据,所以小小的工资计算涉及了计划、生产、仓库管理。
[此贴子已经被作者于2017/2/14 21:29:19编辑过]

 回到顶部
总数 13 1 2 下一页