以文本方式查看主题 - 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一起来判断是哪个项目的数据,这应当⺁可行 |