以文本方式查看主题

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

--  作者:沪上游客
--  发布时间:2019/5/28 18:33:00
--  [求助]
老师您好!
下面一段代码是在表事件BeforeSaveDataRow
If e.DataRow.IsNull("主合同编号") = False Then
    Dim pr As DataRow = e.DataRow.GetParentRow("工程合同基础数据") \'获得此应收款记录对应的主合同
    If pr IsNot Nothing Then \'如果有对应的主合同
    执行代码...

    Else
        e.Cancel = True \'那么取消保存并提示用户
        Messagebox.Show("该记录主合同编号有误,请核对修改后保存!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End if
Else
    e.Cancel = True \'那么取消保存并提示用户
    Messagebox.Show("主合同编号不能为空,请填入正确的主合同编号后保存!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If
我的“工程合同基础数据”(父表)是动态分页加载的,如果我先加载父表对应的主合同记录,上面代码没问题,但是在子表中做记录很多时候没有加载父表对应的记录,所以会出现红色的提示,而且不予保存。
请问一下老师有什么其他办法?如果每次都要加载父表数据速度会很慢,因为我的项目中设置了加载主表同时会加载所有子表记录
谢谢老师!

--  作者:沪上游客
--  发布时间:2019/5/28 18:54:00
--  
老师是不是可以用SQLFind()
Dim pr As DataRow = DataTables("工程合同基础数据").SQLFind("合同编号 =\'" & e.DataRow("主合同编号") & "\'")

--  作者:有点蓝
--  发布时间:2019/5/28 20:21:00
--  
就是用SQLFind
--  作者:沪上游客
--  发布时间:2019/5/28 20:47:00
--  
谢谢老师!