Foxtable(狐表)用户栏目专家坐堂 → [求助]跨表取数计算代码错误


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

主题:[求助]跨表取数计算代码错误

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
[求助]跨表取数计算代码错误  发帖心情 Post By:2019/4/7 8:03:00 [只看该作者]

各位老师早上好。又有问题恳请老师帮助,就是跨表取数计算各类津贴、补贴的代码。昨天晚上搞了一夜也写不出来,还得恳请老师费心帮助。谢谢。



[此贴子已经被作者于2019/5/6 17:31:58编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/7 9:21:00 [只看该作者]

参考代码

 

Select Case e.DataCol.name
    Case "前夜班天数"
        If e.DataRow.IsNull("前夜班天数") Then        '是否为空(Is是IsNull否)
            e.DataRow("前夜班津贴标准") = Nothing         '为空,则清除
        Else
            Dim yb1 As String = e.DataRow("前夜班天数")  '声明变量
            'msgbox(yb1)
            Dim yjt1 As DataRow = DataTables("津贴补贴标准").Find("津贴项目 = '前夜班'")
            'msgbox(yjt1)
            If yjt1 IsNot Nothing Then
                e.DataRow("前夜班津贴标准") = e.DataRow("前夜班天数") * yjt1("计发标准")
            Else
                e.DataRow("前夜班津贴标准") = Nothing
            End If
        End If
End Select


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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/4/7 11:30:00 [只看该作者]

谢谢老师帮助指导。

现在的新问题是:如果我将列属性的“最大小数位数”设置为“2”、“固定小数位数”设为“True”时,[前夜班津贴标准]就写不进去。将两个表的相关列属性设置一至也不行,必须均恢复为“默认值”,才能写进去。如果我不想用属性的“默认值”,想要用“最大小数位数”设置为“2”、“固定小数位数”设为“True”时,要怎样才行。谢谢。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/7 12:01:00 [只看该作者]

我测试没问题,请上传具体实例测试。

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/4/7 12:18:00 [只看该作者]

老师好。仿照您指导的代码,“夜班津贴”部分已能运行。新的问题是:

1、将“职称津贴”部分改为如下单一级别的代码后,在“薪资计算表”的“职称级别”列的任意表格中输入任意内容【包括不是“高级”两个字的任意字符】,均将“津贴补贴标准”表“计发标准”列“高级”对应的计发标准写入。错误代码如下:

Select Case e.DataCol.name
    Case "职称级别", "职称津贴"    '判断更改的列
        If e.DataRow.IsNull("职称级别") Then        '是否为空(Is是IsNull否)
            e.DataRow("职称津贴") = Nothing         '为空,则清除
        Else
            Dim Zcjb As String = e.DataRow("职称级别")  '声明变量            '检验"msgbox(Zcjb)"
            Dim Zcjt_g As DataRow = DataTables("津贴补贴标准").Find("津贴项目 = '高级'")
            If Zcjt_g IsNot Nothing Then
                e.DataRow("职称津贴") = Zcjt_g("计发标准")
            Else
                e.DataRow("职称津贴") = Nothing
            End If
        End If
End Select


请老师指正。谢谢。



[此贴子已经被作者于2019/4/7 13:21:15编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/7 12:26:00 [只看该作者]

代码改成

 

Select Case e.DataCol.name
    Case "职称级别"
        If e.DataRow.IsNull("职称级别") Then        '是否为空(Is是IsNull否)
            e.DataRow("职称津贴") = Nothing         '为空,则清除
        Else
            Dim Zcjb As String = e.DataRow("职称级别")  '声明变量            '检验"msgbox(Zcjb)"

            Dim Zcjt_g As DataRow = DataTables("津贴补贴标准").Find("津贴项目 = '" & Zcjb  & "'")

            If Zcjt_g IsNot Nothing Then
                e.DataRow("职称津贴") = Zcjt_g("计发标准")
            Else
                e.DataRow("职称津贴") = Nothing
            End If
        End If
End Select

 

 


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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/4/7 13:19:00 [只看该作者]

谢谢老师。不好意思,这段又不对了,还请老师指正。谢谢

Select Case e.DataCol.name
    'Case "性别", "女工卫生费"    '判断更改的列
        'If e.DataRow.("性别") <> "女" Then        '性别不是女
            'e.DataRow("女工卫生费") = Nothing         '则清除
        'Else
            'Dim Xb As String = e.DataRow("性别")  '声明变量
            'Dim Wsf As DataRow = DataTables("津贴补贴标准").Find("津贴项目 = '卫生费'")            '检验"msgbox(Hyjt)"
            'If Wsf IsNot Nothing Then
                'e.DataRow("女工卫生费") = Wsf("计发标准")
            'Else
                'e.DataRow("女工卫生费") = Nothing
            'End If
        'End If
End Select

[此贴子已经被作者于2019/4/7 13:20:16编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/7 14:58:00 [只看该作者]

Select Case e.DataCol.name
    Case "性别"
        If e.DataRow.("性别") <> "女" Then        '性别不是女
            e.DataRow("女工卫生费") = Nothing         '则清除
        Else
            Dim Xb As String = e.DataRow("性别")  '声明变量
            Dim Wsf As DataRow = DataTables("津贴补贴标准").Find("津贴项目 = '卫生费'")            '检验"msgbox(Hyjt)"
            If Wsf IsNot Nothing Then
                e.DataRow("女工卫生费") = Wsf("计发标准")
            Else
                e.DataRow("女工卫生费") = Nothing
            End If
        End If
End Select

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/4/7 15:14:00 [只看该作者]

谢谢老师。

这句代码出错:If e.DataRow.("性别") <> "女" Then        '性别不是女

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/7 15:26:00 [只看该作者]

改成

 

 If e.DataRow("性别") <> "女" Then        '性别不是女


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