Oracle7.3中的数据为何只能增加不能删除修改?(200分)

  • 主题发起人 主题发起人 sqwc
  • 开始时间 开始时间
S

sqwc

Unregistered / Unconfirmed
GUEST, unregistred user!
用Oracle7.3做数据库,Delphi4做前端工具时,
使用Query1做dataset,利用了updatesql,database,除以下设置及数据库别名及口令外,其他属性都采用缺省值,运行后发现只能增加,删除修改记录时出现 "update failed"错误信息,请指教!!!Thanks!


设置如下:
Object query1:Tquery1
cachedupdated=true
updateobject=updatesql1
end

//按button2后出现 "update failed"错误信息
procedure TForm1.Button2Click(Sender: TObject);
begin

with Query1 do
begin
Database1.StartTransaction;
try
ApplyUpdates; {try to write the updates to the database};
Database1.Commit; {on success, commit the changes};
except
Database1.Rollback; {on failure, undo the changes};
raise; {raise the exception to prevent a call to CommitUpdates!}
end;
CommitUpdates; {on success, clear the cache}
end;
end;

procedure TForm1.Query1UpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
begin

//updatekink:=ukmodify;
UpdateSQL1.Apply(UpdateKind);
dataset:=query1;
UpdateAction := uaApplied;

end;

 
RequestLive := true?
 
eyes可不可以解释一下为什么REQUESTLIVE:=TRUE就不行?
 
???
我是指将query.requestlive置成true试试.
另外: oracle 7.3是否支持嵌套的transection?
因为database.applyupdates中有一个starttransection;try...except rollback;了.
您在applyupdates外再加个starttransection......
 
去掉其中的任意一个transection都不行,请各位继续努力,我再加100分!
 
请检查数据库的字段是否一致,我的意思是程序中引用的字段名称是否与数据库实际
字段名称是否一致,我以前碰到过类似问题.改过来后就好了.
 
我刚刚试了,成功了。不过我没有利用UpdateSQL和只用Oracle8.04。
有两个方法:
第一:
添加Database1,把Query1的query1.requestlive置成true,在query1的
AfterPost和afterDelete里添加:
Datababase1.ApplyUpdates([]);
添加Button1、Button2和Button3,分别执行语句为:query1.append、
query1.post和query1.delete。你试一试修改和删除。
第二,去掉query1的AfterPost事件,把Button2的事件的内容改为:
with Query1 do
begin
Database1.StartTransaction;
try
ApplyUpdates;
Database1.Commit;
except
Database1.Rollback;
raise;
end;
CommitUpdates;
end;
再把button3改为:
query1.delete;
with Query1 do
begin
Database1.StartTransaction;
try
ApplyUpdates;
Database1.Commit;
except
Database1.Rollback;
raise;
end;
CommitUpdates;
end;
你再试一试

 
in oracle you must commit your changes.
 
多人接受答案了。
 
如果将一条记录中所有数据字段都赋值,则能修改和删除该条记录,
若某一条记录中有一个数据字段为空,则不能修改和删除该条记录。
 
后退
顶部