以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=161579)

--  作者:fireboy
--  发布时间:2021/3/23 10:57:00
--  求助
如果在主表行锁定的情况下,限制子表不能增加行,

目前在beforeAddDataRow事件中加入代码如下

If e.DataRow.getparentrow("甲供领料单").Locked =True
 e.DataTable.AllowAddNew = False

End If

运行时出错:提示如下:

图片点击可在新窗口打开查看
后,还是可以增加新行



--  作者:有点蓝
--  发布时间:2021/3/23 11:03:00
--  
新增的行还没有值,所以getparentrow肯定都是空的。

只能这样

dim r as row = tabels("父表名称").current
if r is nothing orelse r.Locked =True
    e.Cancel = True
End If

--  作者:fireboy
--  发布时间:2021/3/23 11:19:00
--  
不行呀,新增的行没有值,但是getparentrow肯定不是空的呀。
--  作者:有点蓝
--  发布时间:2021/3/23 11:22:00
--  
是不是空的,自己测试看看

dim r as datarow = e.DataRow.getparentrow("甲供领料单")
msgbox(r is nothing)

--  作者:fireboy
--  发布时间:2021/3/23 11:26:00
--  
求助!
图片点击可在新窗口打开查看此主题相关图片如下:snipaste_2021-03-23_11-22-44.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2021/3/23 11:27:00
--  
看2楼
--  作者:fireboy
--  发布时间:2021/3/23 11:38:00
--  
现在我在datarowadding事件中加入如下代码:
Dim r As DataRow = e.DataRow.getparentrow("甲供领料单")
If r Is Nothing Or r.Locked =False
    e.Cancel = True
End If

在增加行时,显示错误:
调用的目标发生了异常。
未将对象引用设置到对象的实例。

--  作者:有点蓝
--  发布时间:2021/3/23 11:47:00
--  
If r Is Nothing Orelse r.Locked =False
--  作者:fireboy
--  发布时间:2021/3/23 11:52:00
--  
图片点击可在新窗口打开查看
运行不出错了,但是还是增加了一行,没有取消操作呀

--  作者:有点蓝
--  发布时间:2021/3/23 12:01:00
--  
DataRowAdding没有取消功能。另外DataRowAdding的行肯定也不会有getparentrow的父表行。

只能是2楼的方式判断,或者自己做个新增按钮替代菜单的新增功能