¿Cómo asociar títulos de botones a formularios?

He creado un formulario "resumen_hoy" con 35 botones en los cuales he puesto como título el número del apartamento al cual corresponde. También he creado una consulta "pisos_alquilados_hoy" para saber que apartamentos están alquilados hoy. En el evento al cargar del formulario "resumen_hoy" he puesto:

If DCount("[Id_alquileres]", "pisos_alquilados", " [piso2] = '1002'") > 0 Then
Comando119.BackColor = vbRed

End If

...(35 veces)

(Esta parte no se si se puede formular o hacer de otra manera, para evitar estas 35 repeticiones que ralentizan la apertura del formulario).

Ahora necesitaría que al hacer click en cualquier botón se abra el formulario correspondiente al apartamento en concreto, donde se puedan ver los datos básicos de dicho alquiler. ¿Cómo podría hacer eso?

1 Respuesta

Respuesta
2

Yeyo, es loable el trabajo que te has tomado, pero, honestamente me parece excesivo. No sé como "numeras" los pisos, etc, pero... Verás, si tengo la tabla Pisos

Hago un formulario independiente donde, en vez de botones, le pongo cuadros de texto, que también tienen el evento Al hacer clic de los botones

A cada cuadro le pongo en su origen del control el número de la habitación, y cuando lo abro

Me ha marcado en rojo los alquilados. El código del evento Al activar registro, aunque el formulario no tiene botones de desplazamiento, es

Private Sub Form_Current()
For Each Control In Form.Controls
If Control.ControlType = acTextBox Then
Dim i As Integer
i = Control.Value
If DLookup("alquilado", "pisos", "piso=" & i & "") = True Then
Control.BackColor = vbRed
Else
Control.BackColor = vbWhite
End If
End If
Next
End Sub

Y como puedes ver se trabaja mucho menos

Hola Icue,

Muchas gracias. Esto me ahorra mucho tiempo.

Una vez hecho esto, como puedo, pulsando en el cuadro de texto, abrir un informe filtrado por el número de la habitación sabiendo que este número, en las tablas tiene formato texto (ya que existen tambien habitaciones tipo lavandería, común, oficina,..)? Gracias

Icue,

¿Como podría aplicar el código que me has dado para una variante tipo texto? Creía poder hacerlo pero lo intento sin conseguirlo. gracias

Tendrías que ponerlo como

Private Sub Form_Current()
For Each Control In Form.Controls
If Control.ControlType = acTextBox Then
If DLookup("alquilado", "pisos", "piso like " & Control.Value) = True Then
Control.BackColor = vbRed
Else
Control.BackColor = vbWhite
End If
End If
Next
End Sub

Genial, funciona a la perfección!

Hola Icue, ¿Como podría, apoyando en el cuadro de texto, abrir un formulario filtrado por el nº de habitación (origen del control)?

gracias 

Lo he conseguido poniendo el siguiente código en hacer click del cuadro de texto:

Dim vhabitacion As String
vhabitacion = Nz(Me.Texto109.Value, "")
MiFiltro = "piso2 ='" & vhabitacion & "'"
Me.FilterOn = True
DoCmd.OpenForm "Resumen_reserva", acNormal, , MiFiltro

Pero claro está personalizandolo a un cuadro de texto en concreto que tendría que personalizar a cada cuadro de texto. ¿se podría hacer un código genérico para cualquier cuadro de texto? Y ya sería el no va más si se pudiese poner un código general que haga que apoyando en cualquier cuadro de texto me habra el formulario correspondiente a esa habitación. ¿Es soñar o se puede hacer?

gracias

Yeyo, lo miraré, pero antes permiteme. ¿No sería mucho más sencillo cambiar todos esos botones por un cuadro de lista con origen de la fila en la propia tabla.? Con lo que sólo tendrías que poner, en el evento Después de actualizar del cuadro de lista

Docmd.openform"el que sea",,,"piso like '" & menombredelcuadro & "'"

Y te ahorras todo. Por ejemplo

Y cuando selecciono uno, en este caso el 1005( da igual un informe, ya que no tengo formulario)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas