Access
  • Home

Campos multivalor en Accesss 2007

  • By chea
  • Abr-21-2007
  • Sin categoría
  • 10 Comments.

Los campos multivalor son esa novedad de Access 2007 que nadie había pedido y muy pocos van a apreciar. No parecen imprescindibles.


A primera vista, son un cuadro combinado especial que puede resultar útil en ciertas ocasiones y que es sencillo de usar en cuanto encuentras la explicación de cómo hacerlo



Sólo hay que definir el campo en la tabla como cualquier otro, asignarle las propiedades de búsqueda como haríamos para usar un cuadro combinado y poner «Sí» en la propiedad adecuada ¿La encuentras?



Ahí está. «Permitir varios Valores | Sí «. Es tan discreta, tan poquita cosa que uno tiene que leerse una y otra vez toda la ayuda para encontrarla. Decididamente, Office 2007 necesita una herramienta que, en español de España, podríamos llamar «Dónde coño está…»


Bueno, la novedad no es gran cosa, pero es tan sencillo que merece la pena usarla ¿Seguro? Seguramente sí, pero no es tan sencillo.


De entrada, un campo que contiene varios valores no encaja en una base de datos relacional, y esto es algo que no afecta sólo a los puristas; por ejemplo, en cuanto mostramos la tabla para realizar una consulta, nos encontramos con algo así:



Es decir, un campo del que cuelga otro campo. Entonces es cuando hay que leerse toda la ayuda al respecto y comprender la diferencia entre el campo enlazado y el campo mostrado…


Buscando «campos multivalor» en la ayuda, encontramos suficiente información para trabajar con ellos en las consultas, incluso bastanta para los recordsets ¡Ay, los recordsets!


La ayuda es bastante clara con su uso en recordsets de DAO, pero no dice que lo no dice no hay que suponerlo. En un recordset de DAO, un campo multivalor se comporta  como un nuevo recordset, secundario, en el que podemos recorrer y añadir o quitar registros usando los métodos propios de DAO. Para crear una instancia de este recordset secundario, usamos la propiedad Value del campo multivalor. El recordset secundario tiene un sólo campo que se llama Value, cuya propiedad predeterminada es Value ¿Está claro, no?


Entonces uno piensa que se puede hacer algo así:


While Not !MiCampo.Value.EOF



msgbox MiCampo.Value.Value.Value


 


Wend


Más que nada por hacer un poco de cachondeo con el Value y, para cachondeo vale, pero en cuanto queremos usar Add o Edit.. nos empiezan a salir extraños mensajes sobre métodos que no son de VBA. Para crear una instancia del recordset secundario, es necesario dimensionar un nuevo recordset y asignarle la propiedad Value del campo multivalor; no lo dice la ayuda, pero usar ésta directamente da problemas.


Dim miRs as DAO.Recordset


Set miRs = !MiCampo.Value


While Not miRs.EOF



…


¿Tanta complicación merece la pena? Al parecer, los campos multivalor son imprescindibles para lograr una total compatibilidad con los tipos de datos de las listas de Sharepoint, y la compatibilidad con Sharepoint sí que merece la pena.


¿Pero merece la pena usarlos? Yo creo que sí, que los vamos a acabar manejando con soltura y por un motivo que me he guardado en la manga: Los campos de «Datos anexados» («Attached») son también campos multivalor, de manera que, aunque tienen algún método y propiedad añadidos, comparten con los campos multivalor muchas características, y los campos  «Attached» sí que merecen la pena, pues, aunque sirvan para otras cosas, sobre todo solucionan los gravísimos problemas que tenía Access para almacenar imágenes.


Pero de los datos anexados hablaremos otro día 😉

Comments

10 Responsesso far

  1. anonymous dice:
    22 abril, 2007 a las 1:28 pm

    Me parece interesante. Lo veo como una tabla relacionada pero mas sencillo y claro de crear y gestionar.

    Lo que no veo tan claro es como acceder. Como introducir valores a la hora de importar y exportar registros, etc.

    Responder
  2. chea dice:
    22 abril, 2007 a las 11:38 pm

    Esa es precisamente la cuestión que, aunque es aparentemente muy sencillo, luego cuesto lo mismo que trabajar con una tabla relacionada, con la diferencia de que a eso estamos acostumbrados, pero a cómo se hace con los campos multivalor aún no.

    Responder
  3. anonymous dice:
    30 agosto, 2007 a las 7:45 pm

    Hola: esta opción me parece muy interesante y llevo buscando el modo de hacerlo varios días. El problema es que a mí no me aparece esa opción en las propiedades de búsqueda. Os lo agradecería si pudieseis darme un motivo o solución. Muchas gracias

    Responder
  4. chea dice:
    31 agosto, 2007 a las 1:00 am

    Posiblemente estés usando un formato de base de datos anterior, un mdb.

    Aunque Access 2007 permite usar muchas de sus características con archivos mdb, las específicas de datos, evidentemente, sólo se puede usar en el nuevo formato, el accdb.

    Después de escribir este artículo, he estado trabajando con campos multivalor y, sinceramente, si vas a usarlos en programación, son un auténtico dolor de cabeza. Muy interesantes si sólo se trata de crear una tabla y un formulario, pero de la que uno se mete en profundidades…

    Responder
  5. anonymous dice:
    5 enero, 2008 a las 2:58 pm

    hola; bueno esto esta interesante heeeeeeeeeee

    Responder
  6. anonymous dice:
    16 enero, 2008 a las 3:01 pm

    Todavía no he usado Access 2007 pero creo que estos campos sirven para algo que yo necesitaba en formularios y ejecutar consultas, evitando tener que poner casillas de verificación en una tabla para seleccionar las opciones que uno desea de manera independiente. Voy a probarlos!

    Responder
  7. anonymous dice:
    5 julio, 2009 a las 12:40 pm

    NO ME SALE ESA PROPIEDAD DE PERMITIR VARIOS VALORES
    COMO PUEDO HACER QUE APAREZCA?

    Responder
  8. anonymous dice:
    5 octubre, 2009 a las 7:50 pm

    —————-

    Responder
  9. anonymous dice:
    27 octubre, 2010 a las 9:48 am

    Muy buen trabajo Chea: Explicación sencilla y útil.
    En cuanto a la utilidad de los campos multivalor, discrepo de la mayoría. Se sale fuera de norma de diseño de B. de D., y las normas están hechas para «que nos entendamos» entre todos. No sólo existe Access como base de datos, y si empezamos a utilizar atajos anárquicos, a la hora de exportar vamos a tener problemas. Me parece una implementación que es mejor no utilizar.
    Sé que estos comentarios no van a gustar, pero es lo que pienso sobre el tema, y además lo argumento.

    Responder
  10. anonymous dice:
    24 noviembre, 2010 a las 9:57 pm

    Si si, muy prácticos para usar en formularios pero generan una información que es muy dificil de manipular en programación, y lo que es peor; a la hora de realizar un informe, cosa que uno supone como utilidad de principiante. Por ejemplo: si yo tengo un form «Hoteles» que tiene un combo enlazado a un campo multivalor como ser «Servicios», la subtabla (la que no se vé) guardará un registro con el par Hotel-Servicio por cada servicio que yo marque pero en el campo «Servicios» de la tabla hoteles se verán todos los servicios (o los ID de esos servicios si la columna dependiente guarda este dato) que marqué separados por un «;». Este campo es solo ilustrativo. Si me sirve esta información bien y si no que Dios me ayude a la hora de «hacer» un informe a partir de una tabla o un formulario. Este será todo el dato que le podré sacar al famoso campo multivalor (a menos que empiece a programar, usar recordsets en el aire y cosas por el estilo antes de llamar al informe).
    En fin, son un dolor de cabeza.
    Saludos.

    Responder

Deja un comentario Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

← Previous Post Next Post →

Categories

  • Sin categoría

Search:

Archives

  • mayo 2016
  • abril 2016
  • marzo 2016
  • enero 2016
  • diciembre 2015
  • julio 2015
  • junio 2015
  • mayo 2015
  • abril 2015
  • marzo 2015
  • febrero 2015
  • enero 2015
  • diciembre 2014
  • noviembre 2014
  • septiembre 2014
  • agosto 2014
  • junio 2014
  • mayo 2014
  • abril 2014
  • febrero 2013
  • mayo 2011
  • octubre 2010
  • enero 2010
  • junio 2009
  • mayo 2009
  • febrero 2009
  • enero 2009
  • diciembre 2008
  • noviembre 2008
  • octubre 2008
  • agosto 2008
  • junio 2008
  • mayo 2008
  • abril 2008
  • marzo 2008
  • enero 2008
  • octubre 2007
  • septiembre 2007
  • julio 2007
  • junio 2007
  • mayo 2007
  • abril 2007
About This Site

A cras tincidunt, ut tellus et. Gravida scel ipsum sed iaculis, nunc non nam. Placerat sed phase llus, purus purus elit.

Archives Widget
  • January 2010
  • December 2009
  • November 2009
  • October 2009
Categories
  • Entertainment
  • Technology
  • Sports & Recreation
  • Jobs & Lifestyle
Search

Powered by WordPress  |  Business Directory by InkThemes.

This site uses cookies: Find out more.