以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何写入工龄_年,工龄_月,工龄_日?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=46360)

--  作者:wren
--  发布时间:2014/2/21 15:47:00
--  如何写入工龄_年,工龄_月,工龄_日?
 请问我在项目事件里在AfterOpenProject事件中添加代码:
DataTables("员工明细表").DataCols("入职日期").RaiseDataColChanged() 

提示:
错误所在事件:表,员工明细表, DataColChanged
详细错误信息:
调用的目标发生了异常。
列“工龄”不属于表 员工明细表。


我应该如何在AfterOpenProject事件中写入工龄_年,工龄_月,工龄_日!!才能正常显示每个员工的工龄!
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20.png
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2014/2/21 15:48:00
--  
建议您用这个方法:
http://www.foxtable.com/help/topics/1485.htm

先找出是哪一行出错,然后分析原因,搞不定,可以在论坛发帖,贴出代码,并告诉我们运行到哪一行出错,以及错误提示。

--  作者:wren
--  发布时间:2014/2/21 16:24:00
--  
.NET Framework 版本:2.0.50727.4971
Foxtable 版本:2013.10.14.1
错误所在事件:表,员工明细表, DataColChanged
详细错误信息:
调用的目标发生了异常。
(从类型“Integer”到类型“Date”的转换无效。)
请问这是什么意思


--  作者:Bin
--  发布时间:2014/2/21 16:25:00
--  
你把数值 当作日期来使用了.

你把代码发出来看看

--  作者:狐狸爸爸
--  发布时间:2014/2/21 16:28:00
--  

错误提示其实很清楚了,员工明细表的DataColChanged事件有问题,员工名字表没有工龄这一列,看图片应该是“工龄_年”

你可以贴出员工明细表的DataColChanged事件给大家看看。


--  作者:wren
--  发布时间:2014/2/21 16:31:00
--  
Select Case e.DataCol.name
    Case "入职日期"
        If e.DataRow.IsNull("入职日期") Then
            e.DataRow("工龄_年") = Nothing
            e.DataRow("工龄_月") = Nothing
            e.DataRow("工龄_日") = Nothing
        Else
            Dim y,m,d As Integer
            DateYMD(e.DataRow("入职日期"),Date.Today,y,m,d)
            e.DataRow("工龄_年") = y
            e.DataRow("工龄_月") = m
            e.DataRow("工龄_日") = d
        End If
End Select

--  作者:Bin
--  发布时间:2014/2/21 16:39:00
--  
e.DataRow("工龄_年") = y
            e.DataRow("工龄_月") = m
            e.DataRow("工龄_日") = d

错误原因应该是你这3个列的类型是日期类型, 应该改为数值类型

--  作者:狐狸爸爸
--  发布时间:2014/2/21 16:42:00
--  
直接做个例子文件发上来,一分钟就知道结果
[此贴子已经被作者于2014-2-21 16:42:37编辑过]

--  作者:wren
--  发布时间:2014/2/21 16:42:00
--  
真的是这样~~谢谢~~