以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  列属性如何智能变换?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=34810)

--  作者:yangsion
--  发布时间:2013/6/16 15:36:00
--  列属性如何智能变换?

请教大家一下。我有个表"单车水标目录”,里面有两列,一个为“完成时间”,另外一个为“样品进度”,可否在样品进度这列设置属性,当今日到“完成时间”指定的时间的时候,样品进度不是“已完成”,自动转为“异常”,请问如何编码
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2013-6-16 15:44:26编辑过]

--  作者:y2287958
--  发布时间:2013/6/16 16:11:00
--  
一、DataColChanged中设置一下事件
二、打开项目或当前表时重置一下完成日期列即可

--  作者:gsnake
--  发布时间:2013/6/16 16:16:00
--  
这个 “已完成”是手工输入的!

那就判断 样品进度 不是 已完成 且 date=完成日期  样品进度=异常  

--  作者:yangsion
--  发布时间:2013/6/16 16:44:00
--  
差不多就是这个意思,但是我不会编码啊,请教一下,谢谢
--  作者:有点甜
--  发布时间:2013/6/16 20:50:00
--  

这个用代码,设置在DAtaColChanged事件:

 

If e.DataCol.Name = "完成时间" Then

    If e.DataRow.IsNull("完成时间") = False Then

           e.Datarow("样品进度") = “已完成”

    End If

End If


--  作者:yangsion
--  发布时间:2013/6/17 0:56:00
--  

试了不行哦


--  作者:Bin
--  发布时间:2013/6/17 8:56:00
--  

If e.DataCol.Name = "完成时间" Then

    If e.DataRow.IsNull("完成时间") = False Then

         if e.DataRow("完成时间")>=#06/16/2013# then

           e.Datarow("样品进度") = “异常”   \'注意如果你用的是数据字典列表项目之类的 应该赋值为取值列

         end if

    End If

End If

试试看
不行就上个例子,这种简单的问题怎么会不行.
--  作者:blackzhu
--  发布时间:2013/6/17 10:43:00
--  
不要这样 如果这样 还需要手工输入,在项目事件(AfterOpenProject 项目事件)里面加入代码:


For Each dr As DataRow In DataTables("样品表").DataRows

    If dr.IsNull("完成日期")=False And dr("完成日期")> Date.today Then

        dr("样品进度")="异常"

    End If

Next


  这样每次打开系统会自动修改样品进度!

[此贴子已经被作者于2013-6-17 10:45:27编辑过]

--  作者:yangsion
--  发布时间:2013/6/17 13:14:00
--  

For Each dr As DataRow In DataTables("单车水标目录").DataRows

    If dr("完成日期")= Date.Today And dr("样品进度")="已完成"=False Then

        dr("样品进度")="异常"

    End If

Next

     谢谢各位,参考各位的然后我改动了一下,现在逻辑是正确的了。本人是做技术管理的,完全不懂编程。有你们的指引,我想我会走的更远


--  作者:狐狸爸爸
--  发布时间:2013/6/17 14:20:00
--  

按道理不需要这样,5楼的代码是肯定可以的,不过这个代码列名是“完成时间”,你的列名是“完成日期”,你改一下:

 

If e.DataCol.Name = "完成日期" Then

    If e.DataRow.IsNull("完成日期") = False Then

           e.Datarow("样品进度") = “已完成”

    End If

End If

 

你设置好代码后,记得重置一下列,这样原来已经输入的数据才会有效:

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