Vous êtes sur la page 1sur 19

En comando que debes invocar, cuando actualizas el cuadro combinado, es [nombre del] formulario].requery.

O sea si el formulario se llama por ejemplo Formulario de alquileres, inicias el formulario en vista diseo, click sobre el cuadro combinado, boton derecho, propiedades, eventos, despues de actualizar, procedimiento de evento,generar. Private Sub Cuadro_combinado1_Change() [formulario de alquileres].requery End Sub El nombre del formulario lo pones entre corchetes porque contiene espacios. El requery es actualizar (la consulta que da origen al formulario).-

hola jorge eres muy amable. mira no funciona el codigo que me enviaste. Lo que tengo es una tabla que se llama CLIENTES (ID-CLIENTE, COMPAIA), otra que se llama ALQUILER (SERIAL, INVENTARIO, ID-CLIENTE, FECHA DE ENTREGA). Cree un formulario para la tabla ALQUILER. mi formulario se llama FAlquiler y coloque un cuadro combinado llamado SelecEmpresaAlq el cual ubique en el encabezado del formulario y en la propiedad de este en origen de la fila selecciono los campos de la tabla CLIENTES. En las propiedades del formulario FAlquiler en origen del registro llamo a una consulta CONSULTA 1 donde relacion las tablas CLIENTES y ALQUILER y en el campo ID-CLIENTE coloco el siguiente criterio [Formularios]![FAlquiler]![SelecEmpresaAlq]. cuando ejecuto el formulario en Vista Formulario me permite el cuadro combinado seleccionar las empresas por nombre pero los registros no aparecen a menos que le de Actualizar todo en el menu propio de ACCESS, el filtro lo ejecuta adecuadamente. Entonces vuelvo a vista de diseo del formulario selecciono el cuadro combinado SelecEmpresaAlq y en la propiedad evento Despues de Actualizar - Generar codigo coloco lo siquiente. Option Compare Database Private Sub SelecEmpresaAlq_AfterUpdate() FAquiler.Requery End Sub

Yo uso la version de access 2003, por ello algn paso puede diferir, pero en sustancia son similares. Mira tienes 2 posibilidades. 1) En forma automtica: - Crear las relaciones de las tablas. Es decir el id-cliente de la tabla CLIENTES con el id-cliente de la tabla ALQUILER - Crear un nuevo formulario utilizando el asistente, seleccionar la tabla cliente y los 2 campos y la tabla alquiler y los campos de esta tambien (deben quedar todos los campos en un solo formulario). Luego Access 2003 da 2 opciones (probablemente la 2007 sea similar) , elijo Formulario con Subformularios. 2) E n forma manual. En el cuadro combinado, debe tener las propiedades de datos como siguen: Origen de control: alquiler.id-cliente Tipo/origen: Tabla /consulta Origen de la fila: SELECT cliente.[id-cliente], cliente.COMPANIA FROM cliente ORDER BY [COMPANIA];

Columna dependiente: 1 En este caso, no es necesario agregar cdigo. El cuadro combinado actualiza el valor del campo id-cliente a medida que seleccionas el correcto. Igualmente puedes probar la forma utilizada por el asistente, que es muy prctica. (la del subformulario) Saludos. Jorge

Buenas, soy nuevo y creo que no he podido localizar un foro adecuado. A ver si hay suerte: Lo que quiero conseguir es que al rellenar un campo combinado se rrellene automticamente otro. Me explico. Tabla Principal con Campos [Reposnable] y [Equipo] Tabla Responsable con campos [Responable] y [Equipo]Combinados Formulario en el que se rellenan los datos aparece el campo [Responable] con un desplegable para seleccionar el valor correspondiente. La Tabla Responsable contiene estos datos, por ejemplo: Responsable Equipo Quiero, que cuando se seleccione en el formulario el responsable, se rellene automticamente el equipo al que corresponde. Nota: No hay equipos ni responsables repetidos. Espero haberme explicado correctamente. A la espera de Vuestra ayuda que necesito con cierta urgencia, gracias de antemano.

En el form, que tabla es el origen de registro??? Tienes dos tablas distintas con los mismos campos?? No entiendo bien la estructura, pero la idea es o bien establecer

en el origen de control del control la segunda columna del cuadro combinado (que entiendo tiene ambas columnas y en ese orden -Responsable Equipo-) asi: =CuadroCombinado.Column(1) Esto si no quieres guardar el dato, solo mostrarlo en ese control. Si el control ya tiene origen de control, puedes hacer esto mismo en el evento before update (antes de actulaizar) del cuadro combinado, algo asi: me.Control=me.CuadroCombinado.Column(1)

Hola Grupo: Estoy trabajando con Access 2007 en espaol, tengo un formulario1 donde entro datos a una tabla, este formulario siempre lo uso teniendo formulario2 abierto donde existe un subformulario1 que est en hoja de datos, el cual tiene un cuadro_combinado1 que lista los mismos elementos que modifica formulario1. El problema que tengo es que en no puedo actualizar los valores de cuadro_combinado1 desde formulario1, a no ser que cierre y vuelva a abrir formulario2. Lo he intentado usando: Form.formulario2.Subformulario1. cuadro_combinado1. Requery Pero as no me funciona. Cmo puedo hacer lo que necesito? Saludos, Olimac.

Prueba con: Forms("NombreDelFormaulario").NombreObjetoSecundar io.Form.NombreCuadroCombinado.Requery Donde: - Forms: Coleccin de formularios abiertos. Se queda como est. - NombreDelFormulario: Debes cambiarlo por el nombre del formulario al que quieres acceder, dejando las comillas. - NombreObjetoSecundario: Debes cambiarlo por el nombre que le has dado al control secundario donde est insertado el subformulario. Ojo! Es el nombre del control, no del formulario. - Form: Para hacer referencia al formulario que tenemos insertado. Se queda como est. - NombreCuadroCombinado: Debes cambiarlo por el nombre que le has dado al

cuadro combinado. -Un saludo,

Muchsimas gracias Patxi, funciona como me propones, incluso pude arreglar la forma que pensaba usar. Esta variante: Form.formulario2.Subformulario1.Form.cuadro_combin ado1. Requery Tambin funciona, faltaba poner "Form" la segunda vez, para hacer referencia al formulario que est insertado.

Sincronizar combos en Access, sin Programacin en VBA.


Publicado el septiembre 5, 2008 por estamosencontacto Esta pregunta me la ha hecho ms de una persona, as que este post lo escribo pensando en todos a los que alguna vez les haya asaltado esta duda: Cmo sincronizar dos combos de access sin tener que utilizar programacin en VBA?

Asumo que quien lea este tutorial tiene un nivel de conocimientos intermedio en Ms-Access, es decir, sabe crear tablas, establecer relaciones, crear consultas y crear formularios. Este tutorial aplica para access 2007 y versiones anteriores, as que atencin: Voy a tomar como ejemplo dos tablas de la base de datos NEPTUNO.MDB que vienen con las versiones de este programa.

Como pueden observar en la grfica, la situacin que se presenta es la de dos tablas relacionadas (aunque tambin funciona sin que exista relacin) La pregunta en este caso sera: Cmo hago para que cuando en un combo A seleccione una categora de producto, en un combo B aparezca la lista de los productos correspondientes a dicha categora? Bueno, pues la solucin es la siguiente: 1. Crear un Combo con el asistente para formularios de la tabla categoras agregando dos columnas, IdCategora y Categora:

2. Hacer clic derecho sobre el combo y elegir la opcin propiedades, luego buscar la ficha otras y ponerle un nombre al combo, para este caso debo pasar de cuadro combinado 2 a CmbCategora.

3. Crear otro combo con el asistente para la tabla productos, agregando el Id del producto y el producto. Le podemos poner el nombre de CmbProductos. Luego veremos una imgen como la siguiente:

Enseguida guardamos el formulario:

4. Luego buscamos las propiedades del combo CmbProductos y hacemos clic en la ficha Datos, seleccionamos la propiedad Origen de la Fila y hacemos clic en el botn de los tres punticos ()que aparece a la derecha.

Inmediatamente observaremos una pantalla como la siguiente:

Luego hacemos clic derecho en el fondo de la pantalla a la derecha de la tabla productos, se selecciona la opcin agregar tabla y se agrega la tabla categoras:

Cerramos el dilogo y enseguida agregamos el campo IdCategora Cerramos el dilogo y enseguida agregamos el campo IdCategora

5. A continuacin nos ubicamos debajo de la columna IdCategora a la altura de la fila criterios, hacemos clic derecho y seleccionamos la opcin Generar, la cual nos llevar al generador de expresiones.

6. En el generador de expresiones que aparece, le hacemos doble clic a la opcin de formularios, luego doble clic a formularios cargados y por ltimo a CmbCategora doble clic. Despus presionamos Aceptar.

Ahora presionamos el botn cerrar de la vista de diseo y hacemos clic en SI.

7. Finalmente hacemos clic derecho en el combo CmbCategora elegimos la opcin de propiedades, luego la ficha eventos, enseguida la opcin de los tres punticos y en el dilogo escogemos la opcin de generar cdigo.

Para terminar, escribimos la nica lnea de cdigo VBA: Sendkeys ({F9}) Esta instruccin lo que busca es actualizar el formulario para que carguen los productos que corresponden a la categora seleccionada.

Ahora cerramos la ventana de visual Basic! guardamos el formulario, lo ejecutamos y listoooooo!!!!

Ya tenemos un combo sincronizado!!! Espero les sea de utilidad este tutorial !!!

Los cuadros combinados sirven para elegir opciones, pero a veces una opcin depende de otra. En este artculo, aprender a configurar un cuadro combinado para su lista se base en la seleccin que realiza en otra. Se ofrece tambin un ejemplo en una base de datos que se puede descargar. SE APLICA A Microsoft Office Access 2003 Microsoft Access 2000 y 2002

Pregunta: cmo puedo crear un cuadro combinado que limite su lista en funcin de la seleccin realizada en otro cuadro combinado? El segundo cuadro combinado se basa en una consulta que coincide con las files que contienen el valor seleccionado en el primer cuadro combinado. Tambin

tendr que colocar cdigo de Microsoft Visual Basic para Aplicaciones (VBA) en algunos eventos de control y formulario. El cdigo garantiza que los cuadros combinados muestren los valores correctos cuando se produzcan determinados eventos (por ejemplo, cuando se realice una seleccin en el primer cuadro combinado o cuando el formulario se abra por primera vez. En primer lugar, veamos las propiedadesRowSource y RowSourceType . Introduccin a las propiedades RowSource y RowSourceType La propiedad RowSource permite definir el origen de los elementos que aparecen en el cuadro combinado. Se utiliza junto con la propiedad RowSourceType para indicar a Access cmo tiene que rellenar el cuadro combinado. Por ejemplo, puede establecer la propiedad RowSourceType en Tabla o consulta y, a continuacin, establecer la propiedad RowSource en el nombre de una consulta. Access ejecutar la consulta y usar los resultados para rellenar el cuadro combinado.

No es necesario utilizar una consulta guardada. Si la propiedad RowSourceType est establecida en Tabla o consulta, puede crear una consulta que exista como declaracin SQL SELECT en la propiedad RowSource del cuadro combinado. Esta es la tcnica empleada en el formulario de ejemplo de la base de datos a la que se refiere este artculo. En la tabla siguiente, se enumeran las posibles configuraciones de la propiedad RowSourceType. CONFIGURACIN Tabla o consulta DESCRIPCIN Los datos se obtienen de una tabla, una consulta o una declaracin SQL especificado mediante la propiedad

RowSource. Esta es la opcin predeterminada. Lista de valores Los datos se obtienen de una lista de elementos especificados mediante la propiedad RowSource. Los datos se obtienen de una lista de nombres de campo de una tabla, una consulta o una declaracin SQL especificado mediante la propiedad RowSource.

Lista de campos

La mayora de las veces, utilizar la opcin Tabla o consulta, que es la predeterminada. Crear el formulario de ejemplo Puede descargar la base de datos de ejemplo de este artculo. En la base de datos, encontrar un formulario de ejemplo en el que se demuestra la tcnica que se explica aqu. Para crear su propio formulario de ejemplo, inicie Access y siga los pasos de la siguiente seccin expandible y, a continuacin, siga con el resto de la columna. Paso a paso: cmo crear un formulario de ejemplo Cmo agregar criterios a la consulta por productos Como puede hacer que Access rellene un cuadro combinado con los resultados de una consulta, tambin puede agregar criterios a dicha consulta para limitar lo que aparece en el cuadro combinado. En nuestro caso, queremos que los criterios del segundo cuadro combinado slo limiten los resultados de las filas que coinciden con el valor del primer cuadro combinado. Por ejemplo, supongamos que desea tener un cuadro combinado de categoras con el nombre Categora y cuadro combinado de productos con el nombre Producto. Quiere que al hacer clic en el cuadro combinado Categora slo aparezcan en el cuadro combinado Producto los productos de dicha categora. Esto se puede conseguir colocando criterios en la consulta del cuadro combinado Producto que coincide con el valor actual en el cuadro combinado Categora. Para agregar criterios a la consulta 1. Abra la hoja de propiedades del cuadro combinado Producto combo box. 2. Haga clic en el cuadro Origen de la fila y, a continuacin, haga clic en el botn de puntos suspensivos (...) cuando aparezca. 3. En el Generador de consultas, asegrese de que en la lista de cuadrcula de campos aparecen las columnas de la tabla Productos que desea que aparezcan

en el cuadro combinado Producto, por ejemplo, IdProducto, NombreProducto, etc. Asegrese de incluir el campo Id. de categora. 4. En la columna IdCategora de la cuadrcula del Generador de consultas, escriba [Formularios]![Formulario combinado]![Categora] en la fila Criterios, sustituyendo "Formulario combinado" por el nombre de su formulario. Los criterios indican a Access que restrinja los resultados de la consulta slo a las filas que coincidan con el valor que est actualmente seleccionado en el cuadro combinado Categora. La cuadrcula del Generador de consultas tendr un aspecto parecido al de la ilustracin siguiente.

5. Por ltimo, cierre el Generador de consultas y, a continuacin, cierre la hoja de propiedades de consulta haciendo clic en S cuando Access le pregunte si desea guardar los cambios. Access insertar una declaracin SQL en la propiedad RowSource cuando cierre el Generador de consultas. La declaracin SQL incluye una clusula WHERE parecida a la siguiente: WHERE (((Products.CategoryID)=[Forms]![Combo Form]![Category])) La clusula WHERE restringe las filas a aqullas que coinciden con el valor del cuadro combinado Categora. 6. Guarde el formulario. Comprender las propiedades BoundColumn y ColumnCount Una de las ventajas de usar el Asistente para cuadros combinados es que rellena automticamente las propiedades que necesita. Dos de estas propiedades merecen una explicacin ms detallada.

La propiedad BoundColumn indica a Access qu columna del cuadro combinado contiene el valor que se va a asociar al control. Esta propiedad contiene un nmero que representa una columna en el origen de la fila, empezando con 1 y siguiendo en progresin con 2, 3, etc., de izquierda a derecha. Normalmente se selecciona la columna que contiene la clave primaria, como IdCategora o IdProducto. De este modo, si se hace referencia al valor de control, se obtiene el valor del campo IdCategora o IdProducto de la fila seleccionada.

Por ejemplo, la expresin [Formularios]![Formulario combinado]![Categora] (escrita en la cuadrcula del Generador de consultas en la ilustracin anterior) devuelve el valor almacenado en la propiedad BoundColumn de la fila seleccionada en el control de cuadro combinado Categora. Se devuelve el valor del campo IdCategora porque la propiedad BoundColumn del cuadro combinado Categora est establecida en el valor 1, que representa la columna IdCategora. A continuacin, la consulta utiliza el valor IdCategora para buscar coincidencias con las filas del cuadro combinado Producto.

La propiedad ColumnCount indica a Access cuntas columnas hay en el cuadro combinado. Por ejemplo, en el cuadro combinado Categora, el valor de esta propiedad se establece en 2 porque hay dos columnas en el origen de la fila: IdCategora y NombreCategora. Para el cuadro combinado Producto la propiedad ColumnCount se establece en 3, porque el origen de las filas incluye las columnas, IdProducto, NombreProducto y IdCategora. Tenga en cuenta que al calcular un valor para ColumnCount, debe contar todas las columnas cuyo valor va a estar disponible en Access, tanto si la columna se puede ver en el cuadro combinado como si no. Puede ocultar una columna usando la propiedad ColumnWidths. Para obtener ms informacin, consulte la seccin Ocultar algunas columnas. Cmo mantener actualizado el cuadro combinado El cuadro combinado Producto debe actualizarse cada vez que cambie el valor del cuadro combinado Categora. Para ello, puede agregar cdigo VBA vara volver a consultar el origen de filas del cuadro combinado Producto cada vez que se actualice el cuadro combinado Categora. Access proporciona un evento AfterUpdate slo para este fin. Echemos un vistazo al cdigo del evento AfterUpdate. Primero, establecemos el valor del cuadro combinado Producto en Nulo con el objeto de asegurar que inicialmente no aparezca nada en el cuadro. Es una buena idea, porque una vez elegida esta categora, el valor que est seleccionado en ese momento en el cuadro combinado Producto deja de ser vlido (puesto que el producto que se est mostrando pertenece a la categora anterior. A continuacin, se llama al mtodo NuevaConsulta para volver a rellenar el cuadro combinado Producto en funcin de la categora actual. Por ltimo, el cuadro Producto est preestablecido en el primer elemento de la lista usando la propiedad ItemData. La propiedad ItemData devuelve el valor de la fila especificada en un cuadro combinado o un cuadro de lista. Como la lista es de base cero, no olvide elegir 0 como ndice para la primera fila en lugar de 1.

Private Sub CategoryAfterUpdate() Me.Product = Null Me.Product.Requery Me.Product = Me.Product.ItemData(0) End Sub Para obtener instrucciones detalladas paso a paso sobre cmo colocar el cdigo en el evento AfterUpdate del cuadro combinado Categora, consulte la siguiente seccin expandible. Paso a paso: cmo colocar el cdigo en el primer cuadro combinado para actualizar automticamente el segundo cuadro combinado Qu hacer al abrir el formulario Cuando abra el formulario por primera vez, puede que los cuadros combinados no muestren ningn valor porque an no ha elegido ninguno. Para el formulario de ejemplo, decid que sera mejor mostrar el primer valor de la lista de categoras y el primer producto de esa categora, as que coloqu el siguiente cdigo de VBA en el evento Load. La llamada al cdigo tiene lugar la primera vez que se abre el formulario. Establece la categora en el primer valor de la lista y, a continuacin, se realiza la llamada al procedimiento Category_AfterUpdate para actualizar el cuadro combinado Producto. Private Sub Form_Load(Cancel As Integer) Me.Category = Me.Category.ItemData(0) Call Category_AfterUpdate End Sub El formulario de ejemplo usa cuadros combinados no enlazados. Los cuadros combinados no enlazados son los que no estn vinculados a un campo en una tabla o en una consulta. En cambio, si usa cuadros combinados enlazados, probablemente no le convendr emplear el procedimiento Form_Load descrito anteriormente, porque restablece la categora cada vez que se carga el formulario. Si es as, elimine ese cdigo o use un cdigo como el siguiente: Private Sub Form_Load(Cancel As Integer) If IsNull(Category) Then Me.Category = Me.Category.ItemData(0) Call Category_AfterUpdate End If End Sub Esta versin slo restablece la categora si est vaca.

Para obtener instrucciones detalladas paso a paso sobre cmo colocar el cdigo en el evento Load del formulario, consulte la siguiente seccin expandible. Paso a paso: cmo colocar en el evento Load del formulario un cdigo que se ejecute cuando se abra ste Cmo realizar el desplazamiento entre registros Si usa cuadros combinados enlazados, puede utilizar la tcnica que se describe aqu, pero deber tener en cuenta lo que desea que ocurra cuando el registro actual cambie como resultado del desplazamiento del usuario entre los registros. En ese caso, puede que tenga que volver a consultar el segundo cuadro combinado cada vez que se desplace de un registro a otro. La forma ms adecuada de hacerlo es utilizar el evento Current del formulario con un cdigo parecido al del ejemplo siguiente: Private Sub Form_Current() Me.Product.Requery End Sub Para obtener instrucciones detalladas paso a paso sobre cmo colocar el cdigo en el evento Current del formulario, consulte la siguiente seccin expandible. Paso a paso: cmo colocar en el evento Current del formulario un cdigo que se ejecute cuando se desplace de un registro a otro Ocultar algunas columnas Cuando cree el cuadro combinado Producto, tendr que incluir (como mnimo) las columnas IdProducto, NombreProducto e IdCategora, pero lo ms probable es que slo desee ver la columna NombreProducto. Para ocultar las columnas que no desea mostrar, puede configurar la propiedad ColumnWidths del cuadro combinado Producto como se muestra en la ilustracin siguiente.

La propiedad ColumnWidths permite especificar el ancho de cada columna del cuadro combinado en pulgadas (o en centmetros, si est utilizando el sistema mtrico). Las medidas de las columnas se separan mediante punto y coma. Para las columnas que desee ocultar, establezca el ancho en 0. Tenga en cuenta que aunque se establezca el valor de la columna en cero y se oculte, sta sigue existiendo y sus valores siguen estando disponibles para. De este modo, en la ilustracin anterior del cuadro combinado Producto, las columnas IdProducto e IdCategora estn ocultas, pero los valores siguen estando

disponibles. De hecho, Access proporciona la propiedad Column para que pueda obtener el valor actual de cualquier columna en la fila seleccionada en un cuadro combinado. Por ejemplo, Product.Column(0) devuelve el valor de la columna IdProducto, Product.Column(1) devuelve el de la columna NombreProducto y Product.Column(2) el de IdCategora. Descargar la base de datos de ejemplo La base de datos de ejemplo incluye el ejemplo que hemos utilizado en este artculo y datos de ejemplo obtenidos de la base de datos Northwind.mdb incluida en Access. Qu hacer a continuacin? Sobre qu debo escribir a continuacin? Enve sus comentarios, preguntas, trucos y sugerencias a msaccess@microsoft.com. Ms informacin

Para obtener un enfoque distinto sobre cmo basar un cuadro combinado en otro (cuadros combinados sincronizados), consulte los siguientes artculos de Microsoft Knowledge Base: Access 2002 - 2003: cmo sincronizar dos cuados combinados en un formulario en Access 2002 o Access 2003 Access 2000: cmo sincronizar dos cuados combinados en un formulario Access 2.0 - 97: cmo sincronizar dos cuados combinados en un formulario Access 2000: cmo sincronizar dos listas desplegables en una pgina de acceso a datos Para obtener una introduccin en lnea a los controles de Access, consulte el curso de formacin de Office Online, Cuadros combinados, cuadros de lista y otros controles. Para obtener un webcast de soporte del producto en el que se traten los cuadros combinados, consulte WebCast: Gua de supervivencia de cuadros combinados de Microsoft Access. Si desea obtener una coleccin variada y muy til de soluciones y sugerencias para Access, consulte Ken Getz, Paul Litwin y Andy Baron, Access Cookbook (O'Reilly Media, 2003). Para obtener un estudio en profundidad de diversos temas, incluido el control de cuadro combinado de Access, consulte Paul Litwin, Ken Getz y Mike Gunderloy, Access 2002 Desktop Developer's Handbook (SYBEX, 2001).

Vous aimerez peut-être aussi