以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  定位父表的记录出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=68281)

--  作者:瞩望星空
--  发布时间:2015/5/14 8:34:00
--  定位父表的记录出错
想通过订单明细表的行,定位到订单主表的行,这样写,提示出错:
---------------------------
版本:2014.11.11.1
---------------------------
代码执行出错,错误信息:
System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 Foxtable.DataRow.GetParentRow(String ParentTableName)
   在 UserCode.Test()


代码如下:
Dim dr As DataRow = DataTables("订单明细表").SQLfind("客户订单号 = \'20150408\'")   \'20150408为已存在的客户订单号
If dr IsNot Nothing Then
    Dim pr As DataRow = dr.GetParentrow("订单主表")
Else
    MessageBox.Show("没有找到该订单号")
End If

--  作者:Bin
--  发布时间:2015/5/14 8:37:00
--  
错误代码应该不是这里. 这个代码没问题.具体请上例子看看
--  作者:Bin
--  发布时间:2015/5/14 8:38:00
--  
也有可能是  SQLFIND的行.无法GetParentrow  因为是后台单独加载的行.
--  作者:瞩望星空
--  发布时间:2015/5/14 8:54:00
--  
很可能是通过SQLFIND找到行,没有加载表。
本人不知道如何再加些代码去定位父表记录了,请版主帮助看看:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:父表记录.zip



--  作者:Bin
--  发布时间:2015/5/14 9:01:00
--  
用SQLSelect http://www.foxtable.com/help/topics/2900.htm 

不要用 GetParentrow

--  作者:大红袍
--  发布时间:2015/5/14 9:09:00
--  

Dim pr As DataRow = dr.GetParentrow("订单主表")

 

这句代码改成也用sqlFind

 

Dim pr As DataRow = DataTables("订单主表").SQLfind("订单号 = \'" & dr("订单号") & "\'")


--  作者:瞩望星空
--  发布时间:2015/5/14 9:09:00
--  
SQLSelect也不合适,实际项目中,“订单客户”只存在于“订单主表”中。
我可能要去改改查询方式,通过查询“订单主表”的客户订单号,先求得“订单客户”,再处理其他事情。

谢谢版主!

--  作者:Bin
--  发布时间:2015/5/14 9:11:00
--  
看6楼. 用SQLFIND . 刚才没看准以为获取子表.
--  作者:瞩望星空
--  发布时间:2015/5/14 9:26:00
--  
嗯,6楼正解,我现在项目中也改成这样了。
谢谢二位版主!