Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-10-2016
jose001 jose001 is offline
Miembro
NULL
 
Registrado: jul 2016
Posts: 13
Poder: 0
jose001 Va por buen camino
Filtrar busquedas por fecha

Hola buenas noches estoy intentado hacer una busqueda filtrada por 2 fechas (desde y hasta).Mi aplicacion esta realizada con delphi 2010 y query de zeos
Resulta que tengo un formulario con 2 dbgrid maestro-esclavo que tendrian relacionado uno el query de venta y el otro detalle de venta. En dicho formulario tengo 2 DateTimerPocker, y un boton.
en el query de ventas tengo la siguiente consulta
Código SQL [-]
select * from venta inner join clientes(venta.idcliente=clientes.idcliente) 
where fechaventa BETWEEN :desde AND :hasta

y en el de detalle de venta lo siguiente
Código SQL [-]
select * from detalle_venta inner join producto(detalle_venta.idventa=prodcuto.idproducto)
luego en las propiedades MasterSource,MasterFields,LinkedFields del query detalle hago la relacion al query de venta para establecer la relación maestro detalle.
bien hasta aqui todo perfecto me muestra datos en los dbgrid segun la venta me muestra sus detalles luego procedi a colocar un boton en el escribi el siguiente codigo y es aqui donde comienza el problema


Código Delphi [-]
qVentas.Close;
qVentas.SQL.clear;
qVentas.SQL.ADD('select * from venta where fechaventa BETWEEN :desde AND :hasta');
qVentas.ParanByName('desde').AsDate:= fecha_desde.date;
qVentas.ParanByName('hasta').AsDate:= fecha_hasta.date;
qVentas.Open;

tambien eh probado realizando el siguiente codigo pero con este tuve mas problema que con el anterior
Código Delphi [-]
qVentas.Close;
qVentas.SQL.clear;
qVentas.SQL.ADD('select * from venta');
qVentas.SQL.ADD('where fechaventa BETWEEN ' + FormatDateTime('yyyy/mm/dd',fecha_desde.Date) +
  ' AND '+FormatDateTime('yyyy/mm/dd',fecha_hasta) ;
////...

probando cualquier codigo al realizar la busqueda me pasa los siguiente problemas
1) los dbgrid quedan vacio y no me muestra datos( filtro la busqueda en fechas que se que contienen datos)
2) Aveces me muestra 1 solo dato pero no de la fecha que seleccione y al querer cambiar la fecha tira error de consulta(esto utilizando el primer codigo)
3) al probar el primer codigo nuevamente me larga el siguiente error de syntax de "select * from venta where fechaventa BETWEEN '2016-10-21 AND 2016-10-2 at line 1"

la verdad que no se si estoy escribiendo mal la consulta o filtrando mal la busqueda alguna ayuda? Muchas gracias desde ya

Última edición por ecfisa fecha: 22-10-2016 a las 08:10:15. Razón: ajustar código para mejor visualización
Responder Con Cita
  #2  
Antiguo 23-10-2016
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 10
wilcg Va por buen camino
Prueba de esta manera,

Usa un Query para cada DBGrid.

// Filtrar todas la ventas que cumplen la condicion de busqueda
Código Delphi [-]
    with QueryVentas do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT * FROM ventas '+
         ' WHERE fecha_venta BETWEEN '+
         QuotedStr(FormatDateTime( 'yyyy/mm/dd',edtFInicio.Date ))+
         ' AND '+ QuotedStr(FormatDateTime( 'yyyy/mm/dd',edtFFin.Date ))+
         ' ORDER BY id_venta DESC ');
      Open;
      if RecNo < 1 then
        Close;
   end;

Ahora en el el evento OnDataChange del Datasouce vinculado a las ventas, este codigo.

// Filtrar detalles de acuerdo a la venta
Código Delphi [-]
  with QueryVentas do
  begin
    if (Active = True) AND (RecNo > 0) then
      jIdVenta := FieldByName('id_venta').Value;

   QueryDetalles.Close;
   QueryDetalles.SQL.Clear;
   QueryDetalles.SQL.Add('SELECT * FROM detalle_venta '+
     ' WHERE id_venta = :ID ');
   QueryDetalles.ParamByName('ID').Value := jIdVenta;
   QueryDetalles.Open;
   if QueryDetalles.RecNo < 1 then
     QueryDetalles.Close;
  end;

Esto hará que que conforme selecciones un registro de venta te mostrará los detalles en el DBGrid detalles de venta.
Espero que te sirva,

Última edición por wilcg fecha: 23-10-2016 a las 04:19:17.
Responder Con Cita
  #3  
Antiguo 24-10-2016
jose001 jose001 is offline
Miembro
NULL
 
Registrado: jul 2016
Posts: 13
Poder: 0
jose001 Va por buen camino
gracias

Cita:
Empezado por wilcg Ver Mensaje
Prueba de esta manera,

Usa un Query para cada DBGrid.

// Filtrar todas la ventas que cumplen la condicion de busqueda
Código Delphi [-]
    with QueryVentas do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT * FROM ventas '+
         ' WHERE fecha_venta BETWEEN '+
         QuotedStr(FormatDateTime( 'yyyy/mm/dd',edtFInicio.Date ))+
         ' AND '+ QuotedStr(FormatDateTime( 'yyyy/mm/dd',edtFFin.Date ))+
         ' ORDER BY id_venta DESC ');
      Open;
      if RecNo < 1 then
        Close;
   end;

Ahora en el el evento OnDataChange del Datasouce vinculado a las ventas, este codigo.

// Filtrar detalles de acuerdo a la venta
Código Delphi [-]
  with QueryVentas do
  begin
    if (Active = True) AND (RecNo > 0) then
      jIdVenta := FieldByName('id_venta').Value;

   QueryDetalles.Close;
   QueryDetalles.SQL.Clear;
   QueryDetalles.SQL.Add('SELECT * FROM detalle_venta '+
     ' WHERE id_venta = :ID ');
   QueryDetalles.ParamByName('ID').Value := jIdVenta;
   QueryDetalles.Open;
   if QueryDetalles.RecNo < 1 then
     QueryDetalles.Close;
  end;

Esto hará que que conforme selecciones un registro de venta te mostrará los detalles en el DBGrid detalles de venta.
Espero que te sirva,
gracias por tomarte el tiempo en ayudarme. Mira resulta que probe tu codigo y a la hora de abrir el listado me queda los 2 dbgrid vacios
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
Filtrar por fecha un Dbgrid giulichajari C++ Builder 2 27-06-2013 05:14:02
Filtrar Ztable por fecha. forgiveness Conexión con bases de datos 4 03-02-2010 16:33:57
Filtrar por dos Fecha???? Zakio14 Firebird e Interbase 6 23-02-2008 03:00:04
como filtrar por fecha anubis Firebird e Interbase 5 14-02-2008 10:52:43
Filtrar fecha al vuelo JorgeBec Varios 1 04-11-2003 19:33:29


La franja horaria es GMT +2. Ahora son las 19:50:07.


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