Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cambiar el caption de un boton segun el registro (https://www.clubdelphi.com/foros/showthread.php?t=32500)

nenufer 07-06-2006 20:40:09

Cambiar el caption de un boton segun el registro
 
Buenas a tod@s!! Pues bien como dice el titulo me gustaria cambiar el caption de un boton segun el registro. Explico:
Tengo una tabla clientes y un campo es Fecha_Baja.
Me gustaria que si el cliente que esta mostrando en ese momento tiene fecha_baja nula que me muestre en el caption Baja sino que me muestre Alta.
El codigo que tengo hecho lo he puesto en el afterSroll:

Código Delphi [-]
procedure TDM.TblClientesAfterScroll(DataSet: TDataSet);
begin
  if TblCientessFecha_baja.Value = null then
    FrmClientes.Btnbaja.Caption := 'Baja'
  else
    FrmClientes.Btnbaja.Caption := 'Alta';
end;

Con este codigo me da un error: 'Acces violation at address 058113E8 in module project.exe. Read of address 0000033C'

Me muestra el error este pero la ejecucion sigue, pero el caption me lo muestra mal. Siempre muestra Alta

Los datos los muestro con dbedits y utilizo TTables. Puede ser que sea por el TTable el error?

Si alguien me puede ayudar gracias de antemano.

Casimiro Notevi 07-06-2006 22:06:41

creo recordar, te hablo de memoria, que es mejor que lo hagas en el OnDataChange del DataSource asociado a esa tabla, así al cambiar de registro se lanzará

También te recomiendo que los valores sean 0 y 1, o algo así, no "null".

Código:

if tbClientesFechaBaja.AsInteger=1 then
    btBoton.Caption := 'Alta'
else
    btBoton.Caption := 'Baja';

En cuanto al error ese, debe ser de otra cosa.

maeyanes 07-06-2006 22:19:16

Otra forma de verificar si un campo es nulo:

Código Delphi [-]
procedure TDM.TblClientesAfterScroll(DataSet: TDataSet);
begin
  if TblCientessFecha_baja.IsNull then
    FrmClientes.Btnbaja.Caption := 'Baja'
  else
    FrmClientes.Btnbaja.Caption := 'Alta';
end;

nenufer 07-06-2006 22:24:08

Gracias por contestar tan rapido. Ahora si que me lo hace bien, el problema es que me sigue mostrando el error ese y no se porque. Si quito el codigo no me muestra el error. Si se te ocurre algo ....
Muchas Gracias de todas formas;)

Casimiro Notevi 07-06-2006 22:47:41

Cita:

Empezado por nenufer
Gracias por contestar tan rapido. Ahora si que me lo hace bien, el problema es que me sigue mostrando el error ese y no se porque. Si quito el codigo no me muestra el error. Si se te ocurre algo ....
Muchas Gracias de todas formas;)

¿qué parte del código quitas y no te sale el error?

nenufer 07-06-2006 23:20:45

Perdon. La parte del evento OnDataChange del DataSource asociado a esa tabla

Código Delphi [-]
  if TblCientessFecha_baja.Value = 0 then
    FrmClientes.Btnbaja.Caption := 'Baja'
  else
    FrmClientes.Btnbaja.Caption := 'Alta';

Si pongo esto es cuanod me sale el error y si no lo pongo,claro,no me sale el error.
para que no me salga el error tengo que hacer un try except e ir a tools/debuggerOptions/languageExceptions/Stop on delphi exception y desactivarlo. Pero claro si esto lo activo me muestra el error.

Casimiro Notevi 07-06-2006 23:41:07

pero existe fecha_baja en tbclientes? y está abierta la tabla, base de datos, etc ???

nenufer 08-06-2006 00:32:57

Si, esta todo bien. Utilizo tablas paradox y las abro todas con un procedimiento. Aunque me muestra este mensaje luego puedo seguir con la ejecucion y me lo hace bien. El problema es

Cita:

para que no me salga el error tengo que hacer un try except e ir a tools/debuggerOptions/languageExceptions/Stop on delphi exception y desactivarlo. Pero claro si esto lo activo me muestra el error.
Y era por si se podia solucionar el error sin tener que recurrir a esto.

Si tengo que utilizar esto, bueno no pasa nada. Pero era por saber si se podia quitar.

Muchas gracias por tu ayuda.

kuan-yiu 08-06-2006 09:32:48

Bueno, puede que no sea el mismo caso, pero yo siempre que tengo que acdeder al valor de una tabla primero compruebo que la tabla tiene datos, así me ahorro determinados sustos.
Código Delphi [-]
if TblCientess.IsEmpty then
 // Lo que sea
else
 // Tu código


La franja horaria es GMT +2. Ahora son las 20:55:50.

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