以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]多条件判断,自动返回值。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184475) |
-- 作者:mengxxaa -- 发布时间:2022/12/9 14:15:00 -- [求助]多条件判断,自动返回值。 举例:状态栏这里,有三种状态。1.当未交数量=0时,状态返回:未执行;2.当 0<数量-交货数量<数量时,状态返回:执行未完结;3.数量-交货数量=<0时,状态返回:执行完毕,并不允许再修改。 现在是用列表项目,人工判断实现。
|
-- 作者:有点蓝 -- 发布时间:2022/12/9 15:05:00 -- 到datacolchanged事件处理:http://www.foxtable.com/webhelp/topics/0625.htm Select Case e.DataCol.Name Case "数量","交货数量" If e.DataRow.IsNull("数量") orelse e.DataRow.IsNull("交货数量") Then if e.DataRow.IsNull("交货数量") then e.DataRow("状态") = "未执行" end if Else if e.DataRow("数量") > e.DataRow("交货数量") e.DataRow("状态") = "执行未完结" else e.DataRow("状态") = "执行完毕" e.DataRow.Locked = True
End If End Select |
-- 作者:mengxxaa -- 发布时间:2022/12/9 16:48:00 -- 感谢老师指点。我忘记补充了,交货数量是表达列,数据来源于统计关联表上的。 这种情况如何处理呢?
|
-- 作者:有点蓝 -- 发布时间:2022/12/9 16:59:00 -- 参考:http://www.foxtable.com/webhelp/topics/2381.htm |
-- 作者:mengxxaa -- 发布时间:2022/12/12 10:23:00 -- 补充,父表的问题处理好了。当父表执行完毕后,怎么样触发子表不能再对父表状态为执行完毕的行再添加明细呢。 参照这里http://www.foxtable.com/webhelp/index.htm?page=0625.htm 的代码: For Each dr As DataRow In e.DataRow.GetChildRows("订单明细") dr.Locked = e.DataRow.LockedNext 锁定了子表,但是子表还是可添加明细。 想要的效果就是:一个订单交付完之后,状态为执行完结,子表就不能对这个订单再生成送货明细了。
|
-- 作者:有点蓝 -- 发布时间:2022/12/12 10:43:00 -- 子表BeforeAddDataRow事件,判断父表当前行是不是已经执行完毕,如果是就取消新增e.cancel=true |
-- 作者:mengxxaa -- 发布时间:2022/12/12 14:14:00 -- Dim pr As DataRow = e.DataRow.GetParentRow("父表") \' If pr IsNot Nothing Then If pr("状态") = "执行完毕" Then \'父表条件 e.Cancel = True End If End If |
-- 作者:有点蓝 -- 发布时间:2022/12/12 14:22:00 -- Dim pr As Row = tables("父表").current \' If pr IsNot Nothing Then If pr("状态") = "执行完毕" Then \'父表条件 e.Cancel = True End If End If
|