Foxtable(狐表)用户栏目专家坐堂 → 如何实现多表导入数据计算


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

主题:如何实现多表导入数据计算

帅哥哟,离线,有人找我吗?
lgz518
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1220 积分:8261 威望:0 精华:0 注册:2019/6/13 9:57:00
如何实现多表导入数据计算  发帖心情 Post By:2019/8/19 15:15:00 [显示全部帖子]

 如何实现多表导入数据计算

1.“员工工资表”有“年月,员工编号,姓名,应出勤天数,实际出勤,计时工资,
,计件工资,附加工资”字段;
2.“员工工资表”中的“年月,员工编号,姓名"字段与“考勤表”“员工附加表”
    “员工计时工资表”的字段相同;
3. “员工工资表”计算工资,须从“考勤表”引入考勤记录,从“员工附加表”引入员工附加金额,从“员工计件表”引入计件工资,从“员工
计时工资表”引入计时工资,后才能计算;
4.实际出勤,是考勤表用表达式计算出来的值,附加工资,是员工附加表用表达式
计算出来的的值。

1.1考勤表

年月,      员工编号,姓名,应出勤天数,实际出勤
201907      A01        张三       22               21
201907      A02        李四      22               21

1.2员工附加表
年月,      员工编号,姓名,总附加金额
201907      A01        张三         22 0              
201907      A02        李四         52 0              


1.3计时工资

年月,      员工编号,姓名,总计时工资
201907      A01        张三         22 0  2            
201907      A02        李四         52 0  2     


1.4计件工资

年月,      员工编号,姓名,总计件工资
201907      A01        张三         12 0  2            
201907      A02        李四         22 0  2     


要计算     1.5员工工资表

年月,员工编号,姓名,应出勤天数,实际出勤,计时工资,计件工资,附加工资   合计


注,如果无出勤员工的记录,其附加工资等相关记录为“0”,不导入或不显示。



注,用跨表引用实现不了

如果有十几列甚至更多列的数据需要继承,上面代码可能会显得过于繁琐,为此我们可以考虑将代码改写为:

If e.DataCol.Name = "产品编号" Then
    Dim
nms() As String = {"品名","型号","规格","单价"}
    If
e.NewValue Is Nothing Then

        For
Each nm As String In nms

            e
.DataRow(nm) = Nothing

        Next

    Else

        Dim
dr As DataRow

        dr
= DataTables("产品").Find("[产品编号] = '" & e.NewValue &
"'")
        If
dr IsNot Nothing
            For Each
nm As String In nms
               
e.DataRow(nm) = dr(nm)
            Next
        End If
    End If
End If

这样不管有多少列,我们都只需修改下面这样代码,增加和删除列名即可:

Dim nms() As String = {"品名","型号","规格","单价"}

这种编码方式在处理大量重复任务的时候很实用,应该仔细体会掌握。


不知道如何实现,请老师指教,谢谢!




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


加好友 发短信
等级:六尾狐 帖子:1220 积分:8261 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2019/8/19 17:16:00 [显示全部帖子]

老师,把您的代码放在DataColChanged的事件操作没有报错,也没数据。如果要放在窗口上如何操作?谢谢


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


加好友 发短信
等级:六尾狐 帖子:1220 积分:8261 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2019/8/19 19:54:00 [显示全部帖子]

老师,1.重置一下列,也没有反映;2.按钮Dim r As Row = Tables("员工工资表").current,报错,希望用按键操作且是批量操作(带FOR NEXT);3.比较好的做法是到数据库建一个查询或者视图,把这些需要查询的表的数据合并到一个查询表中,然后只需要查一个表即可,"员工工资表"是类似各表的查询表,不知道操作,这个方面的实例?谢谢



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


加好友 发短信
等级:六尾狐 帖子:1220 积分:8261 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2019/8/20 10:38:00 [显示全部帖子]

 老师,上传实例,请指导,谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多表.table



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


加好友 发短信
等级:六尾狐 帖子:1220 积分:8261 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2019/8/20 11:53:00 [显示全部帖子]

 老师,下面代码还是没执行,我检查几次,不知问题在哪里,请指导,谢谢

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


加好友 发短信
等级:六尾狐 帖子:1220 积分:8261 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2019/8/20 11:54:00 [显示全部帖子]

老师,下面代码还是没执行,我检查几次,不知问题在哪里,请指导,谢谢
员工月工资datacolchanged事件

If e.DataCol.Name = "员工编号" Then
    Dim dr As DataRow = DataTables("考勤").Find("[员工编号] = '" & e.NewValue & "'")
    If dr IsNot Nothing
        e.DataRow("实际出勤天数") = dr("实际出勤天数")
    End If
    
    dr  = DataTables("计件工资").Find("[员工编号] = '" & e.NewValue & "'")
    If dr IsNot Nothing
        e.DataRow("计件工资") = dr("计件工资")
    End If
End If

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


加好友 发短信
等级:六尾狐 帖子:1220 积分:8261 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2019/8/20 11:55:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多表 - 副本.table


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


加好友 发短信
等级:六尾狐 帖子:1220 积分:8261 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2019/8/20 12:53:00 [显示全部帖子]

 老师,我操作一下,了解,但还以下问题。
1.您设计是二个一起操作;
2,您提供是表事件,我想比较友好操作,用窗口,在窗口按键实现(您的表事件+按键,合在按键),还有“如果,无正常出勤和实际出勤”的数据,此员工就不用导入,要如何实现。谢谢

 回到顶部