Pongo nueva mente la imagen del formulario para ir orientándonos
Estamos en el campo serie, al lado esta el spinedit, que activamos o desactivamos, según nos es necesario, de aqui pasamos al número de documento que tiene los dos siguientes eventos,
Código Delphi
[-]procedure TFXPAF.DBNNumeroDocumentoChange(Sender: TObject);
begin
LAbel44.Caption:='[ '+Trim(DBNSerie.Text)+DBNNumeroDocumento.Text+' ]';
end;
procedure TFXPAF.DBNNumeroDocumentoExit(Sender: TObject);
begin
if not (DsPrincipal.DataSet.State in [dsEdit]) then
begin
ActQuery(IBQBuscarNumeroDocumento,'Select * From DOCUMENTOS where WHERE (DOCUMENTOS.TIPODOCUMENTO = '+QuotedStr(VarSTipoDocumento)+
') AND (DOCUMENTOS.NUMERODOCUMENTO = '+QuotedStr(DBNNumeroDocumento.Text) +
') AND (DOCUMENTOS.SERIE = '+QuotedStr(DBNSerie.Text)+')');
if not IBQBuscarNumeroDocumento.IsEmpty then
begin
ShowMessage('Este número de documento ya existe');
DBNNumeroDocumento.SetFocus;
end;
end;
end;
El 1º de los eventos, nuestra como queda el número de documento con la serie, el 2º evento crea una búsqueda en un querry para comprobar si el documento ya existe, para ello debemos comprobar, el tipo de documento, el número, asignado y la serie ala que pertenece, ya que recordemos, que es la misma tabla para varios documentos diferentes.
pasamos a la fecha, que al usar el componente DbNewEditJl y estar en Onlydate, controla que sea una fecha válida, nos permite que al entrar tenga la fecha actual y que podamos cambiar la fecha pulsando flecha arriba o abajo.