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; 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.