Hola Ibidi.
Otra opción, usando un
TDBGrid, es aprovechar el evento
OnValidate de los dos campos que no deberán repetirse (vg. CAMPO1 y CAMPO2):
Código Delphi
[-]
...
procedure TForm.FormCreate(Sender: TObject);
begin
tuTabla.FieldByName('CAMPO1').OnValidate := tbCamposValidate;
tuTabla.FieldByName('CAMPO2').OnValidate := tbCamposValidate;
end;
procedure TForm.tbCamposValidate(Sender: TField);
begin
tuQuery.Close;
tuQuery.SQL.Clear;
tuQuery.SQL.Add('SELECT Campo1 FROM ATABLA');
tuQuery.SQL.Add('WHERE Campo1 = :PVALUE OR Campo2 = :PVALUE');
tuQuery.ParamByName('PVALUE').AsInteger := Sender.AsInteger;
tuQuery.Open;
if not tuQuery.IsEmpty then
raise Exception.Create('Valor existente');
tuQuery.Close;
end;
...
procedure TForm.FormDestroy(Sender: TObject);
begin
tuTabla.FieldByName('CAMPO1').OnValidate := nil;
tuTabla.FieldByName('CAMPO2').OnValidate := nil;
end;
Para que sea mas claro asigné el evento
OnValidate en tiempo de ejecución. Pero lo podes hacer mediante el
Object Inspector creando los campos persistentes en diseño y ahorrándote la asignación por código.
Saludos.
Saludos.
