Access - Cambiar el valor de alto ancho arriba y abajo de un botón

 
Vista:
sin imagen de perfil
Val: 35
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Cambiar el valor de alto ancho arriba y abajo de un botón

Publicado por Silvio (20 intervenciones) el 28/05/2020 02:16:08
Hola necesito cambiar el tamaño de un boton de comando desde vba cuando abro el fomulario

tengo una tabla comandos con tres valores

nombre alto ancho arriba abajo

comand1 566 1700 566 566

comand1 566 2500 1700 2500
comand1 1700 566 1700 566



lo que deseso es que al abrir el formulario cada boton que tiene el mismo nombre me coloque esos valores
Me.Comando1.Height = busqueda en tabla comandos (comand1, valor alto )
y los comandos para los otras 3 igual
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

Cambiar el valor de alto ancho arriba y abajo de un botón

Publicado por Anonimo (3312 intervenciones) el 28/05/2020 21:24:29
Como manipular controles:

1
2
3
4
Dim Dato_N As Long
For Dato_N = 1 To 40
Me.Controls.Item("Comando" & Dato_N).Height= valor_para_ese_dato ' que también puede utilizar el índice del bucle
Next Dato_N
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
sin imagen de perfil
Val: 35
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Cambiar el valor de alto ancho arriba y abajo de un botón

Publicado por Silvio (20 intervenciones) el 28/05/2020 23:45:36
perdon que soy bastante novato. pero me doy muchisima maña

este el codigo que logre gracias a sus ayudas y otros foros

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
If IsNull(Me.Ubicacion1) Then
Me.Comando01.Visible = False
Else
Me.Comando01.Caption = Ubicacion1
Me.Comando01.Width = DLookup("Ancho", "comandos", "[comando] = 'Comando01'")
Me.Comando01.Height = DLookup("Alto", "comandos", "[comando] = 'Comando01'")
Me.Comando01.Top = DLookup("Arriba", "comandos", "[comando] = 'Comando01'")
Me.Comando01.Left = DLookup("izquierda", "comandos", "[comando] = 'Comando01'")
End If
 
If IsNull(Me.Ubicacion2) Then
Me.Comando02.Visible = False
Else
Me.Comando02.Caption = Ubicacion2
Me.Comando02.Width = DLookup("Ancho", "comandos", "[comando] = 'Comando02'")
Me.Comando02.Height = DLookup("Alto", "comandos", "[comando] = 'Comando02'")
Me.Comando02.Top = DLookup("Arriba", "comandos", "[comando] = 'Comando02'")
Me.Comando02.Left = DLookup("izquierda", "comandos", "[comando] = 'Comando02'")
End If

.....  If IsNull(Me.Ubicacion40) Then   ......



continua asi hasta el 40 

como hago para no escribir tanto cogigo y que lo parametrice, es posible

desde ya muchas gracias por sus apoyos de siempre, he logrado una hermosa apliacion con sus ayudas
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

Cambiar el valor de alto ancho arriba y abajo de un botón

Publicado por Anonimo (3312 intervenciones) el 29/05/2020 01:55:07
Lo que cambia es el numero y este en ocasiones ha de tener dos cifras ¿correcto?

Creamos una variable para poder manejar un bucle:
Dim VLContador As Long

Y generamos el bucle del que conocemos el inicio (es el n. 1) y el final (el 40)

For VLContador = 1 TO 40
…..

Next VLContador

Dentro del bucle meteremos el código del primero y modificándolo … el de los cuarenta (o los que se necesiten)
-- este es el referente a modificar----

If IsNull(Me.Ubicacion1) Then
Me.Comando01.Visible = False
Else
Me.Comando01.Caption = Ubicacion1
Me.Comando01.Width = DLookup("Ancho", "comandos", "[comando] = 'Comando01'")
Me.Comando01.Height = DLookup("Alto", "comandos", "[comando] = 'Comando01'")
Me.Comando01.Top = DLookup("Arriba", "comandos", "[comando] = 'Comando01'")
Me.Comando01.Left = DLookup("izquierda", "comandos", "[comando] = 'Comando01'")
End If


Para diferenciar los objetos su nombre lo dividiremos en dos partes, la fija y la variable
La variable estará referenciada con el contador y para lograr que tenga dos cifras … la función FORMAT


1
2
3
4
5
6
7
8
9
10
11
12
Dim Cuenta As Long
For Cuenta = 1 To 40
    If IsNull(Me.Controls.Item("Ubicacion" & Cuenta)) Then
        Me.Controls.Item("Comando" & Format(Cuenta, "00")).Visible = False
        Else
        Me.Controls.Item("Comando" & Format(Cuenta, "00")).Caption = "Ubicacion" & Cuenta
        Me.Controls.Item("Comando" & Format(Cuenta, "00")).Width = DLookup("Ancho", "comandos", "[comando] = '" & Controls.Item("Comando" & Format(Cuenta, "00")) & "'")
        Me.Controls.Item("Comando" & Format(Cuenta, "00")).Height = DLookup("Alto", "comandos", "[comando] = '" & Controls.Item("Comando" & Format(Cuenta, "00")) & "'")
        Me.Controls.Item("Comando" & Format(Cuenta, "00")).Top = DLookup("Arriba", "comandos", "[comando] = '" & Controls.Item("Comando" & Format(Cuenta, "00")) & "'")
        Me.Controls.Item("Comando" & Format(Cuenta, "00")).Left = DLookup("izquierda", "comandos", "[comando] = '" & Controls.Item("Comando" & Format(Cuenta, "00")) & "'")
        End If
    Next Cuenta

La función DLookup utilizada de forma tan reiterada, no dará un resultado optimo (lo dará pésimo)

Lo ideal en estos casos es utilizar la tabla que contiene los datos, se abriría una vez al inicio y al finalizar se cierra (DLookup hace lo mismo pero la abre cierra cada vez que accede y cuarenta ciclos por cuatro accesos son 160 accesos)
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
sin imagen de perfil
Val: 35
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Cambiar el valor de alto ancho arriba y abajo de un botón

Publicado por Silvio (20 intervenciones) el 29/05/2020 03:27:32
muchas gracias por responder...

el caption del boton me da resultado Ubicacion1 y deberia dar el valor del campo "Mesa 0"
luego de aplicarla no me mas nada, no mueve los botones como la funcion original y no cambia tampoco los siguientes nombres

por otro lado tu me dices que no es viable usar tanto el dlookup
como deberia solucionarlo

la funcion mas alla de tanto escribir funciona muy bien y hace lo que deberia hacer...
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

Cambiar el valor de alto ancho arriba y abajo de un botón

Publicado por Anonimo (3312 intervenciones) el 29/05/2020 09:16:55
Lo único que he intentado (carezco de tus datos y recrear un teórico entorno me parece 'demasiado') es darte la idea de como hacer algo, el intentarlo asi como aplicarlo corre de tu cuenta.

Hay (en mi aportación) dos formas de reconstruir nombres:

Si el campo se llama 'Ubicacion1' y continua a 'Ubicacion40' :
.. xxxx = variable numérica incremental ….

El nombre se crea así:
Parte fija & parte variable
Parte fija = "Ubicación"
parte variable (1, 2 … 39, 40)

la cifra 'a pelo' en xxxx ==> Me.Ubicacion1
"Ubicación" & xxx

la cifra con dos digitos en xxxx ==> Me.Comando01
"Comando" & Format(xxx,"00")


Si el problema esta en que aparece un espacio no deseado (Ubicacion1 ==> Ubicación 1) … creo recordar que 'en uno de sus automatismos' , Access deja un espacio para el signo menos (en blanco si es positivo), se soluciona con FORMAT (que hace lo que tu le indiques), selecciona FORMAT, pulsas F1 y descubre el mundo de la pintura de colores (es lo que hace FORMAT, colorea a gusto del usuario).

Adenda: la función TRIM recorta espacios al inicio y final: "Ubicación" & xxx ==> "Ubicación" & Trim(xxx)

DLookup funciona, pero lo hace siguiendo de forma estricta las normas, un símil:

Eres el controlador de accesos a un entorno y la norma dice que has de acompañar al visitante desde la entrada a su destino …

Un usuario :
Lo haces según normas y todos te felicitan

Un grupo de usuarios (un colegio, por ejemplo):
Opción uno: normas estrictas y trasladas uno a uno a los 30 estudiantes
Opción dos: delimitas el grupo y (como conjunto) los trasladas en un único viaje.

Cual es la opción optima ….?
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