以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于多表数据上报的问题?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=9679)

--  作者:rcsy001
--  发布时间:2011/5/2 16:53:00
--  关于多表数据上报的问题?

看了新版帮助,里面有数据上报的帮助,感觉非常好。

帮助就单表上报说明的很清楚了,我想请教多表数据上报如何操作?。

例如:我用A,B,C三张表,A为父表(AID主键),B(BID主键)C(CID主键)为子表,表B、表C都有AID字段,通过AID与表A的AID字希关联。表A的AID为自动编号字段。

在下级单位,表A的ID应为,1,2,3。。。。表B、表C与之相关联的AID字段值,也应为1,2,3

这样,上报时,主表并入上级单位主表,AID会自动更新,问题是子表上报并入上级数据后,与之相关联的AID会自动更新吗?

这样上报的数据能行吗?

 


--  作者:狐狸爸爸
--  发布时间:2011/5/2 17:37:00
--  

先给你一个思路,随便写的,自己琢磨一下:

1、动态创建数据源,连接到要合并的文件

http://help.foxtable.com/topics/1494.htm

 

2、用SQlCommand的ExcuteReader从要合并的文件生成三个DataTable,分别为dt1和dt2和dt3

http://help.foxtable.com/topics/0696.htm

 

3、

For each dr1 as datarow in dt1.DataRows

   Dim dr2 as datarow = DataTables("表A").AddNew()

   for each dc as datarow in dt1.DataCols

        if dc.name <> "主键名称"

            dr2(dc.name) = dr1(dc.name)

        end if

   next

   dim drs2 as list(of datartow) = dt2.Select("主键名= " & dr1(主键名))

   for each dr3 as datarow in drs2

       Dim dr4 As DataRow = DAtaTables("表B").AddNew

       dr4("主键名称") = dr2(主键名称)

       for each dc as datarow in dt2.dataCols

           if dc.name <> "主键名称" then

              dr4(dc.name) = dr3(dc.name)

           end if

      next

   next