比如:beforepost,beforeinsert,最好要全一点,原因是:
procedure TForm1.Button1Click(Sender: TObject);
begin
with adoquery1 do
begin
Close ;
sql.Clear ;
SQL.Add('insert into table1(nn)values('''+edit1.Text+''')');
ExecSQL ;
end;
end;procedure TForm1.ADOQuery1BeforeInsert(DataSet: TDataSet);
var
i:Integer ;
begin
for i:= 1 to Length(Edit1.text) do
if (Edit1.Text[i]<'0') or (Edit1.Text[i]>'9') then
ShowMessage('这个是插入');
Abort;
end;procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet);
var
i:Integer ;
begin
for i:= 1 to Length(Edit1.text) do
if (Edit1.Text[i]<'0') or (Edit1.Text[i]>'9') then
ShowMessage('这个是插入');
Abort;
end;我
用了如上的不过程还是不能拦错
procedure TForm1.Button1Click(Sender: TObject);
begin
with adoquery1 do
begin
Close ;
sql.Clear ;
SQL.Add('insert into table1(nn)values('''+edit1.Text+''')');
ExecSQL ;
end;
end;procedure TForm1.ADOQuery1BeforeInsert(DataSet: TDataSet);
var
i:Integer ;
begin
for i:= 1 to Length(Edit1.text) do
if (Edit1.Text[i]<'0') or (Edit1.Text[i]>'9') then
ShowMessage('这个是插入');
Abort;
end;procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet);
var
i:Integer ;
begin
for i:= 1 to Length(Edit1.text) do
if (Edit1.Text[i]<'0') or (Edit1.Text[i]>'9') then
ShowMessage('这个是插入');
Abort;
end;我
用了如上的不过程还是不能拦错
你調試下你的代碼: ADOQuery1BeforeInsert,ADOQuery1BeforePost 這裏面執行條判有沒有成立的。
你的BeforeInsert,BeforePost 是針對數據集的,你的EXESSQL只是傳遞一個SQL語句到服務器,所以procedure TForm1.Button1Click(Sender: TObject);
begin
with adoquery1 do
begin
Close ;
sql.Clear ;
//在這個地方先判斷
SQL.Add('insert into table1(nn)values('''+edit1.Text+''')');
ExecSQL ;
end;
end;
BeforePost 在 adoquery1.Post时触发ExecSQL 是不会触发adoquery1的事件的
和
adoquery1.Post
前触发的.你这个是直接执行SQL语句,肯定不能触发啦
断点跟踪一下。