SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => VBA => Mensaje iniciado por: Manuel Castro Gómez en Viernes 11 de Marzo de 2005, 16:20
-
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.
-
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:
-
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.
-
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.
-
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:
-
De nuevo saludos a todos:
No se me había ocurrido esa idea que me estás proponiendo, intentaré probarlo y tan pronto tenga una respuesta sea cual sea se los hago saber. Más vale tarde que nunca.
Muchas grácias y en hora buena.
-
Gracias por la sugerencia que me aportaron, la implementé y está trabajando perfectamente.
Definitivamente hace falta la tutoría de personas con más experiencia que uno.
Gracias de nuevo y un saludo a todos.