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


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

主题:[求助]代码出错

帅哥哟,离线,有人找我吗?
iyplx2425
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


加好友 发短信
等级:超级版主 帖子:107440 积分:546479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/1/9 14:28:00 [只看该作者]

"学费_截止日期"不能是表达式列,改为数据列

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


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

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

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


加好友 发短信
等级:超级版主 帖子:107440 积分:546479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/1/9 16:25:00 [只看该作者]

提示列为只读,肯定就是表达式列

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


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

懂了。

 回到顶部
帅哥哟,离线,有人找我吗?
iyplx2425
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:超级版主 帖子:107440 积分:546479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/1/10 8:52:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
iyplx2425
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

发现问题了。e.DataRow("车费_月数") = e.DataRow("车费_月数")应为e.DataRow("车费_月数") = e.DataRow("学费_月数")。改了就行了。但还没有加删除[学费_年度]原值的语句。

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


加好友 发短信
等级:超级版主 帖子:107440 积分:546479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/1/10 9:38:00 [只看该作者]

去掉这个表达式列,然后代码改为

If e.DataCol.Name = "学费_金额_应交" OrElse e.DataCol.Name = "学费_月数" Then
    If e.DataRow.IsNull("学费_金额_应交") OrElse e.DataRow.IsNull("学费_月数") orelse e.DataRow("学费_月数") = 0 Then
        e.DataRow("车费_年度") = Nothing
    Else
if (e.DataRow("学费_金额_应交") / e.DataRow("车费_月数")) <= 60
        e.DataRow("车费_年度") = e.DataRow("学费_年度")
e.DataRow("学费_年度") = nothing
end if
    End If
End If

 回到顶部
总数 32 上一页 1 2 3 4 下一页