以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]代码出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=189975)

--  作者:iyplx2425
--  发布时间:2024/1/8 18:38:00
--  [求助]代码出错
一、狐表的帮助中搜索“日期”,选“年龄和工龄的精确计算”,方法一DataColChanged事件代码,复制到表中,代码不存在了,变成了一长串日期;复制到帖子里,复制不了,而且引起帖子界面出错退出(无法在此粘贴)。不知为什么?

二 、将该代码改成如下:
If e.DataCol.Name = "入职日期" Then
    If e.DataRow.IsNull("入职日期") Then \'如果没有输入出生日期
        e.DataRow("工龄") = Nothing \'则清空年龄
    Else
        \'否则计算年龄
        e.DataRow("工龄") =Math.Round( Date.Today.Year - e.DataRow("入职日期").Year,2)
    End If
End If
意在采用小数点计算工龄,但计算不出来。请教为什么?
[此贴子已经被作者于2024/1/8 18:47:06编辑过]

--  作者:有点蓝
--  发布时间:2024/1/8 20:18:00
--  
1、我测试没有问题,请上传实例说明

2、Year 本来就是整数,整数和整数加减怎么可能出来小数?

--  作者:iyplx2425
--  发布时间:2024/1/9 10:59:00
--  

Select Case e.DataCol.name
    Case "入职日期"
        If e.DataRow.IsNull("入职日期") Then
            e.DataRow("工龄") = Nothing
        Else
            Dim tp As TimeSpan = Date.today - CDate(e.DataRow("入职日期"))
            e.DataRow("工龄") = Math.Round(tp.TotalDays / 365.2422,2)
        End
If

End
Select

今天这个代码又可以用了,但用在表事件中,不出计算结果。列属性用双精度与单精度都一样。

[此贴子已经被作者于2024/1/9 10:59:56编辑过]

--  作者:有点蓝
--  发布时间:2024/1/9 11:04:00
--  
已有的数据,编辑代码后,必须重置列一次
--  作者:iyplx2425
--  发布时间:2024/1/9 12:31:00
--  
重置也不出计算结果。
另外,有起始日期,求N个月后的截止日期,代码怎么写?谢谢。
代码一时半会记不了,多用才能逐步记住。
[此贴子已经被作者于2024/1/9 13:45:14编辑过]

--  作者:有点蓝
--  发布时间:2024/1/9 13:33:00
--  
选中"入职日期"列在重置
--  作者:iyplx2425
--  发布时间:2024/1/9 13:43:00
--  
工龄问题解决了。
有起始日期,求N个月后的截止日期,代码怎么写?谢谢。
[此贴子已经被作者于2024/1/9 13:44:00编辑过]

--  作者:有点蓝
--  发布时间:2024/1/9 13:46:00
--  
参考:http://www.foxtable.com/webhelp/topics/1452.htm
--  作者:iyplx2425
--  发布时间:2024/1/9 13:47:00
--  
另外,狐表中的表达式是不是只能进行数学运算,而不是像易表那样可以使用函数?
[此贴子已经被作者于2024/1/9 13:48:32编辑过]

--  作者:有点蓝
--  发布时间:2024/1/9 13:49:00
--  
就这些:http://www.foxtable.com/webhelp/topics/0102.htmhttp://www.foxtable.com/webhelp/topics/0100.htmhttp://www.foxtable.com/webhelp/topics/0106.htm