设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2796|回复: 13
打印 上一主题 下一主题

[查询] [讨论]如何在新增表查询中直接增加自动编号列

[复制链接]
跳转到指定楼层
1#
发表于 2005-3-29 02:52:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在SQL SEVER中,使用select id=identity(int,1,1),a.* into aaa from table这样的新增表查询可以在临时表aaa中增加一个自动编号列。请问在ACCESS中有没有这样的功能?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-3-29 05:22:00 | 只看该作者
好像没有直接的方法,我是这样来完成的:1、删除临时表。2、建立临时表(带自动编号的)3、运行追加查询。例:DoCmd.SetWarnings False

DoCmd.DeleteObject acTable, "tmp"

DoCmd.RunSQL "CREATE TABLE tmp ([ID] AUTOINCREMENT, [名字] text,PRIMARY KEY ([ID]));"

DoCmd.RunSQL "INSERT INTO tmp ( 名字 ) SELECT 姓名 FROM 表1;"

DoCmd.SetWarnings False

DoCmd.OpenTable "tmp"
3#
 楼主| 发表于 2005-3-29 07:05:00 | 只看该作者
看来在ACCESS里面真的不支持SQL SERVER里直接增加的功能了~~~~~有点不死心啊~~~~~
4#
发表于 2005-3-29 18:11:00 | 只看该作者
我有一個笨方法, 寫個函數

dim ac as long



Function identity(b As variant) As Long

Static tm As Date

If Now - tm <> 0 Then ac = 0

tm = Now

ac = 1 + ac

identity = ac

End Function

查詢中用 Select a,b,c, identity([a]) as d from tableA即可

[此贴子已经被作者于2005-3-29 12:06:07编辑过]

5#
 楼主| 发表于 2005-3-30 05:52:00 | 只看该作者
楼上的想法虽然不错,但是一旦在新表中增加记录,其编号就不会自动产生了~~~~~

而且测试后发现,你的那个自定义函数好像得出的结果都是1,而不是递增的数字。改用如下代码测试通过:

Function identity(b As Variant) As Long

Static ac As Integer

If IsNull(ac) Then ac = 0

ac = 1 + ac

identity = ac

End Function

[此贴子已经被作者于2005-3-29 22:10:18编辑过]

6#
发表于 2005-3-30 19:18:00 | 只看该作者
能否给个示例瞅瞅,多谢!
7#
发表于 2005-3-30 19:51:00 | 只看该作者
俺试用的结果,可能是从3开始排序,也可能是5 。每次打开查询,序号都有可能有变。新增记录,序号的排序就更乱了。
8#
发表于 2005-3-31 00:27:00 | 只看该作者
请 瞅瞅俺写的错在哪里,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
9#
 楼主| 发表于 2005-3-31 05:25:00 | 只看该作者
我用的是生成表查询测试的,如果用选择查询,生成的序号会随点击变动。
10#
发表于 2005-3-31 18:24:00 | 只看该作者
有否办法在查询中实现自动编号的功能?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-4 14:59 , Processed in 0.086930 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表