Foxtable(狐表)用户栏目专家坐堂 → [求助]代码出错


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

主题:[求助]代码出错

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


加好友 发短信
等级:婴狐 帖子:45 积分:348 威望:0 精华:0 注册:2018/2/5 14:31:00
[求助]代码出错  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:婴狐 帖子:45 积分:348 威望:0 精华:0 注册:2018/2/5 14:31:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:婴狐 帖子:45 积分:348 威望:0 精华:0 注册:2018/2/5 14:31:00
  发帖心情 Post By:2024/1/9 12:31:00 [显示全部帖子]

重置也不出计算结果。
另外,有起始日期,求N个月后的截止日期,代码怎么写?谢谢。
代码一时半会记不了,多用才能逐步记住。
[此贴子已经被作者于2024/1/9 13:45:14编辑过]

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


加好友 发短信
等级:婴狐 帖子:45 积分:348 威望:0 精华:0 注册:2018/2/5 14:31:00
  发帖心情 Post By:2024/1/9 13:43:00 [显示全部帖子]

工龄问题解决了。
有起始日期,求N个月后的截止日期,代码怎么写?谢谢。
[此贴子已经被作者于2024/1/9 13:44:00编辑过]

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


加好友 发短信
等级:婴狐 帖子:45 积分:348 威望:0 精华:0 注册:2018/2/5 14:31:00
  发帖心情 Post By:2024/1/9 13:47:00 [显示全部帖子]

另外,狐表中的表达式是不是只能进行数学运算,而不是像易表那样可以使用函数?
[此贴子已经被作者于2024/1/9 13:48:32编辑过]

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


加好友 发短信
等级:婴狐 帖子:45 积分:348 威望:0 精华:0 注册:2018/2/5 14:31:00
  发帖心情 Post By:2024/1/9 14:10:00 [显示全部帖子]


参考8楼试7楼问题,结果出现如下提示:
错误所在事件:表,交费表, DataColChanged
详细错误信息:
调用的目标发生了异常。
列“学费_截止日期”为只读。
使用代码如下:
If e.DataCol.Name = "学费_起始日期" OrElse e.DataCol.Name = "学费_月数" Then
    If e.DataRow.IsNull("学费_起始日期") OrElse e.DataRow.IsNull("学费_月数") Then
        e.DataRow("学费_截止日期") = Nothing
    Else
        e.DataRow("学费_截止日期") = e.DataRow("学费_起始日期").AddMonths(e.DataRow("学费_月数"))
    End If
End If

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


加好友 发短信
等级:婴狐 帖子:45 积分:348 威望:0 精华:0 注册:2018/2/5 14:31:00
  发帖心情 Post By:2024/1/9 15:33:00 [显示全部帖子]

图片点击可在新窗口打开查看谢谢。你怎么判断是表达式?

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


加好友 发短信
等级:婴狐 帖子:45 积分:348 威望:0 精华:0 注册:2018/2/5 14:31:00
  发帖心情 Post By:2024/1/9 16:42:00 [显示全部帖子]

懂了。

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


加好友 发短信
等级:婴狐 帖子:45 积分:348 威望:0 精华:0 注册:2018/2/5 14:31:00
  发帖心情 Post By:2024/1/10 8:37:00 [显示全部帖子]

请教:在表中可不可以直接对列进行数据型与表达式型的互换?重新添加太麻烦了。谢谢。
加一个问题:为什么第二天打开文件,其中某列的数据全部消失了?
[此贴子已经被作者于2024/1/10 8:41:11编辑过]

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


加好友 发短信
等级:婴狐 帖子:45 积分:348 威望:0 精华:0 注册:2018/2/5 14:31:00
  发帖心情 Post By:2024/1/10 9:22:00 [显示全部帖子]

表中有[学费_年度]、[学费_月数]、[学费_金额_应交],[车费_年度]等列。
要做的操作是:
如果[学费_金额_应交]/[学费_月数]<=60,则将对应[学费_年度]中的数据复制到[车费_年度],并删除[学费_年度]中的值。
为此,增设一表达式逻辑列[X],表达式为:[学费_金额_应交]/[学费_月数]<=60。
然后写如下代码:
If e.DataCol.Name = "X" OrElse e.DataCol.Name = "车费_月数" Then
    If e.DataRow.IsNull("X") OrElse e.DataRow.IsNull("学费_月数") Then
        e.DataRow("车费_月数") = Nothing
    Else
        e.DataRow("车费_月数") = e.DataRow("车费_月数")
    End If
End If
重置列未提示出错,但[车费_年度]全部显示为“0”。
哪里错了?
问题是不是出在语句:e.DataRow.IsNull("X")这里,或是e.DataRow("车费_月数") = e.DataRow("车费_月数")这里?
谢谢。
[此贴子已经被作者于2024/1/10 9:24:49编辑过]

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