注册 登录
编程论坛 VB6论坛

求助 access 数据库复制整条数据库 sql 语言

colorto 发布于 2014-10-18 22:56, 563 次点击
我要求实现的目的是:要求利用sql语句实现在同一个表格中复制一整行数据到最后一行,
该表格有以下两个特点
1、行有主键,主键自动增加,
2、列标题很多
遇到的问题是 采用sql语句 sql="insert into " & Me.Name & " select * from " & Me.Name & " where 样式名称 = '" & rs.Fields("样式名称") & "'",代码的意思是在me.name表格中复制样式名称为 “参数”的行,然后粘贴到最后一行作为一条新的记录备份
总是提示“由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。”,我认为主要原因是复制整条记录 在在最后插入记录的时候 主键id号也复制了同样的id,这个时候id却没有自动增加,所以主键重复,复制插入失败,而我打开access数据库,复制整行,然后再粘贴整行的时候 主键是自己增加的,为什么用代码他就不自动增加了呢?请教高手给与指点,感谢

[ 本帖最后由 colorto 于 2014-10-18 23:03 编辑 ]
3 回复
#2
风吹过b2014-10-18 23:15
access  ,如果是自动编号的字段,不会支持写入的。

你检查,其他字段是否 不允许重复,是否建立了索引。

如果都没有,那么你复制记录时,不要把这个自动编号的字段一起复制过来试试。

没用过一条命令复制一条记录来。这机子没装 ACCESS ,没办法测试。
#3
colorto2014-10-19 13:43
回复 2 楼 风吹过 b
如果删除主键id字段程序可以顺利运行
如果一个字段一个字段的插入可以可以运行,可问题是我的字段有几十个 一个一个插入程序的效率太低,我就是想用几个简单的代码实现类似EXCEl里面复制整行,粘贴整行作为一条新的记录
#4
xzlxzlxzl2014-10-19 21:42
大致可以这样解决(假设数据集rst1、rst2均针对相同表已经打开,其中rst1已经定位到要复制的数据,代码如下

  rst2.AddNew
  For i = 0 To rst.Fields.Count - 1
     If Not rst2.Fields(i).Properties("keycolumn").Value Then rst2.Fields(i) = rst1.Fields(i)   '字段不是主键则复制到新记录中
  Next
  rst.Update     '仍然有更新失败的可能,如果字段设置了无重复属性就不能原样复制
1