Access - nombre de cuadro de texto en form y vba

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

nombre de cuadro de texto en form y vba

Publicado por pablo (328 intervenciones) el 13/08/2020 19:51:15
En un form tengo 9 cuadros de texto que llamo a(1),a(2)..., en vba aparecen como a_1_,a_2_,...
Quiero hacer un bucle for-next para asignar valor a cada uno de ellos, cómo lo hago?
Gracias
Pablo
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

nombre de cuadro de texto en form y vba

Publicado por Anonimo (3316 intervenciones) el 13/08/2020 21:41:05
1
2
3
For XXX = 1 To 100 (o mas)
Me.Controls ("A_" & xxx) = ????????
Next XXX
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por pablo (328 intervenciones) el 13/08/2020 22:15:42
Escribi dentro del bucle
1
Me.Controls ("a_" & Str(i) & "_")
Pruebo y señala Controls y dice El uso de la propiedad no es válido
Alguna idea?
Gracias
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

nombre de cuadro de texto en form y vba

Publicado por Anonimo (3316 intervenciones) el 14/08/2020 11:35:31
El código ha de estar en un objeto que posea controles, la verificación (de este clásico) se ha efectuado así:

En un formulario se ha creado un botón que en su evento Click ejecuta
1
Me.Controls("Haber_" & 2) = 12121

El control utilizado (un cuadro de texto), uno de sus eventos es así :
1
Private Sub Haber_2_AfterUpdate()

Si se tiene activada la opción adecuada, al escribir 'me.' aparecen las opciones para ese objeto (generalmente un formulario) se puede seleccionar en la lista desplegable y/o verificar que la posee.
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por pablo (328 intervenciones) el 14/08/2020 18:11:51
Hola, gracias por contestar. Aclaro la pregunta. Tengo 9 cuadros de texto de nombre: a(1), a(2)...,a(9), está declarada una matriz a(1 to 9), intento mdte un bucle for i=1 to 9 asignar a a(1)=1, a(2)=2..., a(9)=9. Si escribo me. me aparecen las variables: _1_, _2.,..._9_, que no son las que declaré, ¿cómo soluciono el problema?
Gracias
Pablo
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

nombre de cuadro de texto en form y vba

Publicado por Anonimo (3316 intervenciones) el 14/08/2020 23:53:48
Creo que necesitamos centrar el entorno...
Una cosa es tener objetos (controles) en un formulario y asignarles un nombre y otro es tener una matriz.

Lo que no se debería tener son objetos con el mismo nombre (independiente de que sean de diferente tipo) pue uno de los dos (la maquina o el usuario) al final .... la acaba liando.

Si con un bucle deseo darle valores a cualquiera de esos conjuntos, lo primero es utilizar el bucle (porque para hacerlo 'a mano' no se precisa ningún bucle).

La asignación que muestras ( for i=1 to 9 asignar a a(1)=1, a(2)=2..., a(9)=9........... ) se debería poder escribir así:

1
2
3
For i=1 to 9
a(i)=i
Next i

Dicho esto ¿podemos partir de cero con un nuevo planteamiento?.
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por Pablo (328 intervenciones) el 16/08/2020 17:31:52
Hola a todos. Estoy haciendo un curso de Access 2007 de Fermi Vila. Concretamente estoy intentando hacer un formulario que pinte la tabla de multiplicar de un número a elegir. Hay 3 columnas, a, b y c, axb=c. , y hay 9 filas, los 9 dígitos excluido el 0. En los apuntes del curso dice algo de que es muy fácil si se usan matricesn pero, me estoy liando más. Hacerlo sin matriz es fácil: a= número seleccionado, b=1,2,3..,9, c=a*b. Vale la pena hacerlo con matrices?

Gracias, no se si esta pregunta habrá sido una tontería

Pablo
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

nombre de cuadro de texto en form y vba

Publicado por Anonimo (3316 intervenciones) el 16/08/2020 19:14:25
No creo que un ejercicio que tenga como fin aprender algo, pueda ser considerado una tontería.

La diferencia entre hacerlo uno a uno y con matrices (para hacer 'lo mismo') consiste básicamente en que uno puede crecer con un par de líneas y el otro requiere una línea por cada cruce de resultados.

Con valores fijos el producto de 3 x (1,2,....9) exige una línea de programación por cada producto a mostrar

1
2
3
4
me.Resultado_1 = 3 *1
me.Resultado_2 = 3 *2
.....
me.Resultado_9 = 3 *9

Con un bucle se puede resolver así:

1
2
3
4
Dim MM as Long
For MM =1 to 9
Me.Controls("Resultado_" & MM) = 3 * MM
Next MM

Las matrices (puedes compararlas con una tabla) tienen sobre las tablas la ventaja de ser muy rápidas y el inconveniente de consumir mucha memoria (memoria de trabajo, la mas 'cara') y el inconveniente de que no son permanentes, al apagar la maquina (o cerrar la aplicación) se desvanecen, las tablas no serán tan veloces (lo son y mucho) pero son permanentes.

El código que se utilizo para el ejemplo del bucle, nos sirve para recorrer los cuadros de texto (del uno al nueve) y para multiplicar por el valor que este almacenado en el elemento de la matriz.

.-- matriz de nueve elementos con valores diversos (las matrices 'normalmente' comienzan en cero) la llamare 'MisDatos'

1
2
3
4
Dim MM as Long
For MM =0 to 8
Me.Controls("Resultado_" & MM + 1) = 3 * Mis_Datos(MM)
Next MM

Si queremos solicitar el numero (para utilizarlo en lugar del tres del ejemplo) ... un cuadro de texto de nombre 'El_Numero'

1
2
3
4
Dim MM as Long
For MM =0 to 8
Me.Controls("Resultado_" & MM + 1) = me.el_numero * Mis_Datos(MM)
Next MM


Estas siguiendo un curso, si no tienes claro algo ... lo mejor es que comiences de nuevo ese capitulo y lo repases para entenderlo, tras ello los ejemplos y después se modifican los ejemplos (o se inventan unos) para ver si la teoria y la practica se dominan.
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por Pablo (328 intervenciones) el 16/08/2020 22:06:39
No había leido la contestación de anónimo del 16/08/2020 19:14:25. Me parece muy didactica, te haré caso y intentaré aclarar el problema volviendo a ver el tema.
Gracias
Pablo
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por Pablo (328 intervenciones) el 16/08/2020 21:55:40
Acabo de releer la contestación del 14/08/20-23:53. Para hacerllo así habría que dimensionar la matriz a(i), se haría así: dim a(1 to 9) as..
Gracias
Pablo
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

nombre de cuadro de texto en form y vba

Publicado por Anonimo (3316 intervenciones) el 16/08/2020 22:25:03
Creo que darle una 'vuelta mas' al capitulo de las matrices no seria la peor de las ideas ....

Si se desea cambiar lo de que las matrices comiencen en cero (y perdiendo un elemento o 'internamente' renombrando al índice) según la ayuda de Access (que es la de mas alto nivel, es 'la palabra de su creador') dice al respecto:

Si una matriz se indexa desde 0 ó desde 1 depende del valor de la instrucción Option Base. Si Option Base 1 no se especifica, todos los índices de matrices comienzan en cero.


Intenta obtener los datos mas verídicos, lo que aprendes hoy es la base del mañana.

Nota:
Creo que en ninguna de mis respuestas se toca el tema de la declaración de las matrices, considere que si las estabas aplicado las conocías ya y desconociendo el punto en que te encuentras .... podría complicarte lo que estas asentando.
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por Pablo (328 intervenciones) el 17/08/2020 18:49:44
En el tema de las matrices las declara A(1 to 8,1 to2) por ejemplo, no empiezan en 0, en el ejemplo sería una matriz de 16 elementos o se da por supuesto que existe el 0 y entonces sería un total de 27 elementos?
Si quiero nombrar 9 cuadros de texto de un formulario serían A(1), A(2)...,A(9), no?
Si quiero multiplicar esa matriz por un número 'n' lo haría:
1
2
3
For i=1 to 9
A(i)*n
next i
Como quiero que el resultado aparezca en la columna c tendría que hacer
1
2
3
For i=1 to 9
c(i)=A(i)*n
next i
Y entonces volvemos a mi pregunta inicial. Enaccess nombro los cuadros de texto A(1), a(2)...
en VBA los llama _1_, _2_
Probe a poner
1
Me.Controls ("a_" & Str(i) & "_")
y me dice: el uso de la propiedad no es válido
Alguna idea?
Muchas gracias
Pablo
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

nombre de cuadro de texto en form y vba

Publicado por Anonimo (3316 intervenciones) el 17/08/2020 23:20:41
La programación (en general) tiene 'sus' reglas y a esa reglas se las llama 'lenguaje'.

No se pueden utilizar determinados caracteres al programar, Access espera que si detrás de un objeto hay 'algo mas' según sea ese 'algo' lo interpretara de una forma u otra (por ejemplo: las matrices requieren parámetros que se le dan entre paréntesis), es por eso que modifica el nombre de los cuadros de texto y se le monta un lio cuando se intenta interactuar con ellos. ..... (no derrames jabón en el suelo y no resbalará Access).

Si bien se recomiendan nombres cortos ,,,, (para evitar nombres de doscientos caracteres o mas) tampoco hay que ser tan avaro como darle uno solo y exigirle que te devuelva algo.

¿Qué se desea nominarlos a, b, c y un valor consecutivo .... pues se le añade el valor:
A1, B1, C1, A2, B2, C2 ....

Y para que se pueda (de un vistazo) apreciar el orden o lo que sea, se le añade un guion bajo o un guion (cuando no pueda confundirlo con el operador de la resta .....) en fin, escribir código ha de ser conciso sin pasarse, per tampoco tiene porque ser auto-descriptivo en versión larga y floreada

A_1, B_1, C_1, A_2, B_2, C_2 ....

A-1, B-1, C-1, A-2, B-2, C-2 ....

Lo ideal es que en 'una versión breve' ese nombre permita conocer su funcionalidad.
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

nombre de cuadro de texto en form y vba

Publicado por Anonimo (3316 intervenciones) el 18/08/2020 08:42:11
Creo que la respuesta anterior quedo incompleta, se quedo en el tintero la forma de referirse a los objetos que tienen nombres que pueden dar lugar a confusión.

La regla es sencilla, la misma que se aplica cuando el nombre (por capricho del creador) contiene espacios: indicar con corchetes '[' y ']' su comienzo y su final, Access utilizara lo contenido entre ellos como el nombre del objeto (y entenderá que que es un parche que se utiliza por necesidad -impuesto externamente- o ... porque así le gusta al programador.

Original:
a(1)

Lo que necesita hacer Access para utilizarlo (un seudónimo, sustituye lo que le incordia)
a_1_

Como hay que llamarlo para que lo encuentre ... por su nombre y admitiendo que el nombre NO esta normalizado
[a(1)]
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por Pablo (328 intervenciones) el 18/08/2020 18:40:05
1
2
3
4
5
6
7
8
9
Private Sub Texto0_AfterUpdate()
If Me.Texto0 <> 0 Then
Dim i As Integer
Dim a(1 To 9)
For i = 1 To 9
Me.[a_i_] = i
Next i
End If
End Sub
Probe primero con "()" y después con "_", en ambos casos me dice que no encuentra el campo [, no distingo si es un corchete o una I
Alguna idea?
Gracias
Pablo
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

nombre de cuadro de texto en form y vba

Publicado por Anonimo (3316 intervenciones) el 18/08/2020 19:22:04
Has llegado a un punto sin retorno, la idea que puedo ofertar es simple:

Sabes (o quizás aun no) donde están las partes problemáticas (nombres de objetos .... etc)

Comienza de cero y evita los errores, es mas fructífero un éxito que un fracaso y ahondar en los fiascos solo se puede hacer cuando se tiene la capacidad de efectuar análisis forenses (algo que la distancia impide).
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por Pablo (328 intervenciones) el 18/08/2020 19:52:28
Probe con
1
2
a(i) = i
Debug.Print "a(" & i & ")=" & a(i)
en la ventana inmediato me pinta los datos bien, sin embargo no hace las asignaciones a los cuadros de texto
También probé con
'[a( & i &)] = i-> no encuentra el campo

Alguna idea?
Gracias
Pablo
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

nombre de cuadro de texto en form y vba

Publicado por Anonimo (3316 intervenciones) el 19/08/2020 00:16:21
¿Tienes algún interés en especial en denominar a los cuadros de texto 'con la sintaxis que se utiliza para definir a un elemento de una matriz?....

Esperaba que en el (siempre supuesto) nuevo formulario para practicar ese ejemplo, tomarías en serio lo de:
- que nombres se han de utilizar como 'correctos' y los que se deberían descartar como 'incorrectos'. -

Mientras no aceptes que la libertad también tiene limites (en la sociedad y en la programación), no te auguro un camino fácil.
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por Pablo (328 intervenciones) el 19/08/2020 18:07:09
Pues te voy a hacer caso y voy a dejar lo de la matriz para otro momento, llamaré a los cuadros de texto a1, a2...,a9, con esto concateno la "a" con el índice que previamente tendre que convertir en cadena de 1 elemento
Haré un nuevo formulario, aún no lo hice, con esos cambios
Todos tenemos límites, estoy de acuerdo contigo pero, de vez en cuando, es bueno pelear por sobrepasarlos y ver si el límite se puede poner un poco más allá, no crees?

Gracias
Pablo
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por Pablo (328 intervenciones) el 19/08/2020 18:49:59
Te hice caso y ya esta hecho
Gracias
Pablo
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por Pablo (328 intervenciones) el 21/08/2020 18:01:53
Perdona Ánonimo, la razón de porque me empeñé en utiizar matrices es
El código es muy sencillo si utilizas 3 matrices:
a(0 To 8), b(0 To 8), c(0 To 8)

En la primera matriz asignas: 1, 2, 3, 4, 5, 6, 7, 8, 9.

En la segunda matriz asignas a cada elemento el número que tenemos en
[num]

En la tercera matriz asignas el producto del elemento correspondiente de la primera
y segunda matriz.

Por último asignas a nuestros campos del formulario, los valores de las matrices
Esto es un corta y pega del `curso' de access 2007
Pablo
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

nombre de cuadro de texto en form y vba

Publicado por Anonimo (3316 intervenciones) el 21/08/2020 21:25:55
Utilizar matrices no ha sido tú problema, el problema ha consistido en utilizar (para referenciar a los cuadros de texto) la misma sintaxis que se utiliza para definir los elementos de un array .....

Se pueden utilizar matrices a discreción y cuadros de texto con entera libertad, pero hay que respetar las reglas de cada lenguaje y (siempre respetándolas para que la maquina 'nos entienda') se pueden intentar todos los caminos, disfrutar de los éxitos y aprender de los fracasos.
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por Pablo (328 intervenciones) el 25/08/2020 18:24:21
Entonces como debería llamar a los cuadro de texto: a1,a2,a3...?. Quiero que todos los a1,a2... tomen un valor que doy antes en el Txt0, cómo haría esa igualdad: Txt0= a qué?

Gracias
Pablo
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

nombre de cuadro de texto en form y vba

Publicado por Anonimo (3316 intervenciones) el 25/08/2020 22:29:32
Parece que no extraes el contenido de las respuestas .....

La respuesta a esa inquietud ya esta respondida en mensajes anteriores y sí:

Para poder manipular los objetos, hay que darle a cada uno un nombre y dentro de las familias de objetos (para lograr mayor efectividad) se pueden crear REGLAS.

Estamos en el punto en que conviene distinguir que es cada cosa (y después vendrá lo de 'para que puede ser útil'), intenta tener claro cual es el martillo, cual el clavo y sobre todo cuales son los dedos.
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

nombre de cuadro de texto en form y vba

Publicado por Pablo (328 intervenciones) el 27/08/2020 19:44:50
Creo que ya descubrí el problema, en el enunciado, al final, dice.Por último asignas a nuestros campos del formulario, los valores de las matrices
Esto quiere decir que las matrices tienen unos elementos que no son los campos del formulario, primero hago los cálculos con matrices y después igualo los cuadros de texto ai del formulario al elemento de la matriz a(i)
Gracias Anónimo. No hay peor ciego que el que no quiere ver, fue mi caso
Pablo
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