Recorrer tablas y activar/desactivar botones de comando

Mi consulta es la sgte.: En un formulario frVjesClientes tengo un cuadro combinado llamado "ccCodVje" y un cuadro de texto llamado "txtbutaca", al recibir el enfoque el cuadro de texto quiero que me abra un segundo formulario en el cual tengo varios botones de comando los cuales representan/simulan las butacas de un micro. Al abrirse este segundo formulario quiero que los botones de comando estén activados o desactivados acorde al resultado de recorrer una tabla llamada tbVjesClientes filtrada por el valor del cuadro combinado ccCodVje contra el campo de la tabla CodVje y así poder determinar que butacas estan libres para poder asignarlas a los nuevos pasajeros que se incorporen al viaje. Trabajo con access 2007 y DAO.

1 respuesta

Respuesta
1

Supongo que de acuerdo con el codViaje corresponde un número de butaco. Aunque no es la mejor forma de hacer este control trataré de ayudarte. Debes crear el evento Al Abrir del formulario botones el código DAO. Algo como:

dim db as Databases

dim rs as DAO.Recordset

dim strsql as string

dim strccCodVje as String

Dim ctlActive As Control

strccCodje=forms!frVjesClientes!ccCodVje

set db=currentbd

strsql="SELECT * FROM tbVjeClientes WHERE CodVje=" " & strccCodje

set rs=db.openrecordset(strsql)

Do Until rs.EOF

    'Aqui activas el botón respectivo

For Each ctlActive In miForm.Controls

  If ctlActive.ControlType = acCommandButton Then

      if  strccCodje=rs!CodVje then

          ctlActive.Enabled = false

      Endif

  End If

Next

   rs.movenext

Loop

Esta es la idea espero te sirva.

Le hice algunos retoques y funciona. Ahora el tema es en esta linea:

If ctlActive.ControlType = acCommandButton Then

      if  strccCodje=rs!CodVje then

          ctlActive.Enabled = false

Los command button se llaman cb1 - cb2 - cb3 y así sucesivamente. Lo que yo necesito hacer es que si para el codigo de viaje asd-123 estan ya asignadas las butacas 1 - 5 - 8 que los command button cb1 - cb5 - cb8 se desactiven. Gracias por tu respuesta...

Estas metido en un tema complejo te recomiendo que estudies los arrays y colecciones, es posible que tengas que programar mucho inclusive debas crear una clase para manejar las reservas.

¡Gracias! 

Te molesto un minuto mas, creo encontré la solución pero tanto en el código que vos me pasaste como en el siguiente no me evalúa la condición en el Do Until o While , al quitarlo me da el error "No hay ningún registro Activo en la línea que te resalto a continuación

Dim rs As Recordset
Dim varButaca As Integer
Dim strCodVje As String
strCodje = Forms!frVjesClientes!CCCodVje

'While Not rs.EOF
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbVjesClientes WHERE CodVje = 'strCodVje'")
varButaca = rs![Butaca]

'rs.MoveNext
If varButaca = 1 Then
Me.cb1.Enabled = False
ElseIf varButaca = 2 Then
Me.cb2.Enabled = False
ElseIf varButaca = 3 Then
Me.cb3.Enabled = False
ElseIf varButaca = 4 Then
Me.cb3.Enabled = False
End If
'Wend

Me alegro que hayas solucionado el problema, así es que se aprende, sigue adelante. No obstante puedes evaluar el recordset contado los registros, si no hay salir del procedimiento, entonces adicioana

IF rs.RecordCount=0 then

  exit sub

Endif

Así no entras al bucle y utiliza DO UNTIL rs.EOF() .

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas