以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]克隆含表达式行出错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=16764)

--  作者:nevercool
--  发布时间:2012/2/23 9:28:00
--  [求助]克隆含表达式行出错

工资表中有一表达式列, [医疗保险] = [医疗基数] * 0.02 + 3,利用

For Each dr1 As DataRow In DataTables("工资表").Select("[月份]=MAX([月份])")
   Dim dr2 As DataRow = DataTables("工资表").AddNew()
   For Each dc As DataCol In DataTables("工资表").DataCols
           dr2(dc.name) = dr1(dc.name)
    Next

Next

克隆时,提示错误“医疗保险”列为只读。据观察,如果原行数值为空,复制后数值不再是空,而变为“0”。这样的话,对表达式的意义就不同了。

如何修改能避免克隆时出现此问题呢? 即有数值的克隆下来,空数值的仍然为空。


--  作者:狐狸爸爸
--  发布时间:2012/2/23 9:39:00
--  

For Each dr1 As DataRow In DataTables("工资表").Select("[月份]=MAX([月份])")
   Dim dr2 As DataRow = DataTables("工资表").AddNew()
   For Each dc As DataCol In DataTables("工资表").DataCols

         if dc.Expression = "" then
              dr2(dc.name) = dr1(dc.name)

        end if
    Next
Next


--  作者:nevercool
--  发布时间:2012/2/23 9:48:00
--  
老师,改完后是不报错了,但如果医疗基数为空时,复制出的行数值仍然是0,医疗保险自然变为3,这样还是不对啊..
--  作者:狐狸爸爸
--  发布时间:2012/2/23 9:52:00
--  

你看看:

 

http://www.foxtable.com/help/topics/0602.htm

 


--  作者:nevercool
--  发布时间:2012/2/23 10:04:00
--  

IsNull的问题我考虑过,但在这里我觉得不能用啊,比如某个人没上保险,医疗基数不能为0,否则就扣医疗保险3元了.

现在问题就出在,原先是空值的复制后不再是空值而变成0了,对后面的表达式造成了影响。、

不知我理解的对不对


--  作者:nevercool
--  发布时间:2012/2/23 10:11:00
--  
图片点击可在新窗口打开查看
--  作者:狐狸爸爸
--  发布时间:2012/2/23 10:21:00
--  

For Each dr1 As DataRow In DataTables("工资表").Select("[月份]=MAX([月份])")
    Dim dr2 As DataRow = DataTables("工资表").AddNew()
    For Each dc As DataCol In DataTables("工资表").DataCols
        If dc.Expression = ""  AndAlso dr1.IsNull(dc.name) = False  Then
            dr2(dc.name) = dr1(dc.name)
        End If
    Next
Next


--  作者:nevercool
--  发布时间:2012/2/23 10:35:00
--  

图片点击可在新窗口打开查看  谢谢!做笔记了...

之前我还有个问题没有搞妥,月份列如何改成“2012-02”这种格式,然后在克隆时月份自动递增到下个月


--  作者:狐狸爸爸
--  发布时间:2012/2/23 10:39:00
--  
用Drawcell事件搞定
--  作者:nevercool
--  发布时间:2012/2/23 10:58:00
--  
帮助文档中Drawcell事件的例子很少啊,基本都是和单元格颜色有关的,不知从何下手