Access交流中心

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

如何实现两个相同结构的表间记录的自动转移

白桦林  发表于:2011-08-30 19:10:26  
复制

我的ACCESS中有两个结构完全相同的表:表1(未成年)和表2(成年)

其中都有字段[出生日期]

如何实现在我打开该数据库时,根据系统日期判断表1中的人是否满18岁;如何满18岁,将表1中的满18岁的人的记录字段复制到表2中,同时删除表1中的该记录。

 

Top
网行者 发表于:2011-08-30 20:05:45
传个附件吧

白桦林 发表于:2011-08-30 21:17:38

点击下载此附件

如附件中

表1中的第三、第四条记录中的人截止今天(2011-8-30)已满18周岁。

我想实现的是在打开这个附件的时侯,能自动实现将表1中的第三、第四条记录复制到表2中去;

同时将表1中的这两条记录删除。



刚子 发表于:2011-08-31 00:03:35

1:年龄  [选择查询]

SELECT 表1(未成年).id, 表1(未成年).姓名, 表1(未成年).出生日期, IIf(Month(Date())-Month([出生日期])>-1,Year(Date())-Year([出生日期]),Year(Date())-Year([出生日期])-1) AS 年龄
FROM 表1(未成年);

2:追加记录18岁以上  [追加查询]

INSERT INTO 表2(成年) ( id, 姓名, 出生日期 )
SELECT 年龄.id, 年龄.姓名, 年龄.出生日期
FROM 年龄
WHERE (((年龄.年龄)>=18));
3:删除记录18岁以上  [删除查询]

DELETE 年龄.id, 年龄.姓名, 年龄.出生日期, 年龄.年龄
FROM 年龄
WHERE (((年龄.年龄)>=18));

4:再用宏 openquery依次打开[追加查询]和[删除查询]  就OK了 

点击下载此附件

白桦林 发表于:2011-09-03 22:22:45

三楼给的方法能实现

但有点复杂

我想开启这个库时就自动转移

或者能一键转移

哪位高手能帮我实现~!!



都市侠影 发表于:2011-09-04 07:58:47

编写一个公共过程,在过程中用SQL语言或者ADO的记录集实现你要在功能。

1、如果你想开启数据库时自动转移,就在启动窗体在加载事中调用这个公共过程。

2、如果你想一键转移,就在某窗体的某按键的单击事件中调用此公共过程。



符鸿敏 发表于:2011-09-04 20:24:56

三楼的方法是设计过程有点复杂,但用起来挺简单,可以按四楼所说,就能实现开启这个库时,就自动转移,或者能一键转移。

不过,依我之见,本来就不需要设置两个这样的表,只需要一个表足矣!如果需要相应的数据,完全通过查询而获得的。



网行者 发表于:2011-09-04 21:23:49

同意6楼,做成一个表,再建两个查询分别查询成年与未成年即可

 

点击下载此附件

煮江品茶 发表于:2011-09-05 14:11:06

可按符鸿敏同志意见办。写一个查询即可:

select *,DateDiff("yyyy",出生日期,Date())>18 as 成年否 from tbname



刚子 发表于:2011-09-05 15:26:02

过程复杂是为了更好了理解!!



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