Foxtable(狐表)用户栏目专家坐堂 → [求助]多表条件取值计算(已解决)


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

主题:[求助]多表条件取值计算(已解决)

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]多表条件取值计算(已解决)  发帖心情 Post By:2012/8/26 15:34:00 [只看该作者]

根据数据表每个员工的每个月所在的部门和系数以及系数奖金表的部门系数奖金,在奖金明细表中填充每个员工每个月的奖金金额;

月奖金 = 所在部门的系数奖金 * 月系数

 

对从一张表条件提取数据进行计算的代码如下:

 

'填充系数
For Each dr1 As DataRow In DataTables("数据").DataRows
    Dim pr As DataRow
    For i As Integer = 1 To 12
        If dr1.IsNull("职务_" & i)  Then
            dr1("系数_" & i) = Nothing
        Else
            pr = DataTables("设置").Find("职务 = '"& dr1("职务_" & i) & "'")
            If pr IsNot Nothing Then
                dr1("系数_" & i) = pr("系数") * dr1("考勤_" & i)
            Else
                dr1("系数_" & i) = Nothing
            End If
        End If
    Next
Next

 

但是要从两张表条件提取数据进行计算填充的代码不知如何写,请各位老师指教,谢谢!!

 

 


 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目177.table

[此贴子已经被作者于2012-8-29 9:28:37编辑过]

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/26 16:53:00 [只看该作者]

很想帮你,可惜看不懂

 

以一条数据为例,说明详细的计算方法


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/26 17:16:00 [只看该作者]

蒙一个

 

For Each dr As DataRow In DataTables("奖金明细").DataRows
    Dim dr1 As DataRow = DataTables("数据").Find("姓名 = '" & dr("姓名") & "'")
    If dr1 IsNot Nothing Then '如果找到的话
        For Each dc As DataCol In DataTables("奖金明细").DataCols
            If dc.name <> "姓名" AndAlso dc.name <> "全年奖金"
                Dim dr2 As DataRow = DataTables("系数奖金").Find("部门 = '" & dr1("部门_" & dc.Name.Split("_")(1)) & "'")
                If dr2 IsNot Nothing Then '如果找到的话
                    dr("奖金_" & dc.Name.Split("_")(1)) = dr2("系数奖金")*dr1("系数_" & dc.Name.Split("_")(1))
                End If
            End If
        Next
    End If
Next


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/26 17:18:00 [只看该作者]

结果图

 

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120826171637.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/8/27 9:28:00 [只看该作者]

谢谢czy老师的指教,计算的结果完全正确,但是因为以上案例进行了简化,实际的表还有很多列,希望将列dr("奖金_" & dc.Name.Split("_")(1))的表示形式改成dr("奖金_"& i)的For...Next循环语句,如何修改,请各位老师指教,再次感谢czy老师!!

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/27 9:47:00 [只看该作者]

如果方便的话还是将整个文件传上来吧,你上面也看到了 dc.Name.Split("_")(1) ,象这种形式的取赋值有多处,而且两个表是对应的,如果贸然改了代码,两表不匹配会出错的。
[此贴子已经被作者于2012-8-27 9:47:03编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/8/27 10:39:00 [只看该作者]

谢谢czy老师的回复,对dc.Name.Split("_")(1)如何理解,请老师指教,谢谢!!

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/8/27 12:30:00 [只看该作者]

以下是引用yyzlxc在2012-8-27 10:39:00的发言:
谢谢czy老师的回复,对dc.Name.Split("_")(1)如何理解,请老师指教,谢谢!!

 

http://www.foxtable.com/help/topics/1338.htm

http://www.foxtable.com/help/topics/0245.htm

 


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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/8/27 13:13:00 [只看该作者]

谢谢狐爸老师的回复,看了帮助文件关于Split的条文,对dc.Name.Split("_")(1)还是一知半解,个人觉得还是For...Next循环语句的条理比较清晰,能否将czy老师的代码改成For...Next循环语句的形式,还请各位老师赐教。


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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]多表条件取值计算(五楼新要求)  发帖心情 Post By:2012/8/28 9:14:00 [只看该作者]

重新上传案例,个人奖金表的奖金系数填充代码如下。

 

'填充奖金系数
For Each dr1 As DataRow In DataTables("个人奖金").DataRows
    Dim pr As DataRow
    For i As Integer = 1 To 12
        If dr1.IsNull("姓名")  Then
            dr1("奖金明细_" & i &"_奖金系数") = Nothing
        Else
            pr = DataTables("个人数据").Find("姓名 = '"& dr1("姓名")& "'")
            If pr IsNot Nothing Then
                dr1("奖金明细_" & i &"_奖金系数") = pr("系数_" & i)
                If dr1("奖金明细_" & i &"_奖金系数") = 0 Then
                    dr1("奖金明细_" & i &"_奖金系数") = Nothing
                End If
            Else
                dr1("奖金明细_" & i &"_奖金系数") = Nothing
            End If
        End If
    Next
Next

 

求计算考核奖的代码,请各位老师指教,谢谢!!


计算方法:个人奖金表的“奖金明细_i_考核奖” = 个人数据表对应姓名的“部门_i”所对应系数奖金表部门的系数考核奖的值 * 个人奖金表的“奖金明细_i_奖金系数

 

 

案例重新上传,在12楼。
[此贴子已经被作者于2012-8-28 9:40:06编辑过]

 回到顶部
总数 21 1 2 3 下一页