Código VBA para programar botones de alternar en Access

Expertos Buenos días

Tengo una pequeña pantalla donde intento generar un código para un documento dependiendo del área donde se genero/evaluo, estoy trabajando con botones de Alternar para poder generar parte del código, en la figura adjunta más o menos se ve el detalle.

El grupo Documento, tiene los botones [Taller] [Logística] [Operaciones], dependiendo del botón pulsado, se deberá escribir en la casilla código generado uno de estos 3 valores

Taller --> Ta, Logística --> Lo, Operaciones --> Op

Luego, se coloca u numero correlativo, dependiendo del ultimo valor que este en una tabla (campo : Indicador) y finalmente del grupo Tipo, se colocan los dígitos IN (Inicial), FN(Final), VE (Verificación) y GA(Garantía), finalmente el cuadro de texto código generado quedaría así:

[Codigo Generado] : TA0345VE,  LO0346IN, ....... OP1345GA

No estoy muy seguro de la sintaxis que me permite obtener cual botón se ha pulsado, en cada grupo de opciones, (he probado colocando 1,0, true, false para capturar el valor que guarda la opción pulsada ) el código que intento colocar es:

Private Sub frameDocumento_Click()
   If txtOP1.OptionValue = 1 Then
      Me.txtCodigoGenerado.SetFocus
     Me.txtCodigoGenerado = "TA"
End If

If txtOP2.OptionValue = 1 Then
   Me.txtCodigoGenerado.SetFocus
   Me.txtCodigoGenerado = "LO"
End If
If txtOP3.OptionValue = 1 Then
   Me.txtCodigoGenerado.SetFocus
   Me.txtCodigoGenerado = "OP"
End If

End Sub

Muchas gracias por su asistencia, y lindo domingo para ustedes

1 respuesta

Respuesta
1

Vamos por partes. No necesitas el cuadro de texto Correlativo. Supongamos que tienes la tabla

Verás que el último de Ta 0343

Te pongo la instrucción para los dos primeros botones de arriba y sólo tienes que copiarlo en el botón Operaciones, cambiándole las siglas.

Si tengo el formulario y pulso el botón de Taller, en código me pone el siguiente, o sea 0344

Si ahora pulsara Inicial

Si me fuera a un registro Nuevo, me pondría el siguiente

Y en función del botón de abajo que pulsara, así le pondría las dos letras del final

El código de los dos primeros botones de arriba es el mismo, e igual a lo que debes poner en Operaciones

Private Sub Logistica_Click()
Dim s As String, d
s = DMax("indicador", "tabla1", "left([indicador],2)=""lo""")
d = Val(Mid("" & s & "", 3, 6)) + 1
Codigo = "LO" & Format("" & d & "", "0000")
End Sub
Private Sub Taller_Click()
Dim s As String, d
s = DMax("indicador", "tabla1", "left([indicador],2)=""ta""")
d = Val(Mid("" & s & "", 3, 6)) + 1
Codigo = "TA" & Format("" & d & "", "0000")
End Sub

Y en el caso de los de abajo te pongo el primero

Private Sub Inicial_Click()
Codigo = Codigo & "IN"
End Sub

¡Gracias! Agradezco tu pronta respuesta, seguiré tu consejo ... buen fin de semana

Una consulta solo por la misma curiosidad, ¿si los botones fueran como al inicio los pensé (grupo de opciones) cual es el código que me permite manipular el botón y pasar los valores que quería en el cuadro para armar el código?, tu sugerencia es más practica, pero como estaba buscando hacerlo con botones que alternan, me quedo la duda de como era, gracias por tu aporte !

Es igual. Supongamos que tengo la tabla

Verás que el máximo de TA es 0344. Si tengo el formulario con los grupos de opciones

Si "marco" Taller

Y si ahora marco Verificación

El código de ambos grupos de Opciones, Sector y Concepto es

Private Sub Sector_AfterUpdate()
Select Case Sector
Case Is = 1
Dim s As String, d
s = DMax("indicador", "tabla1", "left([indicador],2)=""ta""")
d = Val(Mid("" & s & "", 3, 6)) + 1
Codigo = "TA" & Format("" & d & "", "0000")
Case Is = 2
Dim p As String, q
p = DMax("indicador", "tabla1", "left([indicador],2)=""lo""")
q = Val(Mid("" & s & "", 3, 6)) + 1
Codigo = "LO" & Format("" & q & "", "0000")
Case Is = 3
Dim t As String, u
u = Val(Mid("" & s & "", 3, 6)) + 1
Codigo = "OP" & Format("" & u & "", "0000")
End Select
End Sub
Private Sub Concepto_AfterUpdate()
Select Case Concepto
Case Is = 1
Codigo = Codigo & "IN"
Case Is = 2
Codigo = Codigo & "FN"
Case Is = 3
Codigo = Codigo & "VE"
Case Is = 4
Codigo = Codigo & "GA"
End Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas