数据库表temp: ID(primary key) name CID ...............
12365 A 00001
67133 A 00002正常来说两条记录不会产生约束条件
但在delphi中出现这种情况(注:采用ODAC控件):
.................
Orasession1.Connect;
with OraQuery1 do
begin
close;
SQL.Clear;
SQL.Text:='select * from temp order by CID';
open;
First;
IDNo:=24000
while not Eof do
begin
yhm:=fieldbyname('CID').AsString;
with OraSQL1 do
begin
SQL.Clear;
SQL.Text:='update temp set ID='+inttostr(strtoint(IDNO)+1)+' where CID='+yhm;
execute; -------------当更新ID=67133这条记录时候此处出现违反约束条件错误???
end;
end;
................搞了大半天搞不懂为什么会出现这个错误,
(1)用select * from temp where CID=00002 查看只有一条记录
(2)如果用SQL语句更新就可以。
不晓得么子原因
求助各位大侠高手,同时祝大家新年快乐,MONEY多多!!:)
12365 A 00001
67133 A 00002正常来说两条记录不会产生约束条件
但在delphi中出现这种情况(注:采用ODAC控件):
.................
Orasession1.Connect;
with OraQuery1 do
begin
close;
SQL.Clear;
SQL.Text:='select * from temp order by CID';
open;
First;
IDNo:=24000
while not Eof do
begin
yhm:=fieldbyname('CID').AsString;
with OraSQL1 do
begin
SQL.Clear;
SQL.Text:='update temp set ID='+inttostr(strtoint(IDNO)+1)+' where CID='+yhm;
execute; -------------当更新ID=67133这条记录时候此处出现违反约束条件错误???
end;
end;
................搞了大半天搞不懂为什么会出现这个错误,
(1)用select * from temp where CID=00002 查看只有一条记录
(2)如果用SQL语句更新就可以。
不晓得么子原因
求助各位大侠高手,同时祝大家新年快乐,MONEY多多!!:)
解决方案 »
- Invoke 类型转换错误
- 这个查询怎么写
- 获取特定位置的字符串
- 窗體顯示問題:兩個窗體Form1和Form2,設置其窗體的FormStyle為fsStayOnTop,或者給窗體發消息為何不能使窗體保持最前?
- 两个有关网络编程的问题,有初步的想法,但寻求更好的解决方案,见内。若能有满意答复,分你要多少给多少:)
- 怎么实现edit框打回车,就自动触发提交事件?
- 我把ADOQUERY 中数据读到CHECKLISTBOX中怎么出错呢?
- 各位,delphi 中用这个SDK,SEC_WINNT_AUTH_IDENTITY 要引用哪个Pas?
- 关于adoquery的问题,在线等!
- 有一个小程序(做实验报告时用),编译时无错误,运行不了,因为出现错误...
- 关于EDIT控件获得焦点的问题,请帮忙解答
- ★IdTCPClient的什么属性可以检测自己的连接状态??
inttostr(strtoint(IDNO)+1)
------->
这个是怎么回事?idno到底是什么类型? while not Eof do
begin
yhm:=fieldbyname('CID').AsString;
with OraSQL1 do
begin
SQL.Clear;
SQL.Text:='update temp set ID='+inttostr(strtoint(IDNO)+1)+' where CID='+yhm;
execute; -------------当更新ID=67133这条记录时候此处出现违反约束条件错误???
end;
next; //-------->你少了这个!!!!!!!
end;
这只是伪码,
程序专用有next;
我忘记写上去了!
sorry
Orasession1.Connect;
with OraQuery1 do
begin
close;
SQL.Clear;
SQL.Text:='select ID,CID from temp order by CID';
open;
First;
....................
就不会出错了!!!!!!!!
SQL explorer中primary key中指定的主键或者唯一约束条件只有ID这一个
IDNO=24000是初始化参数,没有在循环里面
循环里面的IDNO是递增的!!!