以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]计算年功工资的代码不对  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=133007)

--  作者:hanzhang98
--  发布时间:2019/4/3 21:12:00
--  [求助]计算年功工资的代码不对
老师好。下面的代码想根据当前表(“工资表”)的“连续工龄”数值,在“年功表”的“累计工龄”查找相符的行,并将“年功表”的"计发标准"列的值写入“工资表”的“年功金额”列,请老师帮助改正代码。谢谢。

Select Case e.DataCol.name
    Case "连续工龄"
        If e.DataRow.IsNull("连续工龄") Then
            e.DataRow("年功金额") = Nothing
        Else
            Dim bm As String = e.DataRow("连续工龄") 
            Dim dr As DataRow = DataTables("年功表").Find("累计工龄 = \'" & bm & "\'")
            If dr IsNot Nothing Then
                e.DataRow("年功金额") = dr("计发标准") 
            End If
        End If
End Select

--  作者:有点甜
--  发布时间:2019/4/3 21:17:00
--  

这样?

 

Dim dr As DataRow = DataTables("年功表").Find("累计工龄 <= " & bm & "", "累计工龄 desc")


--  作者:hanzhang98
--  发布时间:2019/4/3 21:58:00
--  
谢谢老师指导。
再请教老师,现“工资表”的“连续工龄”列的值是从“员工表”复制而来,在“员工表”需要保留一位小数,而“工资表”是需要整数,将“工资表”的“连续工龄”取整的代码如何写。请老师帮助。谢谢

--  作者:有点甜
--  发布时间:2019/4/3 22:00:00
--  

参考

 

http://www.foxtable.com/webhelp/scr/1513.htm

 

http://www.foxtable.com/webhelp/scr/0281.htm

 


--  作者:hanzhang98
--  发布时间:2019/4/3 22:34:00
--  
老师好。麻烦老师再给看看,下面红色部分的代码不对,原意是[如果“责任工资”列不为空,则清除(或不写入)“年功金额”,否则写入],但现在是“责任工资”不为空也写入“年功金额”了。请老师帮助。谢谢


If e.DataRow.IsNull("责任工资") Then        \'责任工资是否为空("Is"是/"IsNull"不是)                
      e.DataRow("年功金额") = Nothing         \'不为空,则清除(或不写入)年功金额
Else
      e.DataRow("年功金额") = dr("计发标准")  \'为空,写入
End If                 
            
[此贴子已经被作者于2019/4/4 7:31:49编辑过]

--  作者:有点甜
--  发布时间:2019/4/3 23:54:00
--  
如果报错。上传实例测试。
--  作者:hanzhang98
--  发布时间:2019/4/4 7:30:00
--  
老师好。麻烦老师再给看看,下面红色部分的代码不对,原意是[如果“责任工资”列不为空,则清除(或不写入)“年功金额”,否则写入],但现在是“责任工资”不为空也写入“年功金额”了。请老师帮助。谢谢

Select Case e.DataCol.name
    Case "连续工龄"          \'                
        If e.DataRow.IsNull("连续工龄") Then        \'连续工龄是否为空
            e.DataRow("年功金额") = Nothing         \'如果为空,则清除年功金额
        Else
            Dim bm As String = e.DataRow("连续工龄")  \'声明变量为"连续工龄"
            Output.Show(Round2(bm, 0))                \'将"连续工龄" 数值四舍五入为整数
            Dim dr As DataRow = DataTables("年功工资标准").Find("累计工龄 <= " & bm & "", "累计工龄 desc")
            If dr IsNot Nothing Then
                If e.DataRow.IsNull("责任工资") Then        \'责任工资是否为空("Is"是/"IsNull"不是)                
                    e.DataRow("年功金额") = Nothing         \'不为空,则清除(或不写入)年功金额
                Else
                    e.DataRow("年功金额") = dr("计发标准")  \'为空,写入
                End If                 
            End If
        End If
End Select

--  作者:wjl-se
--  发布时间:2019/4/4 7:52:00
--  
If e.DataRow.IsNull("责任工资") = False Then        \'责任工资是否为空("Is"是/"IsNull"不是)                
                    e.DataRow("年功金额") = Nothing         \'不为空,则清除(或不写入)年功金额
                Else
                    e.DataRow("年功金额") = dr("计发标准")  \'为空,写入
                End If                 

--  作者:hanzhang98
--  发布时间:2019/4/4 8:02:00
--  
谢谢指导。但还是不行,按您的指导,现在又全不写入了(不管“责任工资”是不是空,均不写入)。还请老师费心修正。
[此贴子已经被作者于2019/4/4 8:07:50编辑过]

--  作者:hanzhang98
--  发布时间:2019/4/4 8:07:00
--  
如果把这句“If e.DataRow.IsNull("责任工资") = False Then”改为“If e.DataRow.IsNull("责任工资") = True Then”,又全写入了(不管“责任工资”是不是空,均写入)。还请老师费心修正。
[此贴子已经被作者于2019/4/4 8:08:06编辑过]