如何实现多表导入数据计算
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
= {"品名","型号","规格","单价"}
这种编码方式在处理大量重复任务的时候很实用,应该仔细体会掌握。
不知道如何实现,请老师指教,谢谢!