以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  父子表同步加载有多个关联列时怎么办?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=42961)

--  作者:zpx_2012
--  发布时间:2013/11/27 10:34:00
--  父子表同步加载有多个关联列时怎么办?

父表与子表同步加载

要完成这样的任务很简单,只需在订单表的AfterLoad事件中加入以下代码即可:

If DataTables("订单").DataRows.Count = 0 Then \'如果订单表没有数据
DataTables(
"订单明细").LoadFilter = "订单ID Is Null" \'不加载订单明细
Else
Dim
ids As String
For Each
dr As DataRow In DataTables("订单").DataRows
ids = ids & "," & dr("订单ID")
Next
ids= ids.Trim(",")
DataTables(
"订单明细").LoadFilter = "订单ID In (" & ids & ")"
End If
DataTables(
"订单明细").Load()



当主表可能有多个关联列时,并且关联列的数据类型可能不一样。此时想用数组来累加生成加载条件,但下面红色部分不知怎么写?


  Dim Recols As String = “订单ID,产品编号”

  For Each dr In DataTables(e.DataTable.name).DataRows

     dim rec() as string = Recols.split(",")

     For i As Integer = 0 To  rec().Length - 1

         ids = ids & ",\'" & dr(Rcol) & "\'"  ‘这里应该是多维数组累计,或者可以用两个集合吗?

     Next

  Next


谢谢!


--  作者:Bin
--  发布时间:2013/11/27 10:39:00
--  
多个关联列就异常麻烦了,其实我搞不懂你们为什么要用多个关联列,一个唯一标识关联列不知道多好

多个关联列就要用下面这种格式了

"(第一列=\'abc\' and 第二列=\'a123\') or (第一列=\'abd\' and 第二列=\'a124\') or (第一列=\'abe\' and 第二列=\'a125\')"

--  作者:zpx_2012
--  发布时间:2013/11/27 10:55:00
--  
谢谢BIN,那样确实太麻烦了,主要是窗口中有三个表,比如主表是生产单,子表是生产单的工序明细(通过生产单号与主表关联), 工序明细还有一个子表是工序物料明细(其通过生产单号,工序号两列与工序明细表关联)
现在就是想加载主表生产单时同步加载其下的工序明细及每个工序明细下面的物料明细表。你的意思是工序明细和物料明细另外设置一个只有一列的不相关的关联列吗

--  作者:Bin
--  发布时间:2013/11/27 11:00:00
--  
设置一个唯一的标识列作为关联即可.