Access - deseo que un usuario se obligue a diligenciar un campo(dato) una vez al dia

 
Vista:

deseo que un usuario se obligue a diligenciar un campo(dato) una vez al dia

Publicado por javier (13 intervenciones) el 30/12/2005 16:07:37
Buenos dias,por favor ayudenme a crear esta consulta:
deseo que un usuario se obligue a diligenciar un campo(dato) una vez al dia, si el usuario no lo ha hecho, me debe mostrar la advertencia hasta que la condiciìn se cumpla. Se debe validar a diario.
me imagino que puede ser una SQL que busque si el campo (dato) esta diligenciado en las ultimas 24 horas, si no esta, mensaje, si lo esta no muestre nada.

me ayudan por favor

campos:

fechahoy = ahora()
dato

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

deseo que un usuario se obligue a diligenciar un campo(dato) una vez al dia

Publicado por Enrique (1299 intervenciones) el 30/12/2005 17:03:26
Buenas tardes Javier:
Me parece que has pasado por alto un detalle importante en tu pregunta, o al menos no lo explicas. Se supone que ese dato se grabará en una tabla y como sabes, las tablas pueden tener múltiples registros, entonces yo me pregunto ¿hay que verificar todos los registros de la tabla o uno sólo?.
Sea como sea, parece que no lo llevas mal encaminado del todo, porque parece ser que usas un campo fechahoy en el mismo registro del campo dato y seguramente el campo fechahoy se actualizará con la fecha de "hoy" cuando se actualice el campo dato. En el caso de que haya que comprobar todos los registros, habría que hacer un bucle que los compruebe uno por uno para ver si todos tienen la fecha de hoy o no, pero en ambos casos, a mi modo de ver, necesitas usar el Evento Timer (Al cronómetro) de un formulario (preferiblemente el Formulario principal o de Inicio que siempre estará abierto) y dentro de ese Evento utilizar o bien la función de dominio Dlookup si solo hay que comprobar un registro, o recorrer los Recordset de la tabla con DAO y un bucle While - Wend si son todos. Al TimerInterval del cronómetro le pones el tiempo que pasará entre comprobación y comprobacion en milisegundos (60.000 miliseg. = 1 minuto) y si se encuentra el campo sin actualizar activas el mensaje con un simple MsgBox.

¿ Como lo vés ? complicado o no.

Saludos
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

deseo que un usuario se obligue a diligenciar un campo(dato) una vez al dia

Publicado por javier (13 intervenciones) el 30/12/2005 17:33:01
Bueno gracias por las ideas son excelentes, y hago claridad en lo siguiente:
1. si es cierto, y todas sus apreciaciones son correctas, diariamente se estan incluyendo a esa base entre20 y 40 registros y aunque la tabla tiene mas campos, los que me interesa que compruebe son estos dos. por lo tanto, tendria que ulilizar Dao, la pregunta es... mas o menos con Dao como quedaria la consulta? ...( gracias por la ayuda.... DAO aun me queda grande), lo del intervalo de tiempo lo tengo claro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

deseo que un usuario se obligue a diligenciar un campo(dato) una vez al dia

Publicado por Enrique (1299 intervenciones) el 30/12/2005 19:12:14
Pues bien Javier, aqui lo llevas ya hecho, está probado y parece que funciona corectamente. No olvides marcar la Referencia: Microsoft DAO 3.6 Object Library

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Form_Load()
     TimerInterval = 5000 'He puesto 5 segundos para probar.
End Sub
 
Private Sub Form_Timer()
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Select * From Tabla1 Where FechaHoy <>#" & Date & "#")
If rst.RecordCount > 0 Then
     rst.MoveLast: rst.MoveFirst
     While Not rst.EOF
          rst.MoveNext
     Wend
     TimerInterval = 0 'Detiene el crono cuando aparece el MsgBox
MsgBox "Hay " & rst.RecordCount & " Registros no actualizados.", vbInformation, " Aviso"
     rst.Close: Set rst = Nothing
     TimerInterval = 5000 'Reanuda el crono al cerrar el MsgBox
End If
End Sub

He usado Date en Lugar de Now porque Now compara dia y hora y creo que solo es necesario que compare el día. Cuidado con el Formato que le des a FechaHoy en la tabla ya que debe ser el mismo que tengas en la configuración regional de Windows, normalmente si le pones dd/mm/aaaa debe de ir bien.

Espero que te sea de utilidad. Saludos y Feliz año nuevo.
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

deseo que un usuario se obligue a diligenciar un campo(dato) una vez al dia

Publicado por javier (13 intervenciones) el 03/01/2006 01:19:06
Enrique, de antemano gracias por la ayuda, pero no me dio el resultado esperado. Debo aclarar que es culpa mia por no explicar bien lo que necesito espero que me disculpe. pero aunque intente hacerle unas pequeñas modificaciones me hace falta nada para terminarlo. bueno esto sucede, cuando ejecuto su codigo, el resultado que obtengo son todos aquellos registros que son diferentes de "date" y que deben ser actualizados, por lo tanto los datos que estan en fechahoy deberian actualizarse al valor de "date" para que los registros a actualizar sean 0. cierto?. ok, el tema es al reves,: cualquier registro en el campo fechahoy debe ser igual a "date" (no diferente), si no lo encuentra , muestra un MSGBOX con la advertencia cada "n" tiempo, que es lo de menos, para probar estan bien los 5 seg que tenemos., como date cambia a diario (que deducción), todos los dias me va a exigir que haya "un" fechahoy igual a date. o si ni lo canso a punta de msgbox. eso es todo

1
2
3
4
5
6
Set rst = CurrentDb.OpenRecordset("Select * From Tabla1 Where FechaHoy =#" & Date & "#")
If rst.RecordCount = 0 Then
msgbox....
else
 
end if

PERO NO ME FUNCIONA!!!

gracias por la ayuda, siempre es bueno encontrar la luz al final del tunel..... informatico!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

deseo que un usuario se obligue a diligenciar un campo(dato) una vez al dia

Publicado por Enrique (1299 intervenciones) el 03/01/2006 21:00:36
Hola Javier:
Posiblemente sea yo el que no te entendió, y si te digo la verdad no se si todavía lo tengo claro, pero me parece entender que basta con que haya una sola fecha de hoy en cualquier registro para que el MsgBox de Aviso NO SE MUESTRE y sólo lo haga si no hay ninguna fecha de hoy. Bueno pues vamos a seguir probando.
Hacemos una selección de la tabla sin clausula Where (ninguna restricción), hacemos un bucle con While - Wend que va recorriendo los registros y si encuentra alguno con Fecha de Hoy cancela el Evento. Fíjate que al cargar el formulario activamos el Timer en 1 segundo y caso de que al terminar el bucle no haya ninguna Fecha de Hoy, activa el Aviso y al cerrarlo comienza de nuevo el Timer pero ya cada 30 segundos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Form_Load()
    TimerInterval = 1000
End Sub
 
Private Sub Form_Timer()
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Select FechaHoy From Tabla1")
rst.MoveLast: rst.MoveFirst
While Not rst.EOF
If rst!FechaHoy = Date Then Exit Sub
rst.MoveNext
Wend
TimerInterval = 0
MsgBox "No hay ningún registro con fecha de hoy.", vbInformation, "Aviso"
TimerInterval = 30000
End Sub

Dime si nos vamos acercando a la solución, o por el contrario nos alejamos, pero con toda confianza y otra cosa, a mi por lo menos no me trates de usted, prefiero el tuteo, si no te importa.

Saludos y espero tus noticias.
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta

Publicado por javier (13 intervenciones) el 04/01/2006 01:05:18
PPPPPPPPPERFECTOOOOOOOOO!!!!!!!!!!!!!!!!!!!!.... ahora si mis usuarios... o diligencian el campo o se aburren de ver el mensajito!!.. mil gracias por esa SUPEERRR! ayuda!!!

como dicen por ahi..... la ultima y nos vamos.... depronto me puede ayudar con esta otra cosita:
tengo dos informes y ambos tienen la consulta con el parametro de fechas
Entre[xxxxx] y [zzzzz], cuando creo el informe con las dos consultas tengo que digitar el rango de fechas tanto para la primera consulta como para la segunda. Existe la posibilidad que solo tenga que digitar un rango... y ambas consultas tomen ese rango?? si me hice entender?? de antemano gracias por la ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta

Publicado por Enrique (1299 intervenciones) el 04/01/2006 19:10:16
Hola de nuevo Javier:
Te entiendo a medias porque me surgen unas dudas. Dices que tienes dos consultas y dos informes, pero ¿ cada informe tiene su propia consulta, o los dos informes usan la misma consulta ?. Otra cosa, ¿ Abres los informes directamente o desde un formulario ?, ¿Cuando ejecutas el informe se te abre el cuadro de diálogo "Introduzca el valor de parámetro" ?.

No entiendo cuando dices "cuando abro el informe con las dos consultas....." porque me pregunto ¿ como puede basarse un informe en dos consultas ?

De todas formas te digo lo que yo haría en una situación normal (Una Consulta y Un Informe):

Crear un formulario desde el que lanzar el informe y en ese formulario poner dos cuadros de texto y un botón de comando. Cuadros de texto de nombres "Desde" y "Hasta", por ejemplo, con formato fecha corta (dd/mm/aaaa), desde el botón de comando abro el Informe con DoCmd.OpenReport "NombreInforme" y al informe le pongo Origen del Registro la Consulta y para finalizar en el criterio "Fecha" de la Consulta escribo:
Entre Forms!NombreFormulario.Desde Y Forms!NombreFormulario.Hasta

Tu dirás si te sirve esto o por el contrario tu caso es otro distinto.

Saludos
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta

Publicado por javier (13 intervenciones) el 05/01/2006 05:48:08
perfecto... mil gracias si es asi!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar