Programación General > VBA

 Nombre De Campo Como Texto

(1/2) > >>

Manuel Castro Gómez:
Hola a todos:

Tengo un formulario en Access 2000 que posee un control ficha que a su vez contiene unos 200 controles distribuidos en diferentes pestañas.
Yo deseo que al avanzar de un registro a otro poder guardar los valores de cada uno de los controles en sus variables globales respectivas; ¿Existe alguna forma en la que pueda usar una funciòn en la que pueda pasar como paràmetros el nombre de la variable donde voy a almacenar el valor y el nombre del control que contiene dicho valor?
La idea es no hacerlo uno por uno sino a travès de un ciclo FOR EACH que me lea todos los controles y haga las asignaciones correspondientes.
Ejemplo:

CAMPO: PLA_Cedula
VARIABLE: PubCedula

FUNCTION (Campo As Control, Variable As.......)
                  Variable = Control.Value
END FUNCTION

La duda me viene porque no sè que tipo ponerle a VARIABLE para que lo tome no como variable sino como un nombre de campo que le pasè como argumento.

¿Me expliquè? Agradezco de antemano cualquier ayuda o sugerencia.

Widark:
Hola Manuel.

La verdad no es muy entendible, pero si lo que quiere es guarda dos valores o mas valores de un mismo control, seria bueno que utilice una matriz con las posciciones que necesite pero que se pueda redimensionar. El tipo de la variable depende de lo que quiera guardar. :blink:

Manuel Castro Gómez:
Gracias por tu respuesta, pero en efecto creo que no me expliqué bién.

Cuando yo paso de un registro a otro puede que los valores de algunos controles sean los mismos en el registro siguiente, lo que hago es que si el usuario presiona la tecla F3 me copie el mismo valor que tenía ese control en el registro anterior.
Para hacer esto necesito guardar el valor de cada control en una variable aparte.
Suponte que el formulario tiene estos 2 controles:

PLA_Cedula y PLA_Direccion

PLA_Cedula = 10456278  
PLA_Direccion = "Calle Las Casitas, Quinta La Arboleda, Paraparito"

Estos son los valores que tiene el registro actual.
Puede que cuando yo vaya al registro próximo esos mismos controles vuelvan a tener esos mismos valores; lo que hago es que en el evento CURRENT del formulario hago lo siguiente:

PubCedula = PLA_Cedula.value
PubDireccion = PLA_Direccion.value

Cuando el usuario está en el control PLA_Cedula y presiona F3 lo que hago es:
PLA_Cedula.value = PubCedula
y así repite el mismo valor que tenía ese control en el registro previo; esto lo hace perfecto. Ahora bién son 200 controles los que hay en el formulario y no quiero hacer esto para cada uno de ellos, por eso mi pregunta sigue siendo la misma, algo como esto:

For Each Ctrl in Formulario.controls
              Call MoverValor(Ctrl, NombreVariable)
Next
 
En el módulo está la función MoverValor

Function MoverValor(ControlForm, NombreVariable)
                              NombreVariable = ControlForm.Value
End Function

La primera vez que se ejecuta la funcion los parámetros seran:

ControlForm = PLA_Cedula
NombreVariable = PubCedula

La segunda vez será:

ControlForm = PLA_Direccion
NombreVariable = PubDireccion

Y así sucesivamente, es decir un siclo que me guarde los valores de los controles en sus respectivas variables.

                       ¿Me expliqué mejor?
                       Espero que sí y gracias anticipadas por cualquier ayuda.

Manuel Castro Gómez:
La pregunta específica es que tipo de variable debe ser el argumento de la función NOMBREVARIABLE para que me guarde el nombre de la variable: la primera vez PubCedula, la 2da. vez PubDireccion, la 3ra. vez PubMontoAlquiler, etc.

Widark:
Hola Manuel.

Podrias manejarlo con un vector de dos columnas una para el nombre del campo y la otra para el dato que almacena ese campo, y las variables deberian ser de tipo cadena, espero no sea muy tarde.  :unsure:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa