Foxtable(狐表)用户栏目专家坐堂 → datacolchanged 疑问


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

主题:datacolchanged 疑问

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
datacolchanged 疑问  发帖心情 Post By:2018/5/19 16:07:00 [只看该作者]

我在datacolchanged里面设置了如下代码:

If e.Datarow("下料长") = 0 
    If e.DataCol.Name = "下料宽" 
         If e.newvalue = 0 
             e.DataRow("类型") = "侧板" '
         End If
    End If
end if

我要达成的目标是:如果“下料长” = 0, 而且如果"下料宽"输入数据“0”时,“类型”才会自动输入“侧板”,也就是说,要“下料长”和"下料宽"都为0时,“类型”才会自动输入“侧板”。但是,实际结果是,如果“下料长” 是空值,如果"下料宽"输入数据“0”时,“类型”也会自动输入“侧板”。这是不符合我当初的要求的。怎么修改才行?谢谢。

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110746 积分:563656 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/5/19 16:30:00 [只看该作者]

If e.DataCol.Name = "下料长" OrElse e.DataCol.Name = "下料宽"
    If e.DataRow("下料长") = 0 AndAlso e.DataRow("下料宽") = 0
        e.DataRow("类型") = "侧板"
    Else
        e.DataRow("类型") = Nothing
    End If
End If

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/5/19 16:39:00 [只看该作者]

你这个代码,运行之后发现, "下料长" 和"下料宽"只要有一个是0,就会("类型") = "侧板"。而我要的结果是,“下料长”和"下料宽"同时为0时,“类型”才会自动输入“侧板”

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110746 积分:563656 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/5/19 16:44:00 [只看该作者]

If e.DataCol.Name = "下料长" OrElse e.DataCol.Name = "下料宽"
    If e.DataRow.Isnull("下料长") OrElse e.DataRow.Isnull("下料宽")
        e.DataRow("类型") = Nothing
    Else
        e.DataRow("类型") = IIF(e.DataRow("下料长") = 0 AndAlso e.DataRow("下料宽") = 0,"侧板",Nothing)
    End If
End If

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2019/8/27 17:04:00 [只看该作者]

If e.DataCol.Name = "录入日期"
    If e.DataRow.IsNull("录入日期") Then
        e.DataRow("确认") = False
    Else
        Dim tp As TimeSpan = Date.today - CDate(e.DataRow("录入日期"))
        If Math.Round(tp.TotalDays/1,0) > 1
            e.DataRow("确认") = True
        End If 
    End If
End If

我在datacolchanged里面有上述代码,希望录入日期超过当天日期1天以上的,就将“确认”那栏设为true。但是实际运行时(即重新登录之后),却起不了作用。请教为什么?


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110746 积分:563656 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/27 17:08:00 [只看该作者]

If e.DataCol.Name = "录入日期"
    If e.DataRow.IsNull("录入日期") Then
        e.DataRow("确认") = False
    Else
        e.DataRow("确认") = e.newvalue > Date.today .adddays(1)
    End If
End If

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2019/8/28 12:45:00 [只看该作者]

以上代码放在 datacolchanged 里面,每次登陆系统是时,其实“录入日期”是不会改变的,变动的只是今天日期。我希望的是,重新登录系统时,昨天以前的数据行,其“确认”一栏都要自动变动为“true”。但是实际上达不到这个要求。

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

程序都是死的,你要发命令让它做什么它才知道要做什么!

如果到了明年,需要重新计算年龄列,但是除非你重新输入出生日期,否则上面的代码是不会重算年龄的。
不过我们可以在AfterOpenProject事件中,设置下面的代码:

DataTables("员工").DataCols("出生日期").RaiseDataColChanged()


http://www.foxtable.com/webhelp/topics/1587.htm


 回到顶部