为什么insert into语句不能完成添加?

gflily 2003-03-06 08:52:23
Dim inttjbh As Integer
inttjbh = rstcnn5!bh
cnn1.Execute "insert into sjyl select * from ylyysj where bh=" & inttjbh
rstcnn6.Requery
.....

注:rstcnn5对应的表是ylyysj,rstcnn6对应的表是sjyl.
上面那个sql添加语句insert为什么不起作用。我单步执行,inttjbh有值,并且表
ylyysj中确有bh=inttjbh的记录。为什么表ylyysj中的bh=inttjbh的记录添加不到
表sjyl中?那儿出错了?
...全文
198 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
springflying 2003-03-20
  • 打赏
  • 举报
回复
这个问题可以通过调试发现错误的
首先你可以在sql server 20000中的Sql Query Analyzer 中写sql语句测试
USE 所用数据库名
DECLARE @sn int --sn的类型与bh字段的类型相同,我这儿把他当作整型,当然也可以是字符型
SELECT @sn = 这个值为你想插入的那个编号的值用常数,直接从数据库找出因为这是测试
insert into sjyl select * from ylyysj where bh= @sn
如果成功,说明有可能错误是你在vb中定义的inttjbh的类型与bh字段的类型不符,或者是
inttjbh 的值不与你的bh字段的值相等,你可以在
1 Dim inttjbh As Integer
2 inttjbh = rstcnn5!bh
3 cnn1.Execute "insert into sjyl select * from ylyysj where bh=" & inttjbh
4 rstcnn6.Requery

3处设断点,看看inttjbh的值是不是与你所要插入的值相同,如果inttjbh是字符串,要注意去掉空格,这样可能会找出错误所在
gflily 2003-03-18
  • 打赏
  • 举报
回复
to fishmans:没有相同记录。主键是有。但我保证没有重复记录。
to xlyt:没有用事务。
谢谢大家。问题到现在找不出原因来。很不爽。我的要求是:
我的目的是从表ylyysj里面取出一条编号符合‘编号=inttjbh“的记录来,添加到表sjyl中去。由于我的这两个表的结构是一模一样的。并且字段多达180多个。所以我就想用
INSERT INTO target [IN externaldatabase][(field1[,field2[,...]])] SELECT [source.]field1[,field2[,...] FROM tableexpression 这种结构。并且我的表sjyl中确实没有表ylyysj的记录。
该如何是好?
gflily 2003-03-17
  • 打赏
  • 举报
回复
to springflying:我的两个表是ylyysj与sjyl,inttjbh是一个变量。我的目的是从表ylyysj里面取出一条编号符合‘编号=inttjbh“的记录来,添加到表sjyl中去。由于我的这两个表的结构是一模一样的。并且字段多达180多个。所以我就想用
INSERT INTO target [IN externaldatabase][(field1[,field2[,...]])] SELECT [source.]field1[,field2[,...] FROM tableexpression 这种结构。并且我的表sjyl中确实没有表ylyysj的记录。
fishmans 2003-03-17
  • 打赏
  • 举报
回复
有没有设主键啊同志??
会不会是有相同记录而不让添加!!
XLYT 2003-03-17
  • 打赏
  • 举报
回复
试着单独增加一条记录是否成功?
有没有在程序中用了事务处理而没有及时提交的可能?
springflying 2003-03-14
  • 打赏
  • 举报
回复
ylyysj 和 inttjbh 这两个表的结构是一样的话,那要看插入的这个纪录所在的关键字的数值在ylyysj中存不存在,如果存在当然插入失败
你可以在sql server 7.0/2000中的 Sql Query Analyzer 中写sql语句测试一下
如果有错误,它会徽给你提示信息
gflily 2003-03-11
  • 打赏
  • 举报
回复
to buff : 我的表里没有自动增加的字段。
buff 2003-03-11
  • 打赏
  • 举报
回复
你里面有有没有自动增加的字段,如果有,请你取消那个就可以!
gflily 2003-03-10
  • 打赏
  • 举报
回复
求救,谁能想出根本原因?
gflily 2003-03-09
  • 打赏
  • 举报
回复
to xks:你的方法还是不能完成添加。
我想是不是该想些关于insert into语句的使用条件,比如要用的表sjyl在添加时不能同时让另一个记录集打开,是不是应处于关闭状态才能完成添加?可是当我试着已经关闭了建立在sjyl上的所有记录集后,再用本语句还是不能完成添加。唉,怎么办?!!!谁能解决?
还想懒够 2003-03-09
  • 打赏
  • 举报
回复
我觉得怎么也是没有用refresh或者是update啊
bobob 2003-03-09
  • 打赏
  • 举报
回复
要不要用update?
xks 2003-03-08
  • 打赏
  • 举报
回复
public rs as new adodb.recordset

public cmd as new adodb.command

cmd.commandtext="inset into sjyl select * from ylyysj where ylyysj.bh="

set rs=cmd.execute
gflily 2003-03-08
  • 打赏
  • 举报
回复
to stou2000:无法规范呀!是原料的营养成份,不能少一个呀。。
to online:字段写了也不行。
to bejon:变成cstr(inttjbh)也不能完成添加
那位知道根子原因呀!!
gflily 2003-03-07
  • 打赏
  • 举报
回复
to luccy:
cnn1.Execute "insert into sjyl select * from ylyysj where ylyysj.bh=" & inttjbh
...
也不行。
to xinshou1979330:
因为sjyl与ylyysj两个表的结构完全一样,我想用不着写字段;另要是写出字段
很不好,因为我的表的字段有180多个。还有你说的那个形式是用在单纪录添加方面。
谁能想出原因何在?我想是不是cnn1不更新方面的问题?
antshome 2003-03-07
  • 打赏
  • 举报
回复
前提必须是sjyl表不存在,才可以用select * into 表
否则只能用insert into 表 (字段列表) values (值列表) 来插入数据
可以用drop table 表名 来删除表

antshome 2003-03-07
  • 打赏
  • 举报
回复
SQL吗?

"select * into sjyl from ylyysj where bh=" & inttjbh

如果bh是char型

"select * into sjyl from ylyysj where bh='" & inttjbh & "'"
xinshou1979330 2003-03-07
  • 打赏
  • 举报
回复
cnn1.Execute "insert into sjyl () 《----------这里是不是需要放入你表中的字段select * from ylyysj where bh=" & inttjbh


一般形式的添加:
insert into 表名 (字段1,字段2、、、、) values(值1,值2、、、、)

不知道这样说对不对
仅供参考

luccy 2003-03-07
  • 打赏
  • 举报
回复
cnn1.Execute "insert into sjyl select * from ylyysj where ylyysj.bh=" & inttjbh
stou2000 2003-03-07
  • 打赏
  • 举报
回复
什么表,180多个字段,应该规范一下嘛
加载更多回复(10)

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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