数据库记录插入求助!!(50分)

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

shyjack

Unregistered / Unconfirmed
GUEST, unregistred user!
我想向一个数据库插入一条记录,
但是执行时,老是出现
key violation
的错误提示,
还请各位多多帮忙,小弟实在是头都大了。
 
关键字重复
 
主要是注意你的关键字的定义,问题的原因就是关键字重复,也就是
两个记录的关键字段值一样,数据库不容许你插入记录
 
关键字重复
需要:
Try
post;
except
cancel;
end;
 
多谢各位提醒!
 
为了不让关键字重复,我用如下的语句:
if not table1.FindKey([edit1.text])
then
begin
table1.edit;
table1.InsertRecord([edit1.text,edit2.text]);
table1.Post;
end;
(注:edit1.text对应table1指向的数据库的关键字)
但是,运行时出现 table:dataset not in edit or insert mode
还请各位多多指点。小弟先谢过了!
 
不用事先查,直接Post,截获错误及可
 
很简单

table1.edit;
if not table1.FindKey([edit1.text])
then
begin

table1.InsertRecord([edit1.text,edit2.text]);
table1.Post;
end
 
直接post就行了,
try
table1.post;
except
messagedlg('数据重复!');
abort;
end;
 
基本同意fstao 意见,不过Post 失败不仅仅是键值重复的问题,可能还有别的问题,
个人觉得最好在Table的Onposterror 事件中处理:

procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
if E.Message='Key violation.' then
showmessage('键值重复') {如果键值冲突,显示键值重复}
else
showmessage(e.message); {否则,读出错误信息码}
Abort;

end;

 
接受答案了.
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
S
回复
0
查看
765
SUNSTONE的Delphi笔记
S
后退
顶部