April 2007 - Artículos

Campos multivalor en Accesss 2007

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 ;-)

Publicado por Chea con 8 comment(s)
Archivado en: ,

Nombres de colores en Access 2007

Un nuevo modo de usar los colores para Access 2007 es utilizando nombres de colores, parecido a los nombres que se usan en HTML pero en este caso más largos, más explícitos. Estos colores dependen del sistema operativo y más concretamente del Tema que esté seleccionado. Los presentados en la tabla corresponden al tema de Windows XP y pueden cambiar.

Aunque en Access 2003 ya existen estas constantes e incluso con su Nombre, (ver en ayuda Constantes de color  del sistema), esta nueva versión nos presenta las comentadas descripciones como valores seleccionables en la nueva lista desplegable de la propiedad "Color del  fondo".

 

Alguno de estos Nombres de Colores se puede usar desde VBA por el nombre de una constante, estas están declaradas en la referencia VBA (C:\Archivos de programa\Archivos comunes\Microsoft Shared\VBA\VBA6\VBE6.DLL) y que podemos observar varios tipos de asociaciones en la siguiente tabla,

Constante Valor 2 Color Descripción R G B Valor
vbScrollBars -2147483648   Barra de desplazamiento del sistema 212 208 200 0x80000000
  -2147483618   Barra de menús del sistema 220 220 220  
vbActiveTitleBar -2147483646   Barra de título activa del sistema 52 52 52 0x80000002
vbInactiveTitleBar -2147483645   Barra de título inactiva del sistema 116 116 116 0x80000003
vbActiveBorder -2147483638   Borde activo del sistema 212 208 200 0x8000000A
vbInactiveBorder -2147483637   Borde inactivo del sistema 212 208 200 0x8000000B
  -2147483609   Bordes/Líneas de cuadrícula 121 167 227  
  -2147483614   Descripción del texto 156 163 173  
vb3DHighlight -2147483628   Elemento 3D resaltado del sistema 255 255 255 0x80000014
  -2147483608   Elemento resaltado 251 140 60  
  -2147483619   Elemento resaltado de menú del sistema 190 190 190  
vbHighlight -2147483635   Elemento resaltado del sistema 190 190 190 0x8000000D
vbDesktop -2147483647   Escritorio del sistema 26 26 26 0x80000001
  -2147483623   Estática del sistema 181 181 181  
  -2147483610   Fila alterna 244 244 244  
vbGrayText -2147483631   Fila alternativa del sistema 100 100 100 0x80000011
  -2147483612   Fondo claro del encabezado 194 220 255  
vbInfoBackground -2147483624   Fondo de información sobre herramientas del sistema 255 255 225 0x80000018
vbApplicationWorkspace -2147483636   Fondo de la aplicación del sistema 128 128 128 0x8000000C
vbMenuBar -2147483644   Fondo de menú del sistema 255 255 255 0x80000004
  -2147483611   Fondo oscuro del encabezado 101 147 207  
  -2147483613   Formulario de fondo 237 237 237  
vb3DLight -2147483626   Luz 3D del sistema 226 226 226 0x80000016
vbWindowFrame -2147483642   Marco de la ventana del sistema 0 0 0 0x80000006
vbButtonFace y vb3DFace -2147483633   Parte frontal del botón del sistema 226 226 226 0x8000000F
vb3DDKShadow -2147483627   Sombra 3D del sistema 135 135 135 0x80000015
vbButtonShadow y vb3DShadow -2147483632   Sombra del botón del sistema 180 180 180 0x80000010
  -2147483607   Tema de Access 1 242 248 255  
  -2147483598   Tema de Access 10 0 34 77  
  -2147483606   Tema de Access 2 227 239 255  
  -2147483605   Tema de Access 3 214 232 255  
  -2147483604   Tema de Access 4 173 209 255  
  -2147483603   Tema de Access 5 142 187 245  
  -2147483602   Tema de Access 6 121 167 227  
  -2147483601   Tema de Access 7 101 147 207  
  -2147483600   Tema de Access 8 55 100 160  
  -2147483599   Tema de Access 9 32 77 137  
  -2147483616   Texto claro 214 232 255  
vbHighlightText -2147483634   Texto de elemento resaltado del sistema 0 0 0 0x8000000E
vbInfoText -2147483625   Texto de información sobre herramientas del sistema 0 0 0 0x80000017
vbTitleBarText -2147483639   Texto de la barra de título del sistema 255 255 255 0x80000009
vbWindowText -2147483640   Texto de la ventana del sistema 0 0 0 0x80000008
vbInactiveCaptionText -2147483629   Texto de título inactivo del sistema 244 244 244 0x80000013
vbButtonText -2147483630   Texto del botón del sistema 0 0 0 0x80000012
vbMenuText -2147483641   Texto del menú del sistema 0 0 0 0x80000007
  -2147483622   Texto estático del sistema 0 0 128  
  -2147483617   Texto negro 0 34 77  
  -2147483615   Texto oscuro 32 77 137  
  -2147483621   Título activo degradado del sistema 116 116 116  
  -2147483620   Título inactivo degradado del sistema 200 200 200  
vbWindowBackground -2147483643   Ventana del sistema 255 255 255 0x80000005

Hay otros colores de sistema que no tienen asociadas constantes pero que se pueden utilizar usando cualquier de los valores en notación Hexadecimal (sustituir 0x por &H),  en códigos de colores RGB o con el número de tipo Long de la columna Valor 2 y es el que realmente usa Access para establecer los colores.

Un ejemplo de los modos comentados podría ser el siguiente,

 

Prestar atención a la última línea, es un método rápido de conocer las posibilidades a usar.

Al escribir el . tras el nombre de la clase SystemColorConstants nos sale la ventana del Intellisense con la lista de los nombres de las constantes.

Si no se usa VBA, se puede usar los siguientes formatos directamente sobre la ventana de propiedades,

En el Examinador de objetos podemos localizar estas constantes y sus valores seleccionando VBA como referencia y buscando el texto SystemColorConstants.

 

Mc.

 

Publicado por McPegasus con no comments
Archivado en: ,

Nueva presencia estética en Access 2007

 

Access es un instrumento de desarrollo muy poderoso con la condición de que se utilice para lo que está pensado y con las herramientas que ofrece, y no para otra cosa ni de otra manera. Es la olla Express de la informática, capaz de cocer una aplicación de gestión en la cuarta parte del tiempo y tan sabrosa o más que con cualquier otro instrumento; claro, que si te empeñas en hacer un bacalao al pil-pil con la olla Express, posiblemente te acabará saliendo, pero no le estás sacando todo su rendimiento ni a la olla ni al bacalao.

 

Así que la gracia está en sacarle todo el partido a las herramientas que trae y, como Access 2007 viene con bastantes novedades, hay que irlas estudiando para incorporarlas a nuestro modo de trabajo.

 

Por ejemplo, en el diseño de los formularios tenemos una nueva herramienta para alinear controles agrupados, apilados o en tabla, con un resultado bastante aceptable y que agiliza el trabajo. Al aplicarla a un grupo de controles, éstos y sus etiquetas se alinean y ajustan por igual el tamaño a lo ancho; si cambiamos uno de posición o de altura, los demás se ajustan para continuar con el alineamiento. No es la mejor solución estética, pues para algunos controles el tamaño será demasiado ancho, pero es muy aceptable y, sobre todo muy, muy rápida, de manera que podemos soluciones la presentación en un pispás y centrarnos en el desarrollo.

 

 

Una novedad muy interesante es la posibilidad de que los controles se reubiquen o se expandan en el formulario cuando éste cambie de tamaño. No es una solución para ajustar los formularios a distintas resoluciones de pantalla,  aunque algo arregla, pues no cambia el tamaño de las fuentes, sino, sobre todo, para el caso de un formulario que, en ocasiones, mostremos maximizado.

 


Ahora, los botones pueden contener texto e imagen al mismo tiempo, fondo transparente y mostrar el icono de la manita del hipervínculo. Access viene acompañado de plantillas y las plantillas traen botones con su funcionalidad incorporada, pues el código va en una macro incrustada; de manera que en una sola operación de copiar y pegar añadimos a nuestro formulario los botones más comunes (salir, guardar y nuevo…) junto con su código. Las plantillas de formularios incluyen imágenes de fondo que recuerdan a las de las páginas web, con una cabecera para el título y, justo debajo, una barra dibujada a propósito para que coloquemos esos nuevos botones. Es tan sencillo y tan mono, que porqué no vamos a usarlo.

 

 

 

Además de las imágenes de fondo, las plantillas de formulario incluyen formatos para los controles y texto y su propia paleta de colores, menos chillones y mejor casados. Más adelante, diseñaremos nuestros propios formatos, que podremos guardar como plantilla, pero, de momento, podemos elegir uno existente, que no están muy vistos. Ah, y tranquilos, que las imágenes se guardan en su formato original, no como en versiones anteriores.

 

 

Vamos, que llevamos cuatro días con esta nueva versión y la comodidad ya nos está haciendo usar estas herramientas con profusión.

 

Hay un par de cosas que cuesta más usar, porque resultan de entrada un tanto chocantes. Me refiero a los formularios en pestañas y a la cinta de opciones, el puñetero “Ribbon”.

 

“Esto debe ser cosa de mi mujer: Todo está mucho más bonito y en orden… ¡Pero no encuentro nada!” Ese fue mi primer comentario al enfrentarme a la cinta de opciones; sin embargo, al poco de usarlo me resulta mucho más cómodo que la barra de herramientas, hasta el punto que estoy usando Access 2007 para hacer unas correcciones a una aplicación en Access 2003.

 

Pero el “Ribbon” influye decisivamente en el diseño de la aplicación, pues ya no valen nuestros menús y barras de herramientas, que debemos sustituir por un “Ribbon” personalizado, ni los formularios pueden tener las mismas proporciones, pues ocupa mucho más a lo alto (como cuatro barras de menú); además, su funcionalidad es distinta y debemos empezar a “pensarlo” de distinta manera.

 

Personalizar el “Ribbon” es una puñeta, que se parece a nada que hiciéramos antes, pero no queda más remedio que aprender. Ya hay asistentes de pago y en unos meses los habrá gratis y, seguramente, una próxima versión de Access incorporará alguno, pero,  de momento, hay que recurrir al modo canónico (que en Access tiene sus diferencias con las demás aplicaciones de Office) y del que ya trataremos más adelante.

 

Lo de los formularios en pestañas es mucho más sencillo de usar pero, después de años trabajando de otra manera resulta extraño pensar en una utilidad. Es opcional, pero hay que probarlo. Usarlo resulta cómodo, algo parecido a las pestañas del Explorer 7, pero en el diseño de la aplicación incorporarlo obliga a cambiar planteamientos; por ejemplo, antes la posibilidad de enfrentar al usuario a varios formularios en cascada asustaba lo suficiente para no mostrar más de uno, pero ahora queda tan ordenadito todo que la cosa cambia. Al final, es cosa de costumbre y enseguida se le ve ventaja, y las posibilidades para expandir o reubicar los controles ayuda mucho.

 

Al final, probando, probando, sólo usando asistentes y herramientas estándar, si entretenerse en el diseño gráfico, la presencia estética de nuestra aplicación cambia mucho con respecto a la de versiones anteriores

 

 

 

¿Cuál es la de Access 2003 y cuál la de 2007? Smile

Publicado por Chea con 8 comment(s)
Archivado en:

Aquí estamos II

Blog, blog, blog, Tongue Tied en varias ocasiones lo he intentado, espero en ésta que es compartido con Chea poder continuarlo Big Smile. El compromiso hace tirar del carro.

La frecuencia va a depender de, como el título del blog dice, 'Lo que vamos conociendo de Access 2007'. En un principio, son las primeras impresiones tras la instalación, comprobar si hay alguna novedad que uno necesita y que no existe en versiones anteriores, verificar si las novedades que publica MS pueden ser requeridas para mi trabajo diario.

 Espero que esta versión me enganche como lo hizo la del 97. aA priori así ha sido, aunque el primer vistazo fue de verse las caras un buen rato Indifferent, Mc <--> Ribbon (cinta) <--> Mc <--> Ribbon <--> Mc, ¡¡ninguno de los dos decía nada!! Zip it! tan solo nos seguiamos mirando Mc <--> Ribbon <--> Mc <--> Ribbon <--> Mc <--> Ribbon Huh?. Pasados unos minutos que parecieron horas, yo actué ...  y Access también, se cerró.

Base de datos en blanco | Crear | .accdb es la nueva extensión del archivo de tipo base de datos de Access 2007, sólo usando esta extensión (no .mdb) podrás sacarle todas las nuevas funcionabilidades de esta versión que ya forma parte del futuro.

Base de datos en blanco | Crear | me voy a crear una nueva y ahora mismo vuelvo a contaros 'Lo que voy conociendo.'

Rafael Andrada

McPegasus

https://mvp.support.microsoft.com/profile/Rafael

www.mcpegasus.es, www.mcpegasus.net

Publicado por McPegasus con no comments
Archivado en:

Aquí estamos

Pues aquí estamos en esta cosa tan moderna del blog para comentar los prodigios de Access 2007, del que, a tres meses de su lanzamiento, aún se habla muy poco en español.

Aquí estamos McPegasus y yo, Chea, (o viceversa) porque nos ha invitado Rodrigo Corral. Agradecidos por la invitación y un poquitín temerosos de no dar la talla, rodeados como estamos de ingenieros por todas partes, pero sacando pecho y dispuestos a defender la albañilería de software.

Nos encontramos ante el cambio más importante de Access en diez años y, a pesar de eso, o quizás precisamente por ello, apenas es motivo de conversación en los foros. Por un lado,  excepto con los menús y barras de herramientas, que han sido sustituidos por el “ribbon”, con el resto podemos seguir trabajando exactamente igual que antes; por otro, las mejoras, importantísimas, quizás no se aprecian a simple vista, sino que tenemos que escarbar un poco, y también, porqué no, parece que el precio y las dificultades para piratearlo desaniman un poco a posibles usuarios.

Access 2007 merece un tratamiento aparte.  Es más que una nueva versión de Access, es el salto cualitativo más importante desde la versión 97 y necesita darse a conocer y poder abordar sus problemas específicos. Algunos usuarios han probado Access 2007 y, excepto por la nueva interfaz de usuario, que encima no los gusta, apenas han encontrado diferencias; seguramente han probado su vieja aplicación sin caer en la cuenta de que, si no convertimos los datos al nuevo formato, la mayor parte de las mejoras no están disponibles; a lo mejor no han observado que, por ejemplo, para editar un campo memo en formato RTF, basta con cambiar una propiedad de la tabla, o que con los nuevos “datos adjuntos” insertamos una fotografía con un par de clics o, como sus formularios continúan con la misma imagen de fondo, no ven que ahora las imágenes ocupan mucho menos y admiten más formatos.

Así que aquí estamos, como dos viciosos tratando de que otros también lo sean, y cuantos más mejor. Nos gustaría que hubiera mucha gente trabajando con Access 2007 y charlar de ello en los foros en los que llevamos años, que somos muy cascantes, pero no es así de momento. Los dos tenemos nuestra propia página acerca de Access, con soluciones de experto, pero ahora volvemos a ser novatos y de lo que hay que hablar es tanto de lo que sabemos, como de lo que no entendemos, que todo ayuda, y para eso nada mejor que un blog.

Publicado por Chea con 11 comment(s)