Office中国论坛/Access中国论坛

标题: 求助:多表追加查询到多表的问题 [打印本页]

作者: jackysu78    时间: 2009-3-12 17:03
标题: 求助:多表追加查询到多表的问题
表结构例子:
表1:ID,日期,单据号,客户,异动类型
表2:DETAILID,ID,商品编号,名称规格,数量,单价
表1与表2通过ID关联,一对多关系。

表3:ID,日期,单据号,客户
表4:DETAILID,ID,商品编号,名称规格,数量,单价
表3与表4通过ID关联,一对多关系。

目的与问题:
在表3(主)与表4(子)的窗体中执行追加查询,将当前记录追加到表1和表2中相对应中生成一条新的记录。

以上请高手指点!不胜感激!谢谢!
作者: jackysu78    时间: 2009-3-12 17:06
补充说明上述例子:实为通过报价单生成一份销售出库单。异动类型可通过直接赋值“销售出库”来处理。
作者: jackysu78    时间: 2009-3-12 17:55
请各位版主,论坛的精英帮忙指点一下吧。谢谢了!
作者: todaynew    时间: 2009-3-12 19:08
INSERT INTO 表1 ( ID,日期,单据号,客户)
SELECT ID,日期,单据号,客户
FROM 表3 where ID=forms!窗体名称!ID;

INSERT INTO 表2( DETAILID,ID,商品编号,名称规格,数量,单价)
SELECT DETAILID,ID,商品编号,名称规格,数量,单价
FROM 表4 where ID=forms!窗体名称!ID;
作者: jackysu78    时间: 2009-3-13 09:21
感谢你的指点!
但是我的目标是如何合并这两条追加查询语句,达到一次性执行表3与表4数据的插入,还有就是不重复插入。
谢谢!盼复!
作者: jackysu78    时间: 2009-3-13 09:42
目标大概是下面这样,但是这样通不过。
insert into (SELECT 表1.ID, 表1.日期, 表1.单据号, 表1.客户, 表1.异动类型, 表2.DETAILID, 表2.ID, 表2.商品编号, 表2.名称规格, 表2.数量, 表2.单价
FROM 表1 INNER JOIN 表2 ON 表1.ID=表2.ID) as aa
SELECT 表3.ID, 表3.日期, 表3.单据号, 表3.客户, 表4.DETAILID, 表4.ID, 表4.商品编号, 表4.名称规格, 表4.数量, 表4.单价
FROM 表3 INNER JOIN 表4 ON 表3.ID = 表4.ID;
作者: Trynew    时间: 2009-3-13 12:28
6# jackysu78
由于表1与表2是由自动编号的主键关联的一对多的关系,未插入表1的记录之前,是没有这个编号的,所以不能同时插入表1与表2,必须先插入表1,再用DMax('ID','表1')查到新生成的关键字,用这个编号插入到表2的外键ID字段中:
Private Sub Command10_Click()
CurrentDb().Execute "INSERT INTO 表1 ( 日期, 单据号, 客户, 异动类型 ) SELECT 表3.日期, 表3.单据号, 表3.客户, '销售出库' AS 异动类型 FROM 表3 WHERE 表3.ID=" & Me.[ID]
CurrentDb().Execute "INSERT INTO 表2 ( 商品编号, 名称规格, 数量, 单价, ID ) SELECT 表4.商品编号, 表4.名称规格, 表4.数量, 表4.单价, DMax('ID','表1') AS 表达式1 FROM 表4 WHERE 表4.ID=" & Me.ID
End Sub
作者: jackysu78    时间: 2009-3-13 12:44
问题已经解决!在此感谢trynew(蓝老师)的指点!
详见本人另外发表的贴。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3