Domingo 22 de Diciembre de 2024, 23:55
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Listados Semanales,mensuales Y Anuales
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Listados Semanales,mensuales Y Anuales (Leído 1567 veces)
espektra
Nuevo Miembro
Mensajes: 5
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.
Tweet
Brroz
Miembro de PLATA
Mensajes: 1058
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
"WHERE Pesada_Total.Fecha =#" & Format(Date, "yyyy/mm/dd") & "#"
SEMANAL:
Código: Text
"WHERE Day(Pesada_Total.Fecha)>=" & Day(Now()) - 7 _
& " AND Day(Pesada_Total.Fecha)<" & Day(Now()) _
& " AND Month(Pesada_Total.Fecha)=" & Month(Now()) _
MENSUAL:
Código: Text
"WHERE Month(Pesada_Total.Fecha) = " & Month(Now())
ANUAL:
Código: Text
"WHERE Year(Pesada_Total.Fecha) = " & Year(Now())
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
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
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
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
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
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
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Listados Semanales,mensuales Y Anuales