Ver Mensaje Individual
  #9  
Antiguo 09-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
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.

Estoy de acuerdo con mi amigo Caral que con un TEdit se simplifica el tema. Pero si aún deseas hacerlo con un TDBEdit, creo que el evento indicado para evaluar la existencia (o no) es OnSetText del campo en cuestión.
El evento OnSetText se dispara cuando un valor es asignado a la propiedad Text del TField, pero antes de ser almacenado.

Entonces:
Código Delphi [-]
...
procedure TForm1.DataSetCpoSetText(Sender: TField; const Text: String);
begin
  with TuQuery do
  begin
    Close;
    SQL.Text:= 'SELECT TU_CAMPO FROM TU_TABLA WHERE TU_CAMPO = :DATO';
    ParamByName('DATO').AsString:= Text;  // (o convertir acorde al tipo)
    Open;
    if IsEmpty then
      raise Exception.Create('Dato inexistente');
    Close;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DataSet.FieldByName('TU_CAMPO').OnSetText:= DataSetCpoSetText;
end;

...

procedure TForm1.FormDestroy(Sender: TObject);
begin
  DataSet.FieldByName('TU_CAMPO').OnSetText:= nil;
end;
En el código superior asigno el evento en tiempo de ejecución para dar mayor claridad, pero si tenes creado el campo persistente lo podés hacer desde el Object Inspector.

Saludos.
__________________
Daniel Didriksen

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