Notas rápidas al trabajar con Access

Ignoremos el hecho de que Access es MALO, pero MALO con ganas. No tengo idea de por qué no hicieron las cosas en Oracle, pero también pasaremos eso por alto.

Una pequeña lista de problemas que me he encontrado al trabajar con esta aberración. Nota: estoy trabajando con Access 2010.

  • Las consultas que usan LIKE necesitan * en vez de %. Ejemplo:
    (Mal) Select nombre from agenda where name like ‘%Medina%’
    (Bien) Select nombre from agenda where name like ‘*Medina*’
  • Lo anterior es FALSO si la consulta se envía desde fuera (en mi caso, C#).
    A fuerzas necesita el %
  • No se puede hacer un join de tablas con campos de tipo “Memo” (no me pregunten por qué tengo que hacer joins con ese tipo de información :S).
    El tipo de datos “Memo” no guarda los datos en la tabla, sino en otro lugar y la tabla contiene solamente un apuntador a esos datos. Como SQL no sabe qué onda con apuntadores, te dice que no es posible hacer el join.
  • Al parecer, al crear una consulta directamente en SQL es necesario guardarla primero antes de ejecutarla si se quiere que Access respete la indentación que le dimos. No he comprobado esto al 100%, pero sí golpeé el monitor cuando abrí una mega consulta que hice y Access me mostró todo por ningún lado, mientras que otras sí las dejaba como las había formateado.
  • No se puede poner comentarios con “–” en el SQL que maneja Access. Horrible, si me permiten el comentario.
  • Access no aguanta hacer subqueries muy pesadas. Una consulta estilo:
    Select id from agenda 
    where nombre in (
        -- Una súper consulta incluyendo más subqueries, union, left outer join, etc.
    )

    hace que Access te diga “esa operación no se puede realizar en subqueries.

    La misma consulta en MySQL y PostgreSql corre sin problemas, por lo que el SQL está correcto.

Sé que soy un completo Noob en esto de Access, por lo que se aceptan sugerencias y correcciones.

6 thoughts on “Notas rápidas al trabajar con Access”

  1. Pero claro MS te dira que no es problema de access, es feature, por eso debes comprar MSSQL, que si te hará odiar sql, lo de access y c# es comprensible en access se usa un subconjunto de sql y en c# si quieres que alguien lo use pues tendrás que pasarlo como dice en el standar % en vez de * que de paso se me hace que tiene que ver con el API de archivos de win mas que otra cosa, de todas formas aunque supongo que ya lo consultaste no esta de más mencionar que los documentos de referencia de MS pueden ser de utilidad http://msdn.microsoft.com/en-us/office/ff621506 especialmente este http://msdn.microsoft.com/en-us/library/ee861519.aspx

    Saludos.

  2. Que tal master,

    No se si dentro del access tengas macros o modulos pero si solo lo usas para almacenar datos y si las limitaciones del proyecto te lo permiten, te recomendaria que migraras la base de datos a Microsoft SQLExpress para tener un SQL mas estandar. Esto lo haces desde el SQL Server Management Studio, creas la base de datos y le das a la base de datos Tasks -> Import Data y seleccionas tu archivo de access.

    Tambien me ha tocado trabajar con access como base de datos y como lo mencionas es bastante MALO y no recomendable.

  3. Hijole, Manuel…

    No me gusta el papel del abogado del diablo pero pues… Yo creo que acusas al Access injustamente…

    Por lo que cuentas, estás usando la herramienta inapropiada para la tarea que tienes.

    Access usa su propio lenguaje SQL -desarrollado por Microsoft- y no es compatible con el estándar al que se atienen los “grandes” de la industria…

    Además, si tengo un SQL que funciona bonito en Oracle y trato de usarlo en DB2, por supuesto que no va a funcionar a la primera, eso es normal…

    Para tu consulta anidada -que se supone es una aberración según los puristas del SQL- puedes utilizar “stored procedures” que en access son manejados como consultas independientes que se ejecutan en espacios de memoria independientes… Son mucho más rápidos y hacen el mismo efecto de las consultas anidadas que se usan en otros DBE’s…

    Access es solo una base de datos “para usuario ocasional” y utilizarla en proyectos de empresa no lo recomienda ni siquiera Microsoft.

    Se que tu no tomaste la decisión y te tienes que rifar con esto así que te deseo la mejor de las suertes.

    ¡Saludos desde Querétaro!

  4. Mi sugerencia es que cambies Access por SQL Server jaja, la verdad Access si es bastante malito para usarlo a nivel profesional, debería ser usado solo en proyectos pequeños (muy pequeños) y si a eso le sumamos que la sintaxis cambia un poco, es un dolor de cabeza, nunca le entendi mucho ni me esmere en hacerlo, suerte y ojala resuelvas esos problems 🙁 .

  5. Hola, de entrada disculpa por usar este espacio para dudas personales pero consideré que así llamaría más la atención 🙂
    Resulta que quiero aplicar para la beca de licenciatura pero la verdad no tengo nociones reales de la educación universitaria allá, ¿cuáles son los aspectos positivos y negativos de la educación? ¿es cierto que el estudiante tiene un rol pasivo y basta con un reporte al final de semestre para salir bien? ¿crees que la vida fuera de la escuela vale suficientemente la pena como para dejar México? Mi mail es anaular@hotmail.com
    Y de antemano gracias por tu tiempo pese a tu ocupada agenda, agradeceré infinitamente cualquier información de ayuda.

  6. Access no me gusta por cosas que tu ya sabrás, pero solo lo usaría (solo a fuerzas) para algo simple como un reloj checador independiente o algo más pequeño, aunque siendo así usaría SQLite de todas formas.

    ¡Suerte con esa llave del demonio!

Leave a Reply

Your email address will not be published. Required fields are marked *