Ver Mensaje Individual
  #3  
Antiguo 09-07-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita