Access - Condicionar Horas a otro campo

 
Vista:
sin imagen de perfil

Condicionar Horas a otro campo

Publicado por Adan (10 intervenciones) el 11/03/2016 16:34:42
Que tal amigos buen día

Tengo otro problema, tengo dos campos>

El Primero es Hora: en formato hora corta
El Segundo es Turno: en formato numero

Quiero que cuando en el campo Hora sea entre las 08:00 a las 19:59 en el campo Turno ponga el valor "1"
y cuando en el campo Hora sea entre las 20:00 y las 07:59 el campo Turno ponga el valor "2"

Creo que es algo sencillo pero no he podido lograrlo.

Muchas gracias y Saludos!
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
sin imagen de perfil

Condicionar Horas a otro campo

Publicado por Enrique Heliodoro (1664 intervenciones) el 11/03/2016 21:20:13
Razonándolo es sencillo:

Si esta en el margen 8 a 19 sera de la zona uno, si no lo esta de la zona dos.

Si no funciona 'entre' (Between en VBA) siempre estará el remedio de mayor y menor

= IIF([formula] , 1, 2)

Donde 'formula' es la expresión que evalúa si es diurno o no
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
sin imagen de perfil

Condicionar Horas a otro campo

Publicado por Adan (10 intervenciones) el 16/03/2016 19:51:39
Gracias nuevamente Enrique,

Podrías ayudarme a como desarrollar la expresión? Estoy muy verde todavia en crear expresiones.
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
sin imagen de perfil

Condicionar Horas a otro campo

Publicado por Enrique Heliodoro (1664 intervenciones) el 16/03/2016 20:07:22
¿No te atreves a intentarlo por lo menos con e clásico 'mayor que' y 'menor que'?

En algún momento hay que comenzar a caminar y a mi este me parece bueno .....
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
sin imagen de perfil

Condicionar Horas a otro campo

Publicado por Adan (10 intervenciones) el 16/03/2016 20:16:51
Claro que lo he intentado, mira este es la expresion que he hecho después de actualizar el campo [Hora]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Hora_AfterUpdate()
If [Hora] >= "08:00" Then
    [Turno] = "1"
Else
If [Hora] <= "19:59" Then
    [Turno] = "1"
Else
If [Hora] >= "20:00" Then
    [Turno] = "2"
Else
If [Hora] <= "07:59" Then
    [Turno] = "2"
End If
 
End Sub

El problema es que no me pone nada en el campo [Turno]

También he probado de la siguiente manera:

1
2
3
Private Sub Turno_GotFocus()
IIF([HORA]>="08:00"&<="07:59",1,2)
End Sub

Y me dice error de sintaxis

Por eso es mi pregunta, de antemano muchas gracias 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
sin imagen de perfil

Condicionar Horas a otro campo

Publicado por Enrique Heliodoro (1664 intervenciones) el 16/03/2016 21:28:01
Access es una maquina y requiere las cosas muy claras (o en vez de ayudar destrozara).

Si deseo indicar un periodo (desde las 8:00 a las 19:59) se lo diría así:

Campo_Hora > #8:00# AND Campo_Hora < #19:59#

Esto es que ese campo (porque puede haber mas de uno, entradas, salidas, bocadillo ....) tiene que cumplir ambas premisas ( AND ==> todas, OR ==> una u otra)

Se deduce que los que no cumplan esas premisas son 'del otro turno' y por cierto:

"8:00" ==> un texto (como si pone 'manzanas')
#8:00# ==> un dato de fecha/hora para Access
(esta en cualquier manual de principiante ....)

En fin, para no complicate mas (y cambiando los nombres), esto debería funcionar como origen de datos de un cuadro de texto INDEPENDIENTE que tenga acceso al dato hora.

= IIF([Campo_Hora] > #8:00# AND [Campo_Hora] < #19:59# , 1, 2)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Condicionar Horas a otro campo

Publicado por Adan (10 intervenciones) el 16/03/2016 23:55:07
Gracias Enrique,

Es mi primer base de datos, y he estado aprendiendo sobre la marcha, pero agradezco de gran manera tu paciencia!
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
sin imagen de perfil

Condicionar Horas a otro campo

Publicado por Adan (10 intervenciones) el 17/03/2016 02:01:00
En verdad gracias Enrique!

Con tu ayuda pude hacerlo de la siguiente manera:

Con el cuadro de texto independiente llamado"T2" introduje = IIF([Campo_Hora] > #8:00# AND [Campo_Hora] < #19:59# , "1", "2")

Después en el cuadro combinado donde deseo almacenar la información cree la sentencia en VBA

Private Sub Hora_AfterUpdate()
Me.Turno = Me.T2

End Sub

Con ello he podido resolver mi problema. En verdad muchas gracias por la paciencia para los que estamos aprendiendo en el camino.
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
sin imagen de perfil

Condicionar Horas a otro campo

Publicado por Enrique Heliodoro (1664 intervenciones) el 17/03/2016 03:06:44
Para que esa vuelta ...

Me.Turno = IIF(Me.[Campo_Hora] > #8:00# AND Me.[Campo_Hora] < #19:59# , "1", "2")

Y si Turno es de tipo numérico:
Me.Turno = IIF(Me.[Campo_Hora] > #8:00# AND Me.[Campo_Hora] < #19:59# , 1 , 2)

Un cuadro combinado solo guardaría información si se le adjudica como origen de datos una 'lista de valores' y aun asi el método indicado NO introduciría dato alguno.

Lo correcto seria guardarlo/actualizarlo en la tabla (la que se supone que es el su origen de datos) y refrescar el contenido del combo, pues este (salvo casos puntuales y específicos) no es mas que un visualizador.
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