• Jueves 14 de Noviembre de 2024, 23:16

Autor Tema:  Listados Semanales,mensuales Y Anuales  (Leído 1542 veces)

espektra

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Listados Semanales,mensuales Y Anuales
« en: Viernes 16 de Abril de 2004, 14:30 »
0
Hola muy buenas.Necesito saber si alguien me puede ayudar a hacer unos listados.Estoy haciendo un proyecto en Visual Basic6.0 donde debo hacer unos listados diarios,semanales,mensuales y anuales de unos registros que tengo en una Base de Datos en Access.El primero ya lo he hecho,el díario y he utilizado el siguiente codigo:

-sql = "select Pesada_Total.Id_pesada,Pesada_Total.Fecha,Pesada_Total.Hora,Pesada_Total.PesoTotal from Pesada_Total where Pesada_Total.Fecha =#" & Format(Date, "yyyy/mm/dd") & "#"

No se si puedo modificar esta sentencia o debo hacer una nueva muy diferente o que.No utilizo ningun combo solamente aparece la fecha acual y un flexgrid donde aparecen los registros.
Alguien me puede ayudar¿?se lo agradeceria mucho,es muy inportante.
Muchas gracias.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Listados Semanales,mensuales Y Anuales
« Respuesta #1 en: Sábado 17 de Abril de 2004, 12:14 »
0
Hola espektra.

Por partes:

Sobre si debes crear o no una sentencia sql muy diferente a la que tienes. Pues depende... depende de como quieras presentar la información. En principio con modificar la cláusula WHERE con un criterio adaptado a la periodicidad del listado sería suficiente. Pero si quieres resumir o agrupar la información, debes usar una cláusula GROUP BY y en el SELECT, a los campos que no formen parte de la agrupación, ponerlos como parte de 'una función de agregado' (SUM, MAX, COUNT, etc.).

Otro aspecto a tener en cuenta. Podrías controlar la periodicidad por ejemplo semanal viendo el día de la semana y si es determinado día (lunes, por ejemplo), ejecutar el listado semanal, pero... ¿que pasa si el lunes es festivo? Pues pasa que el correspondiente gerente  cuando llegue el martes no va a tener su informe.
Para solucionar esto puedes buscar variadas soluciones más o menos complejas. Una muy sencilla sería usar un archivo en el que ir guardando las distintas fechas en que se ejecutan los listados y a partir de ellas comparar. Otra posibilidad sería mantener un calendario; esto sería adecuado en un entorno en el que varias aplicaciones necesitan de funcionalidades de este estilo.

Ahora que recapacito, me parece que se me está yendo un poco la olla... todo esto que te decía anteriormente es evidentemente para casos en los que la ejecución de los listados se ejecuta desatendidamente, o si quieres sin seleccionar en ningún lado la periodicidad del informe. En caso de que el usuario pueda seleccionar la periodicidad del informe, olvídate de todo lo que dije en el párrafo anterior...

Para seleccionar las periodicidades, las cláusulas WHERE podrían quedar algo así.

DIARIA:
Código: Text
  1.  
  2. "WHERE Pesada_Total.Fecha =#" & Format(Date, "yyyy/mm/dd") & "#"
  3.  
  4.  

SEMANAL:
Código: Text
  1.  
  2. "WHERE Day(Pesada_Total.Fecha)>=" & Day(Now()) - 7 _
  3. & " AND Day(Pesada_Total.Fecha)<" & Day(Now()) _
  4. & " AND Month(Pesada_Total.Fecha)=" & Month(Now()) _
  5.  
  6.  

MENSUAL:
Código: Text
  1.  
  2. "WHERE Month(Pesada_Total.Fecha) = " & Month(Now())
  3.  
  4.  

ANUAL:
Código: Text
  1.  
  2. "WHERE Year(Pesada_Total.Fecha) = " & Year(Now())
  3.  
  4.  

Podrás observar fácilmente que la condición de la periodicidad SEMANAL cojea de las dos piernas... Al restar 7 días al día 3, por ejemplo, nos salimos del mes. Obtendrás un número negativo y no seleccionarás nada. Para arreglar esto, en el caso semanal, deberás préviamente controlar cual es el día actual y según el resultado de restarle 7, montar el WHERE de forma adecuada... Eso queda de tu parte.

Suerte.

espektra

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Listados Semanales,mensuales Y Anuales
« Respuesta #2 en: Martes 20 de Abril de 2004, 09:16 »
0
Muchisimas gracias de verdad,no crei que nadie me respondiera y menos de esa manera,pero hay un problemilla,vamos que no es que me entere demasiado en programacion y bueno,ya e conseguido hacer algo pero la verdad es que no era lo que yo queria,me aparece la suma de un campo de una tabla y yo lo unico que quiero es la informacion de cada rejistro que haiga cada día,semana,mes y año,que se supone que seran más de uno,y como no lo he hecho yo no se como hacerlo para cambiarlo.
Bueno que si quieres algo ya sabes donde estoy,por si quieres el proyecto y echarle un vistazo.
Muchas gracias de verdad.
Salu2

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Listados Semanales,mensuales Y Anuales
« Respuesta #3 en: Miércoles 21 de Abril de 2004, 09:08 »
0
Hola espektra.

Me da mucha pereza ponerme a examinar un proyecto, pero si quieres, publica las sentencias SQL y tal vez te pueda decir algo...

Chao.

espektra

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Listados Semanales,mensuales Y Anuales
« Respuesta #4 en: Miércoles 21 de Abril de 2004, 09:49 »
0
Bueno aber,esque no te vas a enterar por mucho que publique las sentencias pero bueno...Yo te envio el codigo del formulario que solamente es uno y apenas tiene escrito algo,que aunque este bien no es lo que yo quiero.
-----------------------------------------------------------------------------------------------
Dim Meses(1 To 12) As String
Dim rs As New ADODB.Recordset

Private Sub cmd_Ver_Click()
Dim AuxFecha As Date
If Opt_opciones(1).Value Then
   flex.ClearStructure
   flex.Rows = 2
   flex.Cols = 2
   flex.TextMatrix(0, 1) = "PesoTotal"
   AuxFecha = DTP_Fecha(1).Value
   Fila = 0
   While AuxFecha <= DTP_Fecha(2).Value
      FechaConsulta = Format(AuxFecha, "mm/dd/yy")
      sql = "select sum(PesoTotal)as SumaPesos from Pesada_Total where Fecha=#" & FechaConsulta & "#"
      rs.Open sql, con, adOpenDynamic, adLockOptimistic
      If Not IsNull(rs("SumaPesos")) Then
         If Fila = 0 Then
            flex.TextMatrix(1, 0) = AuxFecha
         Else
            flex.AddItem AuxFecha
         End If
         Fila = Fila + 1
         flex.TextMatrix(Fila, 1) = rs("SumaPesos")
      End If
      rs.Close
      AuxFecha = AuxFecha + 1
   Wend
End If

If Opt_opciones(2).Value Then
   flex.ClearStructure
   flex.Rows = 2
   flex.Cols = 2
   flex.ColWidth(1) = 1500
   flex.TextMatrix(0, 1) = "Peso Total"
   Fila = 0
   
   For i = 1 To 12
      sql = "select sum(PesoTotal)as SumaPesos from Pesada_Total where year(Fecha)=" & cmb_año.Text _
            & " and Month(Fecha)=" & i
      rs.Open sql, con, adOpenDynamic, adLockOptimistic
     
         If Fila = 0 Then
            flex.TextMatrix(1, 0) = Meses(i)
         Else
            flex.AddItem Meses(i)
         End If
         Fila = Fila + 1
         If Not IsNull(rs("SumaPesos")) Then
            flex.TextMatrix(Fila, 1) = rs("SumaPesos")
         Else
            flex.TextMatrix(Fila, 1) = "No hay registros"
         End If
      rs.Close
   Next i
   
End If

End Sub

Private Sub Command1_Click()
Unload Me
End Sub

Private Sub Form_Load()
DTP_Fecha(1).Value = Date
DTP_Fecha(2).Value = Date
Meses(1) = "Enero"
Meses(2) = "Febrero"
Meses(3) = "Marzo"
Meses(4) = "Abril"
Meses(5) = "Mayo"
Meses(6) = "Junio"
Meses(7) = "Julio"
Meses(8) = "Agosto"
Meses(9) = "Septiembre"
Meses(10) = "Octubre"
Meses(11) = "Noviembre"
Meses(12) = "Diciembre"
For i = 2003 To 2010
   cmb_año.AddItem i
Next i
cmb_año.ListIndex = 0
End Sub
-----------------------------------------------------------------------------------------------
Ya te dije que queria modificarlo para que solo apareciera los datos de los rejistros que hay cada dia,semana,mes y año,que seran más de uno.Si entiendes algo y me puedes ayudar bien y si no pues gracias de todos modos.
Salu2

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Listados Semanales,mensuales Y Anuales
« Respuesta #5 en: Miércoles 21 de Abril de 2004, 10:16 »
0
Hola.

En principio, y así por encima, debes agregar a las sentencias SQL un GROUP BY , es decir, agruparlas o resumirlas de cierta manera: por la fecha (GROUP BY Fecha), por el mes de la fecha (GROUP BY Month(Fecha)), por el año de la fecha (GROUP BY Year(Fecha)).

Espero que esto te sirva.
Chao.

espektra

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Listados Semanales,mensuales Y Anuales
« Respuesta #6 en: Miércoles 21 de Abril de 2004, 14:18 »
0
Mmmmm...no se a que te refieres queriendo agrupar los registros pero de todas maneras lo pondre.No te preocupes que no te doy mas la lata,ya veo que no tienes muchas ganas de  andar de aqui para alla con el codigo.De todas maneras gracias por molestarte.
salu2