小妹的毕业设计眼看就要交了,可是一个问题始终解决不了。问了好几个师兄都没没辙。情急之下,只好来这里求教高人。问题简述如下:delphi和oracle之间采用BDE连接。对于oracle下的表ziliao进行删除操作。控件是
datasoure,table,一个edit1,用于输入想删除的记录的名字,一个button按钮。
单击button,加入代码procedure TForm1.Button1Click(Sender: TObject);
begin
with table1 do
begin
indexfieldnames:='article_name';
if findkey([edit1.text])then
begin
if messagedlg('你确定要删除这条记录么',mtconfirmation,[mbyes,mbno],0)=mryes then delete;
end
else
messagedlg('没有找到该纪录',mterror,[mbcancel],0);
end;
end;程序运行后,在edit1中输入想删除的文章的名字,点击按钮弹出“你确定要删除这条记录么”的box,至此都正确,可是当点击确定按钮后,即报错:prject delproject1.exe raised exception class EAccessViolation with message'Access violation at address 4DAO64AD in module 'IDODBC32.DLL'.Read of address 00000014'.若后台数据库不用oracle,譬如以delphi自带的DBDEMOS,同样的程序,运行起来就没有问题。初步怀疑是BDE的问题,要不就是我的电脑太烂了?求教,求教,再解决不了,真要郁闷死了!
datasoure,table,一个edit1,用于输入想删除的记录的名字,一个button按钮。
单击button,加入代码procedure TForm1.Button1Click(Sender: TObject);
begin
with table1 do
begin
indexfieldnames:='article_name';
if findkey([edit1.text])then
begin
if messagedlg('你确定要删除这条记录么',mtconfirmation,[mbyes,mbno],0)=mryes then delete;
end
else
messagedlg('没有找到该纪录',mterror,[mbcancel],0);
end;
end;程序运行后,在edit1中输入想删除的文章的名字,点击按钮弹出“你确定要删除这条记录么”的box,至此都正确,可是当点击确定按钮后,即报错:prject delproject1.exe raised exception class EAccessViolation with message'Access violation at address 4DAO64AD in module 'IDODBC32.DLL'.Read of address 00000014'.若后台数据库不用oracle,譬如以delphi自带的DBDEMOS,同样的程序,运行起来就没有问题。初步怀疑是BDE的问题,要不就是我的电脑太烂了?求教,求教,再解决不了,真要郁闷死了!
findkey([edit1.text])
改用
table.locate('article_name',edit1.text,[]);
运行一下哎 我有一个MM的毕业设计还没解决呢
一个是用findkey方法,应该用locate更加好,因为locate可以定位到查找到的记录,所以删除
的一定是所需要的记录。还有,table.active 应该设为true, 你也可以加入一个判定条件试试:
begin
with table1 do
begin
table1.active:=true;
if locate('article_name',[edit1.text],[])=true then
begin
if messagedlg('你确定要删除这条记录么',mtconfirmation,[mbyes,mbno],0)=mryes then delete;
end
else
messagedlg('没有找到该纪录',mterror,[mbcancel],0);
end;
end;