为什么会出现这样的错误?(10分)

  • 主题发起人 新手入门
  • 开始时间

新手入门

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
x:integer;
begin
begin
table1.active:=true;
x :=1;
while x=1 do
begin
table1.append;
table1.FieldByName('bm').Asstring:=edit1.text;
table1.fieldbyname('xm').asstring:=edit2.text;
table1.fieldbyname('rq').asdatetime:=data.date;
Table1.post;

end;
if messagedlg('是否继续添加数据吗?',mtconfirmation,mbyesnocancel,0)=mryes then

continue
else
break;

end;
showmessage('谢谢指点');
end;

编译运行后出错提示为:project project1.exe raised cexeption class edbengineError whit message
'Key violation,',process stopped .Use step or Run to continue.
这是什么意思?
 
procedure TForm1.Button1Click(Sender: TObject);
var
x:integer;
begin
begin//去掉这个begin
table1.active:=true;
x :=1;
while x=1 do
begin
table1.edit;//增加
table1.append;
table1.FieldByName('bm').Asstring:=edit1.text;
table1.fieldbyname('xm').asstring:=edit2.text;
table1.fieldbyname('rq').asdatetime:=data.date;
Table1.post;

end;
if messagedlg('是否继续添加数据吗?',mtconfirmation,mbyesnocancel,0)=mryes then

continue
else
break;

end;
showmessage('谢谢指点');
end;
--------------------
我没有实际测试,你试试
 
去掉了的话要改循环了。增加TABLE1.EDIT倒是有这个必要。
 
Key violation表示有重复的关键字记录,看看你哪个字段是唯一的,但赋值的时候重复
赋了。
 
查过了,没有相同的数据。
并在table1.post;后加了edit1.text:='';和edit2.text:='';两行语句。
 
if messagedlg('是否继续添加数据吗?',mtconfirmation,mbyesnocancel,0)=mryes then
continue
else
break;

這兩行是否多余????? 觀察發現你使用的是行緩沖.你改在這樣試試,當然這隻是測試:
if messagedlg('是否继续添加数据吗?',mtconfirmation,mbyesnocancel,0)=mryes then
begin
edit1.text := edit1.Text+'1';
edit2.text := edit2.Text+'1';
continue;
end
else
break;
 
顶部