Office中国论坛/Access中国论坛

标题: 如何用追加查询自动追加编号? [打印本页]

作者: jakyky    时间: 2011-12-28 23:26
标题: 如何用追加查询自动追加编号?
如图
[attach]47827[/attach]
如何用追加查询实现这样的编号追加功能,谢谢各位大侠。

作者: Henry D. Sy    时间: 2011-12-29 01:19
传例子
作者: jakyky    时间: 2011-12-29 09:10
[attach]47831[/attach][attach]47830[/attach]

查询1怎么写,才能完成如图效果呢?
谢谢BZ~


作者: Henry D. Sy    时间: 2011-12-29 10:47
版本太高,打不开!
作者: jakyky    时间: 2011-12-29 11:06
[attach]47835[/attach]
Henry版主,

见附件。
谢谢。


作者: Henry D. Sy    时间: 2011-12-29 11:18
你库中只有一个表,哪里来表1,表2?
作者: Henry D. Sy    时间: 2011-12-29 11:44
  1. INSERT INTO tblMKCycleToMenuDetail ( MenuDetailChName, MenuDetailCode )
  2. SELECT a.MenuDetailChName, (SELECT count(*)
  3. FROM tblMKCycleToMenuDetail  b
  4. WHERE b.id<=a.id)
  5. +DMax("MenuDetailCode","tblMKCycleToMenuDetail")
  6. FROM tblMKCycleToMenuDetail a
复制代码

作者: jakyky    时间: 2011-12-29 11:46
Henry D. Sy 发表于 2011-12-29 11:18
你库中只有一个表,哪里来表1,表2?

就是把表中内容追加到本身后面,编号自动加1,用追加查询怎么做呢?

作者: jakyky    时间: 2011-12-29 12:10
Henry D. Sy 发表于 2011-12-29 11:44

谢谢 Henry版主了,学习中。
作者: jakyky    时间: 2011-12-29 13:30
Henry D. Sy 发表于 2011-12-29 11:44

Henry,这段代码只能用于全部字段复制,如果我只需要 where a.MenuToCycleCode=700001呢,这样编号就不连续了,有办法解决吗?
作者: Henry D. Sy    时间: 2011-12-29 13:38
1.把查询分两步
即按where a.MenuToCycleCode=700001先建立一个查询作为原表,然后追加到目标表
2.用ado循环追加
作者: Henry D. Sy    时间: 2011-12-29 13:49
假设新建立的查询为AA
那么AA的语句应该是
  1. SELECT tblMKCycleToMenuDetail.*
  2. FROM tblMKCycleToMenuDetail
  3. WHERE (((tblMKCycleToMenuDetail.MenuToCycleCode)=700001));
复制代码
然后,追加语句如下:
  1. INSERT INTO tblMKCycleToMenuDetail ( MenuDetailChName, MenuDetailCode )
  2. SELECT a.MenuDetailChName, (SELECT count(*)
  3. FROM tblMKCycleToMenuDetail  b
  4. WHERE b.MenuToCycleCode=700001 AND b.id<=a.id)+DMax("MenuDetailCode","tblMKCycleToMenuDetail") AS 表达式1
  5. FROM AA AS a;
复制代码

作者: Henry D. Sy    时间: 2011-12-29 13:52
当然,你想要写成一个也可以
  1. INSERT INTO tblMKCycleToMenuDetail ( MenuDetailChName, MenuToCycleCode, MenuDetailCode )
  2. SELECT a.MenuDetailChName, a.MenuToCycleCode, (
  3. SELECT count(*)
  4. FROM tblMKCycleToMenuDetail  b
  5. WHERE b.MenuToCycleCode=700001 AND b.id<=a.id)+DMax("MenuDetailCode","tblMKCycleToMenuDetail") AS 表达式1
  6. FROM [SELECT tblMKCycleToMenuDetail.*
  7. FROM tblMKCycleToMenuDetail
  8. WHERE (((tblMKCycleToMenuDetail.MenuToCycleCode)=700001))]. AS a;
复制代码

作者: jakyky    时间: 2011-12-29 14:00
Henry D. Sy 发表于 2011-12-29 13:49
假设新建立的查询为AA
那么AA的语句应该是然后,追加语句如下:

好嘞,终于解决了,灰常感谢。




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