以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]父表行锁定,则关联子表不能新增数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=34873)

--  作者:alangoon
--  发布时间:2013/6/18 11:23:00
--  [求助]父表行锁定,则关联子表不能新增数据

各位专家好!

 

我在关联子表的 BeforeAddDataRow 事件中输入代码, 希望在新增数据时: 如果父表的相关行锁定的话则不能新增.

代码如下:

 

Dim pr As DataRow = e.DataRow.GetParentRow("父表")
If pr.Locked = True Then
    e.Cancel = True
End If

运行中报错.

请教一下, 是哪里错了?

谢了!


--  作者:Bin
--  发布时间:2013/6/18 11:28:00
--  
报什么错?
--  作者:alangoon
--  发布时间:2013/6/18 11:31:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:报错.jpg
图片点击可在新窗口打开查看

--  作者:alangoon
--  发布时间:2013/6/18 11:32:00
--  
不知道是不是E参数的问题,因为下面看起来好像只有两个参数:Datatable和Cancel
--  作者:狐狸爸爸
--  发布时间:2013/6/18 11:35:00
--  

可能有的行没有父行,所以你得判断一下:

 

Dim pr As DataRow = e.DataRow.GetParentRow("父表")

if pr Isnot Nothing Then
    If pr.Locked = True Then
        e.Cancel = True
    End If

End If


--  作者:alangoon
--  发布时间:2013/6/18 11:39:00
--  

看起来我的代码应该没有问题,加了判断后依然出错,难道是系统Bug?


图片点击可在新窗口打开查看此主题相关图片如下:baocuo1.jpg
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2013/6/18 11:41:00
--  
上例子
--  作者:狐狸爸爸
--  发布时间:2013/6/18 11:42:00
--  

你设置在BeforeAddDataRow事件,那么出错是肯定的,这个事件是增加行前执行,e.dataRow是没有值的。

 

Dim pr As Row = Tables("父表").Current
if pr Isnot Nothing Then
    If pr.Locked = True Then
        e.Cancel = True
    End If
End If

你看看这个事件的说明:

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

 


--  作者:alangoon
--  发布时间:2013/6/18 11:47:00
--  
原来是这样. 多谢指导.