对数据进行修改的时候,怎么会出现下面的错误
project project1.exe raised exception class eqleexception with message‘违反了PRIMARY KEY 约束'PK-SA-CAMPAIGN(表名)'’。不能在对象'sa-campaign'中插入重复键。 但是 是用edit编辑表的旧值,不是将新值插入
campaign_id 为主键procedure TSaForm.ButtonModifyClick(Sender: TObject);
begin
with adoTable1 do
begin
Try
Edit;
FieldByName('campaign_id').AsInteger:=StrToInt(EditCaId.Text);
FieldByName('geo_loc').AsString:=EditLoc.Text;
FieldByName('plan_start_dt').AsDateTime:=Datetimepicker1.Date ;
Post;
ShowMessage('数据已存盘!');
except Cancel;
ShowMessage('错!');
end;
project project1.exe raised exception class eqleexception with message‘违反了PRIMARY KEY 约束'PK-SA-CAMPAIGN(表名)'’。不能在对象'sa-campaign'中插入重复键。 但是 是用edit编辑表的旧值,不是将新值插入
campaign_id 为主键procedure TSaForm.ButtonModifyClick(Sender: TObject);
begin
with adoTable1 do
begin
Try
Edit;
FieldByName('campaign_id').AsInteger:=StrToInt(EditCaId.Text);
FieldByName('geo_loc').AsString:=EditLoc.Text;
FieldByName('plan_start_dt').AsDateTime:=Datetimepicker1.Date ;
Post;
ShowMessage('数据已存盘!');
except Cancel;
ShowMessage('错!');
end;
建议在提交前写个过程,检查修改后的campaign_id是否有重复值,否则退出。
procedure TSaForm.ButtonModifyClick(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.TEXT:='select * from sa-campaign where campaign_id='''+EditCaId.Text+'''';
ADOQuery1.Open;
if ADOQuery1.RecordCount<>0 then
begin
ShowMessage('错!');
Exit;
end;
with adoTable1 do
begin
Try
Edit;
FieldByName('campaign_id').AsInteger:=StrToInt(EditCaId.Text);
FieldByName('geo_loc').AsString:=EditLoc.Text;
FieldByName('plan_start_dt').AsDateTime:=Datetimepicker1.Date ;
Post;
ShowMessage('数据已存盘!');
except Cancel;
ShowMessage('错!');
end;
那样改好像不大行。
不管有没有修改campaign_id的值,只要它的值在数据库中是唯一的,就没问题.
ADOQuery1.Open;
if ADOQuery1.RecordCount<>0 then
begin
ShowMessage('错!');
Exit;
表查旬后,ADOQuery1.RecordCount肯定不等0,,肯定有错了