以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于导入项目数据的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=61203)

--  作者:chnfo
--  发布时间:2014/12/8 21:30:00
--  [求助]关于导入项目数据的问题
现在用ACCESS做数据库,而且主键用的是自动增加的数字列(假定为ID)
因为数据库有多个表,而且很多表都有关联。

现在的问题是,因为两个项目分离两地,而且都是局域网相对独立应用(但数据库结构是一样的),所以都有自已的数据。
现在想把这两个项目的数据合并起来,出现了一个问题 ,因为如果直接原样复制进去,肯定是不行的,因为主键不会重复,而关联的就有问题了。
比如AB两个表,B通过AID与A关联。
现在先合并A表,ID会自动增长,但B表中的AID的值还是原来的?

如何是好呢?

--  作者:有点甜
--  发布时间:2014/12/8 21:32:00
--  
 那关联字段,就不要弄成id。另外弄一个列作为关联字段。
--  作者:chnfo
--  发布时间:2014/12/9 8:50:00
--  
问题是用另外一列,那另外一列就起到ID的作用,就存在它如何编号的问题,如何在网络条件下保证编号唯一的问题,如果用自定义编号则访问速度慢的问题。实际测试,用自定义编号,复制200行的表,生成编号至少70秒,可称龟速。如果导入的表数据有上万行,岂不得睡个觉?
--  作者:有点甜
--  发布时间:2014/12/9 9:02:00
--  

 你可以编写代码,此列的数据等 项目N+ID 组合生成。

 

 这样就能区别不同的项目了


--  作者:chnfo
--  发布时间:2014/12/9 9:22:00
--  
这样不行吧。 项目编号是唯一的。假设命名为P1,P2 分别有AB两表,都以自增为主键。 A表字段ID,sysid(项目编号+ID) B表字段ID,sysid(项目编号+ID) ,AID(关联A表的sysid) 甜兄是这意思?
--  作者:有点甜
--  发布时间:2014/12/9 9:39:00
--  

 是的,固定的 项目编号+ID


--  作者:chnfo
--  发布时间:2014/12/9 10:32:00
--  
那合并其它项目的sysid就不等于项目编号+id了。另外,如果用户修改项目编号,那才是痛苦之至啊
--  作者:有点甜
--  发布时间:2014/12/9 10:35:00
--  
 每个地方固定一个项目编号啊,比如 项目1 啊
--  作者:chnfo
--  发布时间:2014/12/9 10:52:00
--  
那就不用那么麻烦吧,直接用一个ID=identify,再加上项目编号来识别就好了嘛
--  作者:chnfo
--  发布时间:2014/12/9 11:37:00
--  
这样应当可以。用identify作主键,设一列名为id,在datarowadding事件中让id=identify,导入数据肘写原来的id而不让它等于identify,再结合项目id一起来判断是哪个项目的数据,这应当⺁可行