Access - Comparar dato introducido en cuadro combinado con un rango de horas

 
Vista:
Imágen de perfil de Juan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Comparar dato introducido en cuadro combinado con un rango de horas

Publicado por Juan (150 intervenciones) el 28/04/2018 12:12:41
Hola a todos,

Me explico a ver si me podeis ayudar.

Tengo un formulario en Access 2007, donde se seleccionan unos datos a partir de un cuadro combinado, a parte de otros. Ese sería un nombre de EQUIPO DE MEDIDA.

Se trabaja en tres turnos, de 6 AM a 2 PM, de 2 PM a 10 PM, y de 10 PM a 6 AM.

Necesito que al seleccionar un EQUIPO DE MEDIDA en el cuadro combinado, y otro técnico de ese mismo turno ya ha seleccionado antes el mismo, avise que ya se ha utilizado en ese turno y que está repetido, es para evitar equivocaciones.

Gracias por vuestra ayuda!
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

Comparar dato introducido en cuadro combinado con un rango de horas

Publicado por Anonimo (3322 intervenciones) el 29/04/2018 01:21:20
No aprecio cual es el problema o que es lo que se ha intentado y no funciono.

Hay mas alternativas, en líneas generales:
..... una tabla que tenga el ID del equipo, un campo para la fecha y tres (booleanos) uno para cada turno

Cuando el operario despliegue el cuadro combinado, solo le aparecerían los equipos cuyo campo (para esa fecha y turno) no constase como TRUE en la tabla anterior (los campos de tipo booleano solo pueden ser True o False).

Si esta disponible y lo reserva, a ese registro y en ese turno y fecha se le actualiza el valor a TRUE, con lo que ya no estará disponible en el cuadro combinado para el siguiente operario.
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
Imágen de perfil de Juan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Comparar dato introducido en cuadro combinado con un rango de horas

Publicado por Juan (150 intervenciones) el 29/04/2018 14:06:54
Hola,

Gracias por la repuesta, el problema es que no se como plasmar el código en visual. Me intentaré explicar mejor.

Cuando el operario despliegue el cuadro combinado quiero que aparezcan todos los 'EQUIPOS' ya que ya tengo creada una condición SI/NO para que no aparezcan en el cuadro combinado cuando estén averiados o fuera de fecha de uso.

La idea de tener el id, el campo para la fecha y utilizar boolean sí que la tengo, pero primero ya me estanco en dar a los turnos el rango de tiempo, en el campo FECHA tengo fecha/hora (Fecha general) pero no sé como indicar que está dentro de esos tres turnos.

Gracias, saludos.
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

Comparar dato introducido en cuadro combinado con un rango de horas

Publicado por Anonimo (3322 intervenciones) el 30/04/2018 17:28:37
Si en el momento actual ya se aplica un filtro para que solo aparezcan determinados equipos, creo que añadirle una condición mas (su disponibilidad) no será un problema serio.

Si el equipo (los equipos en general) se asignan por turno (la asignación es para el turno completo), creo que complicarse con cálculos horarios es poco eficiente, cuando el turno (que puede estar definido con una letra M: mañana, T: Tarde, N:Noche) en conjunción con la fecha, define un periodo concreto.

No se aclara o define como se efectúa esa asignación o como se gestiona (y en función de ello se abriría un abanico especifico de posibilidades)

Una visión general (desde la distancia) plantearía una tabla de uso temporal (que también puede ser un histórico si no se borran registros) en la que cada jornada generaría un numero finito de registros (uno por cada equipo que pueda estar disponible) con el equipo, fecha y un campo (en principio vacío) por turno

Esta tabla seria la que alimentaria al combo de selección, combo que presentaría (para cada turno) solo los equipos de la fecha que se seleccione y cuyo campo (el que corresponda con el turno) este vacío.

Cuando se seleccione y confirme el equipo, una simple consulta de actualización marcaria como ocupado el campo correspondiente al turno de ese equipo + fecha (al actualizar el campo, dejaría de ser visible y por ello seleccionable en el combo ... al menos ese día concreto)
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
Imágen de perfil de Juan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Comparar dato introducido en cuadro combinado con un rango de horas

Publicado por Juan (150 intervenciones) el 19/06/2018 10:37:52
Gracias por la ayuda, lo intenté hacer con consultas pero no di con la tecla. Indagando encontré ejemplos hechos con VB y los adapté.

Dejo aquí lo realizado para si a alguien le sirve de ayuda.

- Añado en la Tabla las columnas, TXTTURNO y Nturno.
- Añado dos cuadros de texto ocultos en el formulario con su Origen de control, TXTTURNO y Nturno.

En el Formulario, Al activar registro...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
' Horarios Turnos
 
If Not IsNull(Me.Hora) Then
    If Format(Me.Hora, "HH:mm:ss") >= Format(#6:00:00 AM#, "HH:mm:ss") And Format(Me.Hora, "HH:mm:ss") < Format(#2:00:00 PM#, "HH:mm:ss") Then
        Me.TXTTURNO = "1"
    ElseIf Format(Me.Hora, "HH:mm:ss") >= Format(#2:00:00 PM#, "HH:mm:ss") And Format(Me.Hora, "HH:mm:ss") < Format(#10:00:00 PM#, "HH:mm:ss") Then
        Me.TXTTURNO = "2"
    Else
        Me.TXTTURNO = "3"
    End If
Else
    Me.TXTTURNO = Null
End If
 
If Me.TXTTURNO = "1" Then
Me.Nturno = "Mañana"
Else: End If
If Me.TXTTURNO = "2" Then
Me.Nturno = "Tarde"
Else: End If
If Me.TXTTURNO = "3" Then
Me.Nturno = "Noche"
Else: End If

- Añado en la Tabla las columnas, Nturno, Fecha, ultimoturno, ultimafecha.
- Añado dos cuadros de texto ocultos con su Origen de control Nturno, Fecha, ultimoturno, ultimafecha.

- En el Cuadro combinado donde aparecen los equipos que se introducen, Después de actualizar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim regAnterior As Variant
 
 
    regAnterior = Nz(DLast("Nturno", "Tabla Entrada", "Equipo='" & Me.Equipo.Value _
                        & "' AND Id<" & Me.Id.Value), 0)
    fechaAnterior = Nz(DLast("Fecha", "Tabla Entrada", "Equipo='" & Me.Equipo.Value _
                        & "' AND Id<" & Me.Id.Value), 0)
 
        Me.ultimoturno.Value = regAnterior
        Me.ultimafecha.Value = fechaAnterior
 
        If Me.Nturno.Value = regAnterior And Me.Fecha.Value = fechaAnterior Then
            Select Case MsgBox("Ya se ha utilizado este Equipo de medida en el turno de " & (Nturno) & ", deseas continuar?", vbExclamation + vbOKCancel, "AVISO!")
Case vbOK
 
Case vbCancel
 
Me.Fecha.Value = Null
Me.Equipo.Value = Null
Me.Undo
DoCmd.SetWarnings False
DoCmd.Close
End Select

La parte final del case vbCancel es para que no me cree un nuevo registro, es opcional.
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