Access - Codigo !!!

 
Vista:

Codigo !!!

Publicado por GRIS (20 intervenciones) el 16/08/2007 21:50:51
Hola disculpen, tengo varios formularios y en cada formulario, tengo un boton de busqueda, el cual hace visibles cuadros de texto según el numero que indoca la busqueda, el problema es que tengo mas de 60 cuadros de texto, y utilizo la siguiente condición :

If Etiqueta247.Caption = "1" Then
c1.Visible = True
d1.Visible = True
cc1.Visible = True
uc1.Visible = True
canti1.Visible = True
mone1.Visible = True
pt1.Visible = True
flete1.Visible = True
cambiom1.Visible = True
origen1.Visible = True
End If

pero hago una condición por cada numero desde el 1 hasta el 40 y el codigo es demasiado, me manda un error, que me dice que el procedimiento es demasiado largo, que lo divida, pero no se como ni a que se refiera, alguien me puede ayudar y explicar ????...

GRACIAS ...
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
Imágen de perfil de Alejandro

Reducir la longitud del procedimiento de búsqueda en formularios

Publicado por Alejandro (4142 intervenciones) el 17/08/2023 19:13:06
El error que estás experimentando ("procedimiento demasiado largo") se refiere a que la longitud del código en tu procedimiento es excesiva y está superando los límites permitidos en Access. Para resolver este problema, puedes reorganizar tu código y utilizar estructuras de control más eficientes. Aquí tienes una forma de abordar tu situación utilizando un bucle y arreglos:

En lugar de tener múltiples bloques `If` para cada número, puedes utilizar un bucle `For` para recorrer todos los números y un arreglo para manejar las propiedades `Visible` de los controles. Aquí tienes un ejemplo de cómo podrías hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim i As Integer
Dim cuadros() As Control
 
' Asigna todos los cuadros de texto a un arreglo
Set cuadros = Array(c1, d1, cc1, uc1, canti1, mone1, pt1, flete1, cambiom1, origen1)
 
' Obtén el valor de Etiqueta247.Caption
Dim valorEtiqueta As Integer
valorEtiqueta = CInt(Etiqueta247.Caption)
 
' Recorre el arreglo y establece la propiedad Visible según el valor de Etiqueta247.Caption
For i = 0 To UBound(cuadros)
    cuadros(i).Visible = (i < valorEtiqueta)
Next i

Este código asigna todos los cuadros de texto a un arreglo y luego utiliza un bucle `For` para recorrer el arreglo y establecer la propiedad `Visible` de cada cuadro de texto según el valor de `Etiqueta247.Caption`.

Este enfoque te permite reducir la longitud del código y evitar la necesidad de repetir bloques `If` para cada número. Además, si necesitas agregar más cuadros de texto en el futuro, solo necesitas actualizar el arreglo `cuadros` y el bucle `For`, en lugar de agregar más bloques `If`.

Recuerda que este es solo un ejemplo y puedes ajustar el código según tus necesidades específicas. Además, asegúrate de tener una copia de seguridad de tu base de datos antes de realizar cambios significativos en el código.
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