Foros del Web » Programando para Internet » ASP Clásico »

Mostrar fecha de no actividad

Estas en el tema de Mostrar fecha de no actividad en el foro de ASP Clásico en Foros del Web. Buenas. Lo que quiero hacer es, mostrar un listado de registros que no hayan visto actividad un dia en especifico desde tal fecha., Me explico: ...
  #1 (permalink)  
Antiguo 21/04/2005, 21:07
 
Fecha de Ingreso: diciembre-2001
Ubicación: Santo Domingo, R.D.
Mensajes: 240
Antigüedad: 22 años, 5 meses
Puntos: 0
Pregunta Mostrar fecha de no actividad

Buenas.

Lo que quiero hacer es, mostrar un listado de registros que no hayan visto actividad un dia en especifico desde tal fecha., Me explico:

Yo tengo una tabla con un campo fecha, en este campo se agrega un registro fecha 21/04/2005 y un campo codigo 01, lo que quiero es, que si el codigo 01 no tiene actividad el 20/04/2005 , y el 21/04/2005 si tiene me tire un reporte indicandome que en la fecha del 20/04/2005 el codigo 01 no vio actividad.

Y asi sucesivamente, que me muestre los dias que el codigo 01 no vio actividad.

Ojala me hayan entendido y me digan una via de solucion.

Gracias.
__________________
Alan Muñoz
www.mbsolucionesweb.com
Soluciones, programación y diseño web
  #2 (permalink)  
Antiguo 21/04/2005, 22:20
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 22 años, 4 meses
Puntos: 2
la verdad que no te entiendo
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #3 (permalink)  
Antiguo 22/04/2005, 17:13
 
Fecha de Ingreso: diciembre-2001
Ubicación: Santo Domingo, R.D.
Mensajes: 240
Antigüedad: 22 años, 5 meses
Puntos: 0
Cita:
Iniciado por dobled
la verdad que no te entiendo
Ya lo sabia

Gracias por tu interes en ayudar.

Ok, tratare de que me entiendas: tu tienes un cliente con el codigo 01, este cliente debe hacerte ingreso de depositos a la base de datos todos los dias, lo que quiero es, que el dia que el codigo 01 no me haga depositos a la base de datos, la aplicacion me detecte esos dias, los cuales el codigo 01 no hizo depositos.

Me di a entender??

Gracias.
__________________
Alan Muñoz
www.mbsolucionesweb.com
Soluciones, programación y diseño web
  #4 (permalink)  
Antiguo 22/04/2005, 17:20
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Bueno, creo que depende mucho de la interfaz que utilices, pues esto se hace con un simple query, supongamos que tengo una forma en la cual paso el id 01 y quiero saber si el día de hoy me depositó, entonces lo único que tienes que hacer sería algo como esto:

"SELECT campos FROM tabla WHERE campo_fecha = getDate();"

Abres tu recordset, si es fin de archivo(EOF), no te hizo depósito el día de hoy...

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 22/04/2005, 17:32
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Bueno

Ocupas validar mas esa consulta, porque getdate te trae el tiempo tambien, entonces eso diria, como si consulto exactamente en este momento.

Bueno, para obtener el dial ultimo deposito usa esto:

Código PHP:
select DATEPART(ddcampo_fecha'DiaDeposito'
         
DATEPART(ddgetdate()) 'DiaActual' 
from Mi_Tabla 
where codigo 
'01' 
Eso te regresara el ultimo dia en que se hizo el deposito, y el dia actual segun la base de datos, ahi ya puedes hacer algo, aunque todavia esta mal en realidad, porque que pasa si el deposito fue el mes pasado, te estaria regresando esa fecha.

Pero bueno, con eso ya tienes mas informacion, tambien esta esto:

Código PHP:
select campo_fecha 'FechaDeposito'
         
getdate() 'FechaActual',
from Mi_Tabla 
where codigo 
'01' 
Luego en ASP haces esto:

Código PHP:

Response
.write "Codigo " codigo " deposito hace " _
            
DateDiff("d"Cdate(rs("FechaDeposito")), CDate(rs("FechaActual"))) _
            
" días" 
Bueno, ahi esta casi todo, tambien, bueno si cuando insertarte la fecha, lo hiciste como Now(), entonces el campo de FechaActual no lo necesitas, y en su lugar necesitas Now() directamente en ASP.

Suerte!!
  #6 (permalink)  
Antiguo 24/04/2005, 12:58
 
Fecha de Ingreso: diciembre-2001
Ubicación: Santo Domingo, R.D.
Mensajes: 240
Antigüedad: 22 años, 5 meses
Puntos: 0
Gracias a todos por su ayuda :)

Pero todavia no me entendieron bien.

Lo que quiero es que me detecte los dias pasados en los que 01 no deposito.

Por ejemplo: el viernes que viene, yo hare un reporte donde me saldran los dias que 01 no deposito. Si 01 no deposito ni lunes ni martes, que en el reporte que yo genere el viernes me salga que 01 no hizo deposito ni lunes ni martes.

Me entienden?
__________________
Alan Muñoz
www.mbsolucionesweb.com
Soluciones, programación y diseño web
  #7 (permalink)  
Antiguo 24/04/2005, 14:07
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 22 años, 4 meses
Puntos: 2
una idea

creo que tendrias que hacer una funcion que te recorra un rango de fechas por ejemplo
seleccionas desde - hasta

desde=01/04/2005
hasta=10/04/2004

entonces aqui nuestra funcion tendria que saber cuantos dias hay en este rango

01/04/2005
02/04/2005
03/04/2005
04/04/2005
............
10/04/2005

y los guardas en un arreglo

despues con un for haces una consulta que te recorra la bd con cada dia y el codigo del cliente y guardas en un arreglo los dias que no te depositó...

eso se me ocurre, si está buena la idea abría que plantear el codigo.
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #8 (permalink)  
Antiguo 24/04/2005, 20:22
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hummm

Bueno, esntonces necesitas un sistema de Log, aqui en el foro ya lo habian pedido antes, es algo como:

tblUsuarios

- codigo
- TODOS LOS CAMPOS

tblUsuariosDepositos

- codigo
- FechaDepositos

Entonces, cada vez que un usuatio hace un deposito, tu apuntas esa fecha en la tabla tblUsuariosDepositos, entonces, cuando sacas el reporte solamente recorres la tabla de depositos y miras en que fechas se hizo un deposito, con eso automaticamente podras decir cuales fechas no se deposito.

Suerte!!
  #9 (permalink)  
Antiguo 24/04/2005, 20:53
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 22 años, 4 meses
Puntos: 2
el quiere un reporte donde le imprima los dias que no deposito, eso imprimiria los dias que si deposito, para saber los dias basado en ese log tendria que fijarse en los dias que no estan para saber.
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #10 (permalink)  
Antiguo 25/04/2005, 04:56
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
no sé cómo tienes definido el campo fecha(como fecha, como varchar...), pero si tiene un valor predeterminado podría hacer algo así como
select from depositos where codigo=codigodelcliente and fecha=valor predeterminado
  #11 (permalink)  
Antiguo 25/04/2005, 10:26
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Bueno

Cita:
dobled
el quiere un reporte donde le imprima los dias que no deposito, eso imprimiria los dias que si deposito, para saber los dias basado en ese log tendria que fijarse en los dias que no estan para saber.
Humm, como sabes algo que nunca paso y que nunca se registro ?

Hummm, creo que no se puede, por eso los log's son eso, historiales de acciones, entonces, con esa tabla de Log's, lo que puede hacer es tomarla y recorrerla e imprimir lo que necesite, ademas la ventaja es que guardara siempre una relacion de depositos.

Si el usuario 1 deposito, se guardara asi:

1 - Lunes
1 - Martes
1 - Jueves
1 - Domingo

Aqui, en el reporte "DIAS SIN DEPOSITAR" simplemente dice, Lunes = si, entonces NO impirmo, Martes = si, entonces NO imprimo, Miercoles = no, entonces SI imprimo porque no hubo deposito.

Con ese log tienes la informacion necesario para crear cualquier reporte

Cita:
dobled
desde=01/04/2005
hasta=10/04/2004

entonces aqui nuestra funcion tendria que saber cuantos dias hay en este rango

01/04/2005
02/04/2005
03/04/2005
04/04/2005
............
10/04/2005

y los guardas en un arreglo

despues con un for haces una consulta que te recorra la bd con cada dia y el codigo del cliente y guardas en un arreglo los dias que no te depositó...
Sorry, espero que no te molestes, no es en mal plan, pero ese metodo es muy ineficiente e inexacto.

1. Necesitas establecer tu a mano (CODIGO DURO) un rago de fechas/
2. Una consulta para cada dia. (2 meses = 60 consultas a la base de datos)

3. PREGUNTA: Que necesita haber guardado en la base de datos para saber que NO HUBO DEPOSITOS??

4. RESPUESTA: Necesita guardar los dias que si hubo depositos, de esa manera sabra cuales no hubo.

Entonces bueno, eso es lo que veo mal en el metodo que porpones, y el metodo del Log, la verdad le veo mas ventajas, porque ocuparias solamente esto:

1. Una consulta al Log que regresa todo el registro de un cliente (1)
2. Recorrer el recordset y basados en una tabla de dias (Lunes - Domingo) e imprimir el dia que no encontramos en la base de datos.

Ya depende de cada persona como hacer el while para hacerlo eficiente, pero no se necesita recorrer todo el recordset para cada dia, sino que registro por registro puedes decidir si imprimir el dia o no.

Bueno, esos son mis comentarios, gracias por leer. Suerte!!
  #12 (permalink)  
Antiguo 25/04/2005, 10:57
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 22 años, 4 meses
Puntos: 2
el pregunto:
un dia en especifico desde tal fecha? me suena a rango de fechas o NO?

tu preguntas:

Humm, como sabes algo que nunca paso y que nunca se registro ?

el te reponde al comienzo!!

Yo tengo una tabla con un campo fecha, en este campo se agrega un registro fecha 21/04/2005 y un campo codigo 01,

dices que se ingresa un rango de fechasa mano (codigo duro) ¿donde esta la flexibilidad de la consulta?
cuantas consultas te ahorras con tu metodo?
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #13 (permalink)  
Antiguo 25/04/2005, 11:11
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Ok

Me referia a tu metodo, donde dices:

-----------------

creo que tendrias que hacer una funcion que te recorra un rango de fechas por ejemplo
seleccionas desde - hasta

desde=01/04/2005
hasta=10/04/2004

entonces aqui nuestra funcion tendria que saber cuantos dias hay en este rango

01/04/2005
02/04/2005
03/04/2005
04/04/2005
............
10/04/2005

y los guardas en un arreglo

despues con un for haces una consulta que te recorra la bd con cada dia y el codigo del cliente y guardas en un arreglo los dias que no te depositó...

-----------------

Es dodigo duro porque tienes que establecer la fecha, igual, y luego una consulta para cada fecha (N consultas), entonces, bueno, esta funcion lo mas seguro es que sea necesaria, pero en una interface donde dice: Este reporte lo quieres desde X hasta Y fecha, ahi si lo necesita.

Para las fechas, necesita un log afuerzas, sino en la misma tabla tendra N datos repetidos para poder tener fechas acumulables, por eso las dos tablas separadas, una para datos del usuario y aparte una tabla de Log's (Depositos), entonces con ese metodo lo unico que digo es que podra lograr lo que necesita, y ademas le servira para futuros reportes, como:

1. Que dias deposito X cliente?
2. Numero de depositos por cliente:
3. Depositos en X mes
4. Etc....

Todo eso con 1 sola consulta al database.

Bueno, esa es mi opinion, el cierto pregunto algo pequeño, pero la solucion que estaban ofreciendo era muy basica, o bien exacta al problema pero ineficiente, yo solo propongo un rediseño de la base de datos donde tenga mayor flexibilidad y aclaro que hacer N consultas por fecha es muy ineficiente, y que una manera eficiente (tal vez no la mejor), es este metodo de tablas.

Tu metodo:

1. Rango de fechas
2. Arreglo que tiene todas las fechas intermedias
4. Consulta a la base de datos para cada fecha.

El problema de el se resulve con esto:

1. Dime la fecha que necesitas:
2. Consulta la base de datos y si no encuentras esta fecha entonces NO DEPOSITO

Metodo de Logs que propuse:

1. Rango de fechas --> Si el lo necesita, desde un formulario
2. Arreglo de 7 dias = (Lunes, Martes, Miercoles, Jueves, Viernes)
3. Consulta al log del usuario segun las fechas puestas (una sola consulta)
4. Recorrer ese arreglo 1 vez y decir que dias no deposito.

El problema de el se resuelve con esto:

1. Dime que fecha necesitas:
2. Consulta a la tabla de logs, si no encuentra esta fecha entonces NO DEPOSITO.

Entonces, el sistema de Logs lo unico que veo de ventaja es que ofrece mas flexibilidad y ademas es mas eficiente la forma de atacar el problema.

Ese es mi punto de vista.

Suerte!!
  #14 (permalink)  
Antiguo 25/04/2005, 11:37
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 22 años, 4 meses
Puntos: 2
con esto me doy cuenta que lo que hablas es igual a lo que dije, lo unico que cambia es el punto 4

Metodo de Logs que propuse:

1. Rango de fechas --> Si el lo necesita, desde un formulario 'segun tú, codigo duro2. Arreglo de 7 dias = (Lunes, Martes, Miercoles, Jueves, Viernes)' el arreglo que mencione
3. Consulta al log del usuario segun las fechas puestas (una sola consulta)' la consulta a la bd4. Recorrer ese arreglo 1 vez y decir que dias no deposito.

mas claro donde
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #15 (permalink)  
Antiguo 25/04/2005, 14:28
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Si

Es casi lo mismo, pero con otro enfoque:

1. Rango de fechas --> Si el lo necesita, desde un formulario

- Desde un formulario no es codigo duro

2. Arreglo de 7 dias = (Lunes, Martes, Miercoles, Jueves, Viernes)

- No es lo mismo que (1/Enero/2005, 2/Enero/2005 ... 30/Enero/2005)

3. Es un arreglo para comparar local el el while con los resultados ya devueltos, y el que tu proponias era para realizar una consulta con dada fecha, mi arreglo es solo con los nombres de los dias, pero igual podria ser como numeros, etc, y solo 7 espacios.

Te digo, si es casi lo mismo, pero lo unico que yo habia puesto era un enfoque diferente para atacar el problema de una manera mas eficiente en cuestion de bases de datos, y mas faci. (segun yo jejejeje)

Suerte!!
  #16 (permalink)  
Antiguo 25/04/2005, 17:31
 
Fecha de Ingreso: diciembre-2001
Ubicación: Santo Domingo, R.D.
Mensajes: 240
Antigüedad: 22 años, 5 meses
Puntos: 0
WOW Gracias a todos por sus respuestas.

Me han despertado mi creatividad para programar este codigo, ya les cuento como les fue.

Gracias :)
__________________
Alan Muñoz
www.mbsolucionesweb.com
Soluciones, programación y diseño web
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:33.