Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-07-2008
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 20
Luis M. Va por buen camino
Consulta Desde->Hasta

Saludos.

Pongo esta imagen para que os hagáis una idea de lo que quiero hacer.



Al pulsar el botón "Buscar" lanzo la siguiente consulta:

Código Delphi [-]
procedure TFiltroEntradaPelotas.BTBuscarClick(Sender: TObject);
var
  cPath: string;
  anyo,mes,dia: Word;
  cFecha1,cFecha2: string;
begin
  DecodeDate(DesdeFecha.Date,anyo,mes,dia);
  cFecha1 := IntToStr(anyo)+'-'+IntToStr(mes)+'-'+IntToStr(dia);
  DecodeDate(hastaFecha.Date,anyo,mes,dia);
  cFecha2 := IntToStr(anyo)+'-'+IntToStr(mes)+'-'+IntToStr(dia);

  QEntradaPelotas.Close;
  QEntradaPelotas.SQL.Text := 'Select * From ENTRADAPELOTAS Where (NUMERO >= '+ QuotedStr(DesdeEntrada.Text)+
                              ') and (NUMERO <= '+ QuotedStr(HastaEntrada.Text)+') and ('+
                              'FECHAENTRADA >= '+QuotedStr(cFecha1)+') and (FECHAENTRADA <= '+
                              QuotedStr(cFecha2)+') and ( MARCA >= '+QuotedStr(DesdeMarca.Text)+
                              ') and (MARCA <= '+QuotedStr(HastaMarca.Text)+') ORDER BY NUMERO';

  QEntradaPelotas.Open;

  cPath := ExtractFilePath(Application.ExeName);
  frxReport1.LoadFromFile(cPath + 'REPORTS\' + 'ListadoEntradasPelotasPorNumero.fr3');
  frxReport1.ShowReport;
end;

La consulta funciona bien, siempre y cuando rellene todos los "Edits".
Lo que quiero conseguir, es qué si se deja por ejemplo en blanco los Edits
Desde Nº de entrada y Hasta Nº de entrada, o cualquier otro. En la
consulta, me salga todos los datos de los Edits que no he rellenado.
La base de datos es Firebird 2.0.4
Si Tenéis cualquier idea o sugerencia al respecto, os lo agradecería.

Un saludo.
Responder Con Cita
  #2  
Antiguo 30-07-2008
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.269
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
¿Y no puedes comprobar antes de ejecutar la consulta si los han rellenado o no?

En la consulta utiliza una variable _Desde, por ejemplo y haces la comprobación:

Código Delphi [-]
if (DesdeEntrada.Text = '') then begin
  _Desde := '00000';
end
else begin
  _Desde := DesdeEntrada.Text;
end;

// Luego en la consulta donde tienes DesdeEntrada.Text lo cambias por _Desde

No se si me expliqué bien; Igual para el campo Hasta.
__________________
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
  #3  
Antiguo 30-07-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola, si he entendido bien, ¿por qué no usas consultas anidadas if...Then?


Saludos.

Edito: Neftalí ya contestó
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.

Última edición por enecumene fecha: 30-07-2008 a las 16:45:45.
Responder Con Cita
  #4  
Antiguo 30-07-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
No se si el lo mismo que dice Enecumene, pero ¿porque no lo evaluas en tu aplicacion, para armar la sentencia correcta?
Saludos
__________________
Ya tengo Firma!
Responder Con Cita
  #5  
Antiguo 30-07-2008
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 20
Luis M. Va por buen camino
Gracias por responder.
Este es un "Filtro sencillo", pero tengo que desarrollar algunos con
muchos edits como estos.
Si son todos "Desde->Hasta", más o menos los puedo resolver como
dice Neftali, pero el problema me surge cuando por por ejemplo
hay uno o varios edits que solo comparan un resultado.
Por ejemplo:

Si no relleno el número de factura, la consulta no devuelve nada.
Este es sencillo y se puede resolver bien, pero tengo que hacer algunos
filtros que pueden tener varios edits como estos, y aquí es donde me
encuentro que no se como resolverlo sin tener que prepara muchos If Then

Muchas gracias por vuestra ayuda.

Un saludo.
Responder Con Cita
  #6  
Antiguo 30-07-2008
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 20
RolphyReyes Va por buen camino
Smile

Saludos.

Una idea podría ser, pones tu sentencia SELECT dentro del Editor de SQL en tu componente Query así:
Código SQL [-]
Select * From ENTRADAPELOTAS 
Where NUMERO >= COALESCE(NUMERO, NUMERO) 
and   NUMERO <= COALESCE(:HNUMERO, NUMERO)
and   FECHAENTRADA >= COALESCE(FECHA, FECHAENTRADA)
and   FECHAENTRADA <= COALESCE(:HFECHA, FECHAENTRADA)
and   MARCA >= COALESCE(MARCA, MARCA)
and   MARCA <= COALESCE(:HMARCA, MARCA)
ORDER BY NUMERO

Ahí tienes todos tus parámetros, luego en Delphi:
Código Delphi [-]
With QEntradaPelotas, Params do
begin
  Close;
  ParamByName('DNUMERO').Value := Null;
  ParamByName('HNUMERO').Value := Null;
  .
  .
  .
end;

Luego a medida que tienes valores se lo pasas y los que no se
queda nulos y el COALESCE se encarga de dejarlo en blanco.

A recomendación trata de no tener ningún componente desendiente
de TDataSet en la presentación (formularios) trata de ponerlos
en un DataModule.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #7  
Antiguo 30-07-2008
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 20
Luis M. Va por buen camino
Hola RolphyReyes.
Gracias por responder.
Probaré tú código a ver que tal me va.

Cita:
Empezado por RolphyReyes Ver Mensaje
A recomendación trata de no tener ningún componente desendiente
de TDataSet en la presentación (formularios) trata de ponerlos
en un DataModule.
Gracias por la recomendación.
Siempre suelo ponerlo en un DataModule, esto ha sido una pequeña excepción.

Nuevamente gracias por tu aporte.
Un saludo.
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
Desde la fecha inicio hasta la fecha final que me grabe los meses contenidos Renis SQL 4 01-10-2007 17:21:44
calcular el nro de dias, desde una fecha hasta la actual. abraham SQL 13 01-08-2007 17:36:42
Reporte (Desde : Hasta) magnu9 SQL 9 16-11-2006 18:36:19
como sumar valores desde el inicio de una tabla hasta el fin de esta. andre navarrete Conexión con bases de datos 2 13-08-2006 16:47:36


La franja horaria es GMT +2. Ahora son las 17:16: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