这是ADO数据组件的BeforePost事件处理程序 procedure TForm1.ADOTable1BeforePost(DataSet: TDataSet); begin //在此写下判断当前记录各字段值是否为空的语句就可以了。 end;
for i:= 0 to ADOTable1.Fields.Count - 1 do begin if ADOTable1.Fields[i].IsNull then begin ShowMessage('数据输入不全!'); Break; end; end;
对不起,更正一下: procedure TForm1.ADOTable1BeforePost(DataSet: TDataSet); var i: Integer; begin for i:= 0 to ADOTable1.Fields.Count - 1 do begin if ADOTable1.Fields[i].IsNull then begin ShowMessage('数据输入不全!'); Abort; Break; end; end; end;
var Action: TDataAction); begin if (E is EDBEngineError) then if (E as EDBEngineError).Errors[0].Errorcode = eKeyViol then begin MessageDlg('您输入了重复的记录', mtWarning, [mbOK], 0); Abort; end; 拿这个参考一下。 小弟初试此道,一心求学delphi,真是入师无门,希望各位老师求徒儿于水火之中,小弟学不会delphi娶不上老婆了,哪位愿带徒儿入门,徒弟定当后报,小弟虽然才疏学浅,但天生聪明学的快, 一定不复众望,还望各位老师不弃,请受徒儿一拜。小弟oicq.910660.静候师傅您的到来。
var Action: TDataAction); begin if (E is EDBEngineError) then if (E as EDBEngineError).Errors[0].Errorcode = eKeyViol then begin MessageDlg('您输入了重复的记录', mtWarning, [mbOK], 0); Abort; end;什么意思?代码加在哪儿?eKeyViol什么意思?
procedure TDM.table1BeforePost(DataSet: TDataSet); begin with query1 do begin Active := False; SQL.Clear; SQL.Add('select * from employee where name=' + tblEmployee.fieldByName('name').AsString ); Open; if not EOF then begin MessageDlg('您输入的姓名已存在!',mtWarning,[mbOK],0); Abort; Exit; end; end; end;以上代码存在一个问题,就是在DBGRID中点击任意一列后,点击DBNavigator上的按钮都会出现错误提示,因为DBGRID中显示的内容在employee表中肯定已存在。请问怎么解决这个问题?
BeforePost是在对数据提交前的行为。若各字段为空是就退出该条件行为。 procedure TForm1.ADOTable1BeforePost(DataSet: TDataSet); var i,j: Integer; begin i:=ADOTable1.Fields.Count; for j= 0 to i-1 begin if ADOTable1.Fields[j].IsNull then begin ShowMessage('数据输入不全!'); exit; end; end; end
procedure TForm1.ADOTable1BeforePost(DataSet: TDataSet);
begin
//在此写下判断当前记录各字段值是否为空的语句就可以了。
end;
begin
if ADOTable1.Fields[i].IsNull then
begin
ShowMessage('数据输入不全!');
Break;
end;
end;
procedure TForm1.ADOTable1BeforePost(DataSet: TDataSet);
var
i: Integer;
begin
for i:= 0 to ADOTable1.Fields.Count - 1 do
begin
if ADOTable1.Fields[i].IsNull then
begin
ShowMessage('数据输入不全!');
Abort;
Break;
end;
end;
end;
begin
if (E is EDBEngineError) then
if (E as EDBEngineError).Errors[0].Errorcode = eKeyViol then
begin
MessageDlg('您输入了重复的记录', mtWarning, [mbOK], 0);
Abort;
end;
拿这个参考一下。
小弟初试此道,一心求学delphi,真是入师无门,希望各位老师求徒儿于水火之中,小弟学不会delphi娶不上老婆了,哪位愿带徒儿入门,徒弟定当后报,小弟虽然才疏学浅,但天生聪明学的快, 一定不复众望,还望各位老师不弃,请受徒儿一拜。小弟oicq.910660.静候师傅您的到来。
begin
if (E is EDBEngineError) then
if (E as EDBEngineError).Errors[0].Errorcode = eKeyViol then
begin
MessageDlg('您输入了重复的记录', mtWarning, [mbOK], 0);
Abort;
end;什么意思?代码加在哪儿?eKeyViol什么意思?
begin
with query1 do
begin
Active := False;
SQL.Clear;
SQL.Add('select * from employee where name=' + tblEmployee.fieldByName('name').AsString );
Open;
if not EOF then
begin
MessageDlg('您输入的姓名已存在!',mtWarning,[mbOK],0);
Abort;
Exit;
end;
end;
end;以上代码存在一个问题,就是在DBGRID中点击任意一列后,点击DBNavigator上的按钮都会出现错误提示,因为DBGRID中显示的内容在employee表中肯定已存在。请问怎么解决这个问题?
procedure TForm1.ADOTable1BeforePost(DataSet: TDataSet);
var
i,j: Integer;
begin
i:=ADOTable1.Fields.Count;
for j= 0 to i-1
begin
if ADOTable1.Fields[j].IsNull then
begin
ShowMessage('数据输入不全!');
exit;
end;
end;
end