用ADOQuery在表1中搜索记录存到表2的问题.

meCAD 2003-03-13 02:53:25
Access2000
表2的格式如下:
租单号 : 文本
影碟编号: 文本 //主键
影碟片名或别名: 文本
...
...

表1如下:
状态 : 文本
编号 : 自动编号 //主键
片名
...
想实现功能.在表datum里面查找片名为'射雕英雄传'的片字.取字段 编号,片名这两段存入表out
写的SQL语句是:Insert into 表2(影碟编号,影碟片名或别名) Select distinct 编号,片名 From 表1 Where 片名 = '射雕英雄传'

出错提示为:由于在索引,主关键字,或关系中创建重复的值,请求对表的改变没有成功,改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许 重复的值并再试一次

怎么解决?跟我的主键有关吗?
...全文
28 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangzongqiang 2003-06-13
  • 打赏
  • 举报
回复
主键PK绝对不允许重复,故可以另外设一个字段为PK,让他自动编号即可
snla 2003-03-13
  • 打赏
  • 举报
回复
如果你的租单号不重复,可以把它设为主键

回复:
(我弄了个自动编号的字段.然后把他隐藏在执行那段代码.
ADOQuery1: CommandText does not return a result set.
查看了一下数据库.发现已经增了条记录了.当DBGrid里面没显示出来)
隐藏在哪?能返回记录?
数据库里记录多了你的取出来呀,要不dbgrid怎么显示出来!
meCAD 2003-03-13
  • 打赏
  • 举报
回复
insert into targetTable(field11,field22) select field1,field2 from sourceTable

Insert into 表2(影碟编号,影碟片名或别名) Select 编号,片名 From 表1 Where 片名 = '射雕英雄传'

我已经这样写了呀.问题是我的表存在着主键的问题.怎么解决呢?
我该设哪个 为主键呢?不设行吗?
meCAD 2003-03-13
  • 打赏
  • 举报
回复
我的租单号是有重复的.可以设其他的为主键吗?
lifuming 2003-03-13
  • 打赏
  • 举报
回复
select field1,field2 into targetTable from sourceTable where condision

这样就可以通过查询sourceTable中满足条件的记录写入到targetTable这个新表里面,注意这是会创建一个新表的,如果有一个表的结构(指的是字段与sourceTable中的field1和field2)相同那也可以通过下面这条语句写入到已存在的表中:

insert into targetTable(field11,field22) select field1,field2 from sourceTable
meCAD 2003-03-13
  • 打赏
  • 举报
回复
还弄不好.
zjt20 2003-03-13
  • 打赏
  • 举报
回复
Insert into 表2(影碟编号,影碟片名或别名)values(Select distinct 编号,片名 From 表1 Where 片名 = '射雕英雄传')
snla 2003-03-13
  • 打赏
  • 举报
回复
你应该把表二的影碟编号取消主键
因为你同一个碟子不可能只租出去一次,主键是不允许有重复的,所以当你再插入和原来的影碟编号相同的纪录时,会报错
如果你的租单号不重复,可以把它设为主键
meCAD 2003-03-13
  • 打赏
  • 举报
回复
顺便解释一下主键.

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧