Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]ACCESS 与 ACCESS之间的导入

木行之  发表于:2012-03-06 17:25:55  
复制

用ACCESS 建立了一个数据库。(各部门用的数据库结构相同)

 

但数据录入数据 在下面各个部门,这些部门分散在各地。

 

每月每个部门报上来了ACCESS库,如何把他们库里的信息导进来?

 

数据库主要表有:

1、部门情况表:部门ID、部门名称  联系人 等等

2、人员情况表:部门ID、身份证号、姓名 性别 等

3、人员履历表:履历ID、身份证号、岗位级别 任职时间 等

 

1对2,是一对多关系。

2对三,是一对多关系。

 

谢谢了。

 

 

 

Top
木行之 发表于:2012-03-06 17:29:21
要求导入时,根据  部门ID 判断,如果 部门ID相同,则 删除接收库里 相同 部门ID的一切数据(已经级联删除),然后接收 新数据。

浪淘沙 发表于:2012-03-06 20:02:54

我琢磨的思路如下

1.把总部数据库和分部数据库的3张表命名加以区分命名,目的是链接表的时候命名不会因重名而冲突。

2.手工链接或更新链接3张表也不算麻烦,追求智能自动化可以用VBA启动操作链接,具体可以参考坛子内的大师有关自动链接表的作品研究一下。

3.对两套部门表进行比较,对照分部表的部门ID,删除总部表有关的数据,然后导入分部的新数据,这部分用SQL语句就可以解决。



煮茶论道 发表于:2012-03-06 20:24:05
我的思路先弄三张临时表,到数据导入临时表中,后再用临时表更新表中库记录。我看这个思路可行。

木行之 发表于:2012-03-06 21:38:46
关键是下名有几十个部门。如果几个部门的话,应该手工就行了。
因为建立关系已经级联删除了。删除,再复制,粘贴,很简单。
但部门多了,就容易出错。也比较麻烦。

这应该是一个同构数据库的合并问题。

我的思路是这样的:

1、接收库 在接收时,分别判断导入库中的 身份证号、部门ID ,如果 接收库 中有相同ID,就删除相关数据。(注意,先判断身份证号,防止有人员部门调动,造成身份证号重复无法导入)
2、删除原数据后,再导入数据。

但代码如何写,是个问题。

chinasa 发表于:2012-03-07 11:25:17
感觉使用查询就可以了,应该不用什么代码。不过还是要看过你的数据库。你最好弄个例子上来,大伙也好帮你看看。

浪淘沙 发表于:2012-03-07 12:37:49

接着我上面的思路,部门文件库统一命名,表也统一命名,第一次链接指定路径的部门文件库表,以后就不用链接了,因为主库里的链接路径已经有了,以后只要把统一命名的不同部门的文件库放到指定的路径文件夹,打开主库操作界面,点击功能按钮就可以一键搞定更新了。

按钮事件里需要写一组执行SQL语句,对两组表(主库表和链接表)对比操作更新。不外乎docmd.runsql  "delete ......;/"insert ito......或者"update...........等,代码应该不太复杂,具体如何对比操作只能根据你的数据来定,耐心些一步步过滤好操作好,一句解决不了或者嵌套查询有难度,就先建中间查询视图,三张表的活不算多。

有没有级联删除都没太大影响的,有级联删除可能删除数据时省事些,只要对主表操作就可以,没有的话需要对每个表操作。不过导入新数据时还是需要对每张表操作的,根据里面的数据逻辑关系决定如何操作表的先后次序。

水平有限,仅供参考,祝你成功!

 



浪淘沙 发表于:2012-03-07 12:53:27

由于更新的不同步可能导致身份证号重复起冲突,是否可以考虑在主库表里设置允许人员跨部门,反正等操作到另外那个部门数据时,也是会在该部门中自动删除该人员并导入最新的人事名册。



木行之 发表于:2012-03-07 18:32:49

谢谢。

网上找了一个免费的同构ACCESS数据合并软件,解决了这个问题了。

感谢大家的帮助。



总记录:8篇  页次:1/1 9 1 :