Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-11-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Saber si el registro de un dgbrid tiene algun campo vacio

Bunas tardes!!!
Esta consulta la veo un tanto pava, pero la verdad no se como hacerla..

Tengo una grilla conectada a un dbQuery, la cual me muestra varios registros, los campos son los siguientes:

Cita:
fecha | hora | profesional | paciente
-------------------------------------
Lo que yo necesito es preguntar si el registro sobre el que estoy parada tiene el campo PACIENTE vacío o nulo, que se me habilite un botón que tengo, que se llama Agregar.. el cual lo que realiza es agregar precisamente el nombre del paciente.
Por defecto tal botón esta en enabled:=False.

Trabajo con Delphi 7, utilizo sql y motor de base de datos Firebird.

Muchas gracias de antemano, espero puedan ayudarme, sigo disponible para cualquier consulta por si no se ah entendido mi petición..
Saludos!!!
Responder Con Cita
  #2  
Antiguo 16-11-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
mas detalles

Perdón, me olvide detallarles que el dbgrid esta conectado a un dbQuery de la tabla AGENDA_TURNOS. Pero el campo PACIENTE viene de otra tabla, que es la tabla PACIENTES, es decir que estoy utilizando un campo virtual en el Query, por lo tanto, a mi criterio para realizar lo que necesito, tendría que trabajar directamente con los id (clave). La tabla AGENDA_TURNOS tiene la clave foránea ID_PACIENTE..

Muchas gracias..
Responder Con Cita
  #3  
Antiguo 16-11-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Encontré una posible solución que no es acorde a lo que estaba pidiendo, pero también sirve..
Lo que realice fue agregar 3 botones:
TODOS: muestra absolutamente todos los registros que estén en ESTADO:=0; es decir que estén dados de alta.
LLENOS: muestra solo los registros que tienen el campo PACIENTE cargado.
VACÍOS: muestra solo los registros que no tienen el campo PACIENTE cargado..

Entonces si la grilla solo muestra los registros que tienen el campo PACIENTE vacío, se habilita el botón Agregar, asignándole la propiedad Enabled:=True;

Les paso el código para cada botón, para que realice el filtro.

Botón TODOS:
Código SQL [-]
DM.Q_agen_tur.SQL.Clear;
DM.Q_agen_tur.SQL.Add('select * from AGENDA_TURNOS where ESTADO=0');
DM.Q_agen_tur.Open;

Botón LLENOS:
Código SQL [-]
DM.Q_agen_tur.SQL.Clear;
DM.Q_agen_tur.SQL.Add('select * from AGENDA_TURNOS where ESTADO=0 and ID_PACIENTE is not null');
DM.Q_agen_tur.Open;

Botón VACIOS:
Código SQL [-]
DM.Q_agen_tur.SQL.Clear;
DM.Q_agen_tur.SQL.Add('select * from AGENDA_TURNOS where ESTADO=0 and ID_PACIENTE is null');
DM.Q_agen_tur.Open;
Código Delphi [-]
Boton_agregar.Enabled:=True;


Espero a alguien le sirva..
igual acepto respuestas sobre alguna otra solución o sobre lo que pedi primeramente, siempre es útil y me puede servir para otro caso o este mismo..
Muchas gracias.
Responder Con Cita
  #4  
Antiguo 17-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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 Vales.

Respondiendo a tu primer pregunta (que un botón se habilite/deshabilite de acuerdo a si un campo está vacío o no), podrías utilizar el evento AfterScroll del query:
Código Delphi [-]
procedure TForm1.QueryAfterScroll(DataSet: TDataSet);
begin
  Button1.Enabled := Query.FieldByName('TU_CAMPO').AsString <> '';
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 17-11-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
El Query lo tengo colocado en un Data Module, como hago para poder llamar al boton? porque no me deja usarlo
Responder Con Cita
  #6  
Antiguo 17-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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 Vales.

Tendrías que anteponer el nombre del TDataModule, por ejemplo:
Código Delphi [-]
procedure TForm1.QueryAfterScroll(DataSet: TDataSet);
begin
  Button1.Enabled := TuDataModule.TuQuery.FieldByName('TU_CAMPO').AsString <> '';
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 17-11-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Claro, eso esta bien porque yo en el código siempre hago referencia a los querys y dataset con el datamodule.
Mi problema es que no puedo poner el nombre del botón en el código que me pasaste, porque no me lo reconoce y es obvio porque esta ubicado en un formulario distinto del datamodule..

No se si me logro explicar? En el data module estoy haciendo referencia a un boton que no existe en el mismo.

Muchas gracias por tu ayuda!!
Responder Con Cita
  #8  
Antiguo 17-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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
Cita:
Empezado por Vales08 Ver Mensaje
Mi problema es que no puedo poner el nombre del botón en el código que me pasaste, porque no me lo reconoce y es obvio porque esta ubicado en un formulario distinto del datamodule..
No se si me logro explicar? En el data module estoy haciendo referencia a un boton que no existe en el mismo.
Ahora te entiendo...

Hacé así:
Código Delphi [-]
...
 TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    ...
    procedure FormDestroy(Sender: TObject);
  private
    procedure TuQueryAfterScroll(DataSet: TDataSet);
  public
  end;
...
implementation

uses UnitDelDataModule;

procedure TForm1.TuQueryAfterScroll(DataSet: TDataSet);
begin
  Button1.Enabled := TuDataModule.TuQuery.FieldByName('TU_CAMPO').AsString <> '';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  TuDataModule.TuQuery.AfterScroll:= TuQueryAfterScroll;
end;

....

procedure TForm1.FormDestroy(Sender: TObject);
begin
  TuDataModule.TuQuery.AfterScroll:= nil;
end;

end.

Un saludo.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 17-11-2011 a las 13:35:01.
Responder Con Cita
  #9  
Antiguo 17-11-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Ahh perfecto, apenas lo pruebe te comento que tal me fue..
Disculpa por no haber sido clara en la pregunta..
Muchas gracias!!
Responder Con Cita
  #10  
Antiguo 17-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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
No tenés por que disculparte, la confusión fué mia.

Aquí:
Cita:
El Query lo tengo colocado en un Data Module, como hago para poder llamar al boton? porque no me deja usarlo
Ya habías aclarado que el query estaba en el DataModule...

Saludos.
__________________
Daniel Didriksen

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



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
registro vacio not null..!! negrokau Varios 10 27-08-2011 16:44:55
Algun tiene un comentario del nodo addenda del SAT uper Varios 2 22-10-2010 20:07:55
saber que no existe registro de ese campo Petolansa SQL 4 31-07-2008 01:42:10
Saber si un Timage esta vacio Vlady Gráficos 8 11-04-2008 14:10:54
Alguien tiene algun manual para mandarme? SaLvaGe Impresión 1 04-10-2004 19:32:03


La franja horaria es GMT +2. Ahora son las 04:12:01.


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
Copyright 1996-2007 Club Delphi