Como hacer qe un form muestre asientos disponibles
Gran experto perdoname molestarte mi duda, tengo un form con una matriz de 42 commandbuton son asientos de un bus determinado que se elige eligido una ruta de viaje y a una detrminada hora de viaje, ejemplo: si se elige una ruta; ciudad "X", y esta tiene 2 horas de salida una alas 8:00. A.m y otro alas 11:30 am. Tengo las tablas asientos, horarios, ruta, buses, estas están realcionadas así:
Relacion simbolo (==>) de uno a muchos:
tabla: ruta.idruta==>tabla:asiento.idruta
tabla: ruta.idruta==>tabla:horarios.idruta
tabla: buses.idbus==>tabla:ruta.idbus
TABLA: ASIENTOS, SUS CAMPOS: idruta, asiento, ocupado
TABLA: HORARIOS, SUS CAMPOS: idhorario, idruta, hora_salida, hora_llegada
TABLA: RUTA, SUS CAMPOS: idruta, ruta_nombre, idbus, precio
TABLA: BUSES, SUS CAMPOS: idbus, idruta, descripción, capacidad
La lógica Experto es que en cada hora_salida hay un bus disponible con nuevos asientos disponibles.
Mi pregunta es: como haría el código para deshabilitar (enable=false) los asientos ocupados o pedidos (la matriz de commandbutton) de una determinada hora de salida y ruta elegida, ya que si se elige otra ruta diferente al empezar el día los asientos del bus de esta ruta estaría habilitadas(desocupadas) ya que no habido reserva o pedidos de asientos(venta).
El código que utilizo es este, pero solo muestra todos los asientos y me he confundido
SUB ASIENTOS DISPONIBLES Y OCUPADOS
Sub LlenaCmbPintar()
Dim Cmd As ADODB.Command
Dim Rs As ADODB.Recordset
Set Cmd = New ADODB.Command
Set Rs = New ADODB.Recordset
Cmd.ActiveConnection = Cnn
Cmd.CommandType = adCmdText
Cmd.CommandText = "SELECT asiento, idruta FROM horarios, asientos, ruta, bus WHERE asiento>=1 INTO CURSOR ESTADOASIENTOS"
select estadoasientos
cinstruccion = "Command1(Index)"+trim(str(asiento)) + ".enabled = False"
Command1(i).Enabled = False
&cinstruccion
Set Rs = Cmd.Execute
If Rs.EOF = True Then
MsgBox "Tabla Elementos vacia ...!", vbQuestion
Else
Do While Not Rs.EOF
CmbE.AddItem Trim(Str(Rs!Nro))
LblElemento(Rs!Nro - 1).BackColor = &HFF00&
Rs.MoveNext
Loop
End If
Rs.Close
End Sub
Y como seria el código también para que cuando se empiece un nuevo Día los commandbutton (asientos de bus) aparezcan habilitadas para todas las rutas nueva venta de pasaje.
Relacion simbolo (==>) de uno a muchos:
tabla: ruta.idruta==>tabla:asiento.idruta
tabla: ruta.idruta==>tabla:horarios.idruta
tabla: buses.idbus==>tabla:ruta.idbus
TABLA: ASIENTOS, SUS CAMPOS: idruta, asiento, ocupado
TABLA: HORARIOS, SUS CAMPOS: idhorario, idruta, hora_salida, hora_llegada
TABLA: RUTA, SUS CAMPOS: idruta, ruta_nombre, idbus, precio
TABLA: BUSES, SUS CAMPOS: idbus, idruta, descripción, capacidad
La lógica Experto es que en cada hora_salida hay un bus disponible con nuevos asientos disponibles.
Mi pregunta es: como haría el código para deshabilitar (enable=false) los asientos ocupados o pedidos (la matriz de commandbutton) de una determinada hora de salida y ruta elegida, ya que si se elige otra ruta diferente al empezar el día los asientos del bus de esta ruta estaría habilitadas(desocupadas) ya que no habido reserva o pedidos de asientos(venta).
El código que utilizo es este, pero solo muestra todos los asientos y me he confundido
SUB ASIENTOS DISPONIBLES Y OCUPADOS
Sub LlenaCmbPintar()
Dim Cmd As ADODB.Command
Dim Rs As ADODB.Recordset
Set Cmd = New ADODB.Command
Set Rs = New ADODB.Recordset
Cmd.ActiveConnection = Cnn
Cmd.CommandType = adCmdText
Cmd.CommandText = "SELECT asiento, idruta FROM horarios, asientos, ruta, bus WHERE asiento>=1 INTO CURSOR ESTADOASIENTOS"
select estadoasientos
cinstruccion = "Command1(Index)"+trim(str(asiento)) + ".enabled = False"
Command1(i).Enabled = False
&cinstruccion
Set Rs = Cmd.Execute
If Rs.EOF = True Then
MsgBox "Tabla Elementos vacia ...!", vbQuestion
Else
Do While Not Rs.EOF
CmbE.AddItem Trim(Str(Rs!Nro))
LblElemento(Rs!Nro - 1).BackColor = &HFF00&
Rs.MoveNext
Loop
End If
Rs.Close
End Sub
Y como seria el código también para que cuando se empiece un nuevo Día los commandbutton (asientos de bus) aparezcan habilitadas para todas las rutas nueva venta de pasaje.
1 respuesta
Respuesta de Roberto Alvarado