Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   registro vacio not null..!! (https://www.clubdelphi.com/foros/showthread.php?t=73867)

negrokau 20-05-2011 18:46:30

registro vacio not null..!!
 
hola.. tengo un formulario, con los siguientes registros cod_usuario (primari key), nombre(not null) y documento_nro (not null), mi pregunta es la siguiente, al guardar quiero que me salte un showmessage "Debe completar NOMBRE", si es que no lo hizo, por que es un registro not null, uso interbase y query, muchas gracias gracias por su tiempo...

oscarac 20-05-2011 19:10:18

me imagino que el formulario que estas haciendo es un mantenimiento o algo parecido

lo que puedes hacer es utiilzar el Evento OnValidate que lo encuentras en el campo ya sea de tu query o de tu tabla

en una proxima ocasion seria bueno que detallaras un poco mas, puesto que el comentario que te estoy haciendo se basa en una "suposicion" de lo que quieres hacer, entonces al tener las cosas mas claras podrias obtener mejores respuestas

saludos

ecfisa 20-05-2011 20:45:20

Hola.

Otra opción. La clase TField y sus descendientes tienen la propiedad Required de tipo Boolean que si está en True y el valor del campo sin asignar, disparará una excepción con la advertencia que buscas si se intenta guardar.
Tenés dos maneras de asignarla: si tenés declarados los campos persistentes, desde el Field Editor y si no por código:
Código Delphi [-]
  IBDataSet1.FieldByName('TU_CAMPO').Required:= True;
  // o con IBQuery.
  IBQuery1.FieldByName('TU_CAMPO').Required:= True;

Saludos.

negrokau 20-05-2011 22:29:13

yo estaba pensando algo asi:

Código Delphi [-]
if NOMBRE.text=' ' then
SHOWMESSAGE('debe ingresar un NOMBRE');
query.edit;
else
query.post;

corrijanme si esta mal por favor... gracias...

oscarac 20-05-2011 22:40:42

pensemos un poquito

si mas o menos hace lo que tu dices, solo te funcionaria bien con 1 solo dbedit, puesto que al tener "algun" dato, confirmaria la grabacion mediante el post, si esta rutina la implementas en todos los dbedits que tengas haria post despues de cada uno de ellos (con su consiguiente error)

por eso al principio te pedi que fueras un poco mas claro...
la forma que tu mas o menos quieres seria algo asi (siempre suponiendo)

Código Delphi [-]
 
procedure TfrmNumeraciond.edtCodigoExit(Sender: TObject);
begin
  If EdtCodigo.Text = '' Then
    Begin
      SHOWMESSAGE('debe ingresar un NOMBRE');
      edtCodigo.SetFocus;
    end;
end;

negrokau 21-05-2011 21:18:20

sabes, no me sale, me salta el mensaje, pero despues me salta el error de que no puede guardar un campo nulo... como puedo hacer que no me saltar error de guardar? gracias.....

ecfisa 22-05-2011 00:12:56

Hola.

Con el código que te pusieron arriba, en teoría no podrías salir del TDBEdit hasta que no ingreses algo.

Pero, si podés ponenos:
. El código que estás usando.
. Tipo de dato del campo que dá el error.
. Si tenés declarada alguna máscara para ese campo.
. En que momento o línea de código te arroja la excepción.

Saludos.

negrokau 26-08-2011 23:43:46

buenas.... como uso este? o donde lo ubico?
Código Delphi [-]
IBQuery1.FieldByName('TU_CAMPO').Required:= True;

ecfisa 27-08-2011 02:59:28

Cita:

Empezado por negrokau (Mensaje 410232)
buenas.... como uso este? o donde lo ubico?
Código Delphi [-]
IBQuery1.FieldByName('TU_CAMPO').Required:= True;

Hola.

Se usa tál como está en el código.

Donde ubicarlo ? Puede ser en el evento OnCreate u OnShow del form donde está declarado el TIBQuery.
Eso sí, tomá en cuenta que "TU_CAMPO" debe ser reemplazado por el nombre que le diste al campo en la creación de la tabla.

Por ejemplo:
Código Delphi [-]
procedure TForm1.FormShow(Sender: TObject);
begin
  IBDataSet1.FieldByName('NOMBRE_DEL_CAMPO').Required:= True;
  ...
end;
Si intentás guardar un registro en el que el campo "NOMBRE_DEL_CAMPO" no tenga un valor asignado, recibirás el mensaje:
Cita:

Es necesario que el campo 'NOMBRE_DEL_CAMPO' contenga algún valor
Saludos.

negrokau 27-08-2011 15:41:23

Probe como me sugeriste pero no funciona
Código Delphi [-]
procedure TF_COMPRAS.FormCreate(Sender: TObject);
begin
DM.Q_COMPRAS.FieldByName('FECHA').Required:=True;
DM.Q_COMPRAS.FieldByName('CANTIDAD').Required:=TRUE;
DM.Q_COMPRAS.FieldByName('IMPORTE').Required:=True;

end;
sera que algo hice mal?

ecfisa 27-08-2011 16:44:55

Hola.
Cita:

Empezado por negrokau (Mensaje 410257)
Probe como me sugeriste pero no funciona
Código Delphi [-]
procedure TF_COMPRAS.FormCreate(Sender: TObject);
begin
  DM.Q_COMPRAS.FieldByName('FECHA').Required:=True;
  DM.Q_COMPRAS.FieldByName('CANTIDAD').Required:=TRUE;
  DM.Q_COMPRAS.FieldByName('IMPORTE').Required:=True;
end;
sera que algo hice mal?

No, no hay nada mal, la asignación a la propiedad es correcta y tendría que funcionar.

Leyendo en tu primer post:
Cita:

uso interbase y query
Veo que usas un IBQuery por lo que te hago una consulta: ¿ Como estas realizando la inserción del registro, tenés un IBUpdateSQL asociado al IBQuery?

Sería útil poder ver algo del código que usas para hacer la inserción.


Saludos.


La franja horaria es GMT +2. Ahora son las 15:08:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi