以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [讨论]关联两个字段的代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107207)

--  作者:积水成渊
--  发布时间:2017/9/23 12:37:00
--  [讨论]关联两个字段的代码
这段代码是HR_人事类别对应表与HR_人事类别定义表的:类别组列与组编码列进行了关联,现在我需要HR_人事类别定义表的:类别组列与类别编码列 跟HR_人事类别对应表:组编码列与类别编码列进行关联,代码该如何修改:
Dim dt As DataTable = DataTables("HR_人事类别对应")
Dim ParentCol As DataCol
Dim ChildCol As DataCol

ParentCol = DataTables("HR_人事类别定义").DataCols("类别组")
ChildCol = DataTables("HR_人事类别对应").DataCols("组编码")
Win.FoxLib.Table.CreateRelation(ParentCol,ChildCol)

If DataTables("HR_人事类别对应").DataCols.Contains("类别编码名称") = False Then
dt.DataCols.Add("类别编码名称", Gettype(String),"Parent(HR_人事类别定义_HR_人事类别对应).类别名称")
End If
[此贴子已经被作者于2017/9/23 12:37:34编辑过]

--  作者:积水成渊
--  发布时间:2017/9/23 13:31:00
--  
顶下
--  作者:积水成渊
--  发布时间:2017/9/23 13:37:00
--  

ParentCol和ChildCol也可以是数组,这样可以通过多列创建关联,例如产品表和订单表,需要通过品名和型号两列建立关联

Dim DataCols1(1) As DataCol
Dim
DataCols2(1) As DataCol
DataCols1(
0) = DataTables("产品").DataCols("品名")
DataCols1(
1) = DataTables("产品").DataCols("型号")
DataCols2(
0) = DataTables("订单").DataCols("品名")
DataCols2(
1) = DataTables("订单").DataCols("型号")
Relations.Add(
"po", DataCols1, DataCols2)


--  作者:积水成渊
--  发布时间:2017/9/23 13:38:00
--  
找到案例了
--  作者:积水成渊
--  发布时间:2017/9/23 14:18:00
--  
能够实现要求的代码如下:
Dim DataCols2(1) As DataCol
Dim DataCols3(1) As DataCol 
DataCols2(0) = DataTables("HR_人事类别定义").DataCols("类别组")
DataCols2(1) = DataTables("HR_人事类别定义").DataCols("类别编码")

DataCols3(0) = DataTables("HR_人事类别对应").DataCols("组编码")
DataCols3(1) = DataTables("HR_人事类别对应").DataCols("类别编码")
Relations.Add("po", DataCols2, DataCols3)


If DataTables("HR_人事类别对应").DataCols.Contains("类别编码名称") = False Then
dt.DataCols.Add("类别编码名称", Gettype(String),"Parent(po).类别名称")
End If

--  作者:有点蓝
--  发布时间:2017/9/23 14:50:00
--  
还有问题么?
--  作者:积水成渊
--  发布时间:2017/9/23 15:47:00
--  
没了,感谢,有问题我再发帖