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 27-02-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Ejecutar cierto codigo una vez seleccionada la fecha en DateTimePicker

Hola, lo que pretendo hacer, es que una vez que seleccione la fecha y que ésta se visualice en el DateTimePicker, me revise una tabla de la base de datos para verificar si coincide algun registro con la fecha elegida, si coincide me despliega los datos en un dbgrid, de lo contrario me dice k no existen registros con esa fecha.

Pero no sé si exista algun evento del DateTimePicker que se active cuando selecciono la fecha..

Gracias y saludos
Responder Con Cita
  #2  
Antiguo 27-02-2009
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 19
pjmedina Va por buen camino
Utiliza el evento "on change"
Responder Con Cita
  #3  
Antiguo 27-02-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Has probado con son simples?
Es decir OnClick/OnChange.

No lo tengo delente, pero lo lógico es que cuando seleccionas una fecha, salte el segundo. El primero tal vez no si lo haces con teclado, pero es cuestión de probar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 27-02-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, Neftali lo unico malo con el OnClick es que, no se da cuando se hace click sobre el calendarío, por lo que sería mejor usar el OnChange, pero en este caso ocurren dos veces el OnChange al cambiarse la fecha desde el calendarío, supongo cuando presionas en el calendarío y cuando se cambia la fecha en el edit del dateTimePicker y algo parecido sería cuando se cambia directamente la fecha, por lo que tendría que controlar de hacer la busqueda solo una vez.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 27-02-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Exactamente Caro, utilice el OnChange, pero me repite 2 veces la búsqueda, por lo tanto me salen 2 veces el mismo mensaje de k no lo encontro.. Otro problema que detecte, esk si me desplazo a otro mes, como que se cicla, y me aparece el monton de mensajes de k no se encontro el registro, pk incrementa solo el mes, el año, no sé pk pase eso..
Responder Con Cita
  #6  
Antiguo 27-02-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
lo que pasa es que cuando te mueves de mes o de año, se ejecuta el evento onchange y hace todo lo que tengas ahí. Por eso no es recomendable hacer validaciones en este evento. Es muy recomendable para verificar cosas, pero no para validar.

Es decir, el evento onchange es muy bueno para verificar valores de otro datetimepicker, por ejemplo, cuando tienes que seleccionar fecha inicial y fecha final, en el onchange puedes cambiar el mindate de la fecha final para que no sea menor a la fecha inicial. Ahí si es recomendable el evento onchange.

Pero para validar, como supongo lo estas haciendo tu, es mejor utilizar otro evento. Tal vez en el botón "procesar" o "buscar", o al finalizar el proceso de captura.

aunque también simplemente podrías no mostrar el mensaje de "no se encuentra". A final de cuentas el usuario va a ver la tabla vacía, no es necesario el mensaje. Digo, si ya ve la tabla vacía, asume que no hay nada.
__________________


Última edición por ContraVeneno fecha: 27-02-2009 a las 19:19:39.
Responder Con Cita
  #7  
Antiguo 27-02-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Quisas seria mejor utilizar el evento OnCloseUp ya que el componente
TDateTimePicker no cuenta con un evento OnSelect como un TComboBox.
Segun veo seria el mas adecuado para tu caso..
Saludos.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #8  
Antiguo 27-02-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Lo malo con el CloseUp es que el usuario puede cambiar la fecha en el control sin abrir el calendario. Por otra parte, como ya han observado, el evento OnChange se produce dos veces cuando se selecciona la fecha en el calendario, pero, además, el usuario puede desplazarse de fecha con las teclas de flecha estando abierto el calendario, y cada cambio generaría la consulta a la base, aun cuando el usuario cancele y la fecha finalmente no cambie.

Creo que lo ideal sería utilizar otro control mejor hecho. Probé con el DateEdit de la biblioteca RX y funciona mejor pero éste genera dos OnChange si el cambio de fecha se hace desde el edit en lugar del calendario. Quizá en la biblioteca Jedi lo hayan corregido.

Por lo pronto, parece que no queda de otra que controlar uno mismo el cambio de fecha llevando registro de la última fecha seleccionada y generando la consulta sólo si realmente ha cambiado. Pero también hay que controlar el cambio que menciono con las teclas de flecha, pues lo detectaríamos como cambio antes de saber si el usuario realmente selecciona esa fecha.

Este evento OnChange, de plano hace caso omiso de cualquier cambio realizado mientras el calendario está abierto:

Código Delphi [-]
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
  if not DateTimePicker1.DroppedDown then
  begin
    {
      Aquí la consulta a la base
    }

    LastDate := DateTimePicker1.DateTime;
  end;
end;

Sólo funciona si el calendario está cerrado. Para cuando esté abierto entonces usamos el evento OnCloseUp:

Código Delphi [-]
procedure TForm1.DateTimePicker1CloseUp(Sender: TObject);
begin
  if DateTimePicker1.DateTime <> LastDate then
  begin
    {
      Aquí la consulta a la base
    }

    LastDate := DateTimePicker1.DateTime;
  end;
end;

LastDate sería una variable de tipo TDate declarada en el formulario.

// Saludos
Responder Con Cita
  #9  
Antiguo 27-02-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Gracias Roman
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
quickreport+fecha seleccionada n03l Impresión 6 17-02-2007 17:41:35
Tengo un lio con cierto código David OOP 11 13-10-2006 20:07:34
Fecha del sistema y DateTimePicker ojan69 Varios 8 26-12-2005 18:40:04
Fecha Actual en DateTimePicker Barzaugc Varios 1 15-11-2005 17:29:20
Ejecutar aplicacion delphi cada cierto tiempo mgaray API de Windows 9 28-01-2005 19:16:20


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


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