if DataModule1.XLJH_scjh.Locate('cInvCode;Dep_id;yuefen',VarArrayOf([trim(CB_invCode),trim(str_depid),trim(ComboBox2.Text)]),[loCaseInsensitive]) then
showmessage('数据重复!');
希望对你有帮助。
在编辑框的OnExit事件中添加查询语句进行判断,若存在重复值则提示并将焦点置回该编辑框中,如:
procedure TForm1.EditExit(Sender: TObject);
begin
if (Sender as TEdit).Text = '' then Exit;
ADOQuery.Close;
ADOQuery.SQL.Text := 'Select * From table Where aa = ' + QuotedStr(Sender as TEdit).Text);
ADOQuery.Open;
if ADOQuery.IsEmpty then Exit;
ShowMessage('存在重复值');
(Sender as TEdit).SetFocus;
end;
DBEdit也有一OnExit事件,也可以使用上述的思路控制,在代码中只需将TEdit改成TDBEdit就行了。其实,如果是DB控件的话,还可以使用数据集的OnBeforePost事件进行判断的。
一、在OnExit事件
procedure TForm1.DBEditExit(Sender: TObject);
begin
if (Sender as TDBEdit).Text = '' then Exit;
ADOQuery.Close;
ADOQuery.SQL.Text := 'Select * From table Where aa = ' + QuotedStr((Sender as TDBEdit).Text);
ADOQuery.Open;
if ADOQuery.IsEmpty then Exit;
ShowMessage('存在重复值');
(Sender as TDBEdit).SetFocus;
end;
二、在数据集的OnBeforePost事件
该事件是在保存数据前调用的,若发现已存在重复值,就可终止操作
procedure TForm1.QueryBeforePost(DataSet: TDataSet);
begin
ADOQuery.Close;
ADOQuery.SQL.Text := 'Select * From table Where aa = ' + QuotedStr((Sender as TDBEdit).Text);
ADOQuery.Open;
if not ADOQuery.IsEmpty then
begin
ShowMessage('存在重复值');
(Sender as TDBEdit).SetFocus;
Abort; // 终止操作
end;
end;