关于Delphi中的key violation错误问题
今天小弟使用DBGrid写程序,本来想实现批量记录修改、删除和增加的,结果在添加第三条记录时出现“key violation”,错误,看网上的方法说要关闭自动POST,我也设置了Action:=dbAbort,结果还是不行。我用的是三层开发模式,现把客户端的源码贴出来,请各位帮忙,谢谢。
unit proclient;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, DB, DBClient, MConnect,
SConnect, StdCtrls;
type
TForm2 = class(TForm)
SocketConnection1: TSocketConnection;
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure ClientDataSet1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
ClientDataSet1.ApplyUpdates(-1);
end;
procedure TForm2.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Button1.Enabled:=true;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
DBGrid1.DataSource.DataSet.Append;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
DBGrid1.DataSource.DataSet.Edit;
end;
procedure TForm2.Button4Click(Sender: TObject);
begin
DBGrid1.DataSource.DataSet.Delete;
end;
procedure TForm2.ClientDataSet1PostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
Action:=daAbort;
end;
end.