Foxtable(狐表)用户栏目专家坐堂 → [求助]多条件判断,自动返回值。


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

主题:[求助]多条件判断,自动返回值。

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


加好友 发短信
等级:幼狐 帖子:88 积分:697 威望:0 精华:0 注册:2022/10/10 15:34:00
[求助]多条件判断,自动返回值。  发帖心情 Post By:2022/12/9 14:15:00 [只看该作者]

举例:状态栏这里,有三种状态。1.当未交数量=0时,状态返回:未执行;2.当 0<数量-交货数量<数量时,状态返回:执行未完结;3.数量-交货数量=<0时,状态返回:执行完毕,并不允许再修改。
现在是用列表项目,人工判断实现。
如何自动实现,求可参考的例子或者代码提示。
图片点击可在新窗口打开查看此主题相关图片如下:多条件判断.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:697 威望:0 精华:0 注册:2022/10/10 15:34:00
  发帖心情 Post By:2022/12/9 16:48:00 [只看该作者]

感谢老师指点。我忘记补充了,交货数量是表达列,数据来源于统计关联表上的。
这种情况如何处理呢?

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


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/9 16:59:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:88 积分:697 威望:0 精华:0 注册:2022/10/10 15:34:00
  发帖心情 Post By: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.Locked
Next
锁定了子表,但是子表还是可添加明细。
想要的效果就是:一个订单交付完之后,状态为执行完结,子表就不能对这个订单再生成送货明细了。

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


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/12 10:43:00 [只看该作者]

子表BeforeAddDataRow事件,判断父表当前行是不是已经执行完毕,如果是就取消新增e.cancel=true

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


加好友 发短信
等级:幼狐 帖子:88 积分:697 威望:0 精华:0 注册:2022/10/10 15:34:00
  发帖心情 Post By:2022/12/12 14:14:00 [只看该作者]

   在子表BeforeAddDataRow事件添加如下代码:显示未将对象引用设置到对象的实例。这么短的代码,不知道怎么加messagebox调试
Dim pr As DataRow = e.DataRow.GetParentRow("父表") '
        If pr IsNot Nothing Then
            If pr("状态") = "执行完毕" Then '父表条件
                e.Cancel = True
            End If
        End If


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


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部