Too Cool for Internet Explorer

Historias de terror con Access 17

Hora y Fecha: September 19, 2006 @ 12:32 am Autor: Moisés Maciá
Categories:
1,447 views

Yo ya sabía que de Microsoft Access no me podía esperar gran cosa, pero pasaba olímpicamente de montar un servidor de bases de datos como $DEITY manda para una aplicación de escritorio y Access pintaba bien para un programita que demandaba poco rendimiento y sin accesos concurrentes a datos … o eso creía yo.

Los ingredientes de este plato: Microsoft Visual Studio 2005, C#, Microsoft Windows XP y el motor Jet de — destrucción sistemática de datos — Microsoft Access. Todos del mismo padre y la misma madre por lo que se presupone que se van a llevar bien y van a funcionar en perfecta armonía. Pues no.

Empezó jodiendo con la peculiar interpretación del lenguaje SQL, concretamente en las funciones agregadas que se han sacado de la manga para el manejo de fechas. Bueeeeeno, nada grave, pasamos por el aro y punto.

A mitad del desarrollo me doy cuenta que el muy cabrito cambia los meses de las fechas por dias y los dias por meses; así, indiscriminadamente y sin que le tiemble la mano, todo porque algún iluminado de Microsoft pensó que tamaña estupidez corregiría los errores de la gente. Mas que corregir lo que hace es asegurar la equivocación. Ni una acertó.

Pero lo mejor viene ahora, después de un par de meses en producción, cuando aparecen los registros fantasma (registros borrados que misteriosamente siguen estando en la base de datos), los registros que no se pueden borrar, las consultas que no devuelven nada pese a estar los datos en las tablas …

Mira que le pedía poco, mira que apenas tiene que hacer 100 consultas al día y sin concurrencia, apenas 1000 registros de nada en tres tablas roñosas …

Vaya puta mierda de Access

He utilizado Oracle, MySQL, Firebird, PostgreSQL, SQLite; con cientos de millones de registros, con miles de transacciones al día, con backups en caliente, en servicio durante años y nunca se ha perdido ni un solo bit. ¿Qué clase de base de datos es esta que te das la vuelta y te monta el belén?

Encima cachondeo en los grupos de noticias de Microsoft: —utiliza compactar y reparar periódicamente para que no te ocurra eso— Ole! viva la seguridad que me ofrece una base de datos que hay que reparar después de cada consulta.

Señores yo caí en el error, Microsoft Access nunca más.

PD. No he probado Microsoft SQL Server, pero como sea igual vamos listos …





« Anterior post: Publicidad en los libros de texto | Próximo post: Patentes de Software, de nuevo »

17 Comentarios para “Historias de terror con Access”

HeV
19 de September de 2006 a las 12:15 pm    

Hombre SQL Server es un poco mejor, más profesional, no he probado la última versión que dicen que traía mejoras, pero la anterior era bastante decente.

subsonica
19 de September de 2006 a las 11:41 pm    

Moises te puedo asegurar que yo ha trabajado administrando SLQ Server (2000) y aparecían las puñeteras filas de registros fantasma. Ahora que ya no se si la culpa sería de la aplicación (En C++, no la había escrito yo).

Por cierto ¿Sabeis que quieren volver a sacar una directiva de patentes de software? Esta vez se llama EPLA y la pueden armar muy parda!Van a votarlo el día 25 de este mes. A las armas!
http://subsonica.blogsome.com/2006/09/15/212/
http://www.rebelion.org/noticia.php?id=37627

meneame.net
20 de September de 2006 a las 4:36 pm    

Historias de terror con Access…

Yo ya sabía que de Microsoft Access no me podía esperar gran cosa, pero pasaba olímpicamente de montar un servidor de bases de datos como $DEITY manda para una aplicación de escritorio y Access pintaba bien para un programita que demandaba poco ren…

Patucas
20 de September de 2006 a las 5:03 pm    

majete, sabes que hay varios formatos de fecha, no? DD/MM/YY o MM/DD/YY y otros muchos mas, y hay que indicarle al motor, como quieres trabajar. Y si no le dices nada toma por defecto el formato MM/DD/YY que es el formato habitual.
Resumen de formatos:

Style ID Style Type

0 or 100 mon dd yyyy hh:miAM (or PM)
101 mm/dd/yy
102 yy.mm.dd
103 dd/mm/yy
104 dd.mm.yy
105 dd-mm-yy
106 dd mon yy
107 Mon dd, yy
108 hh:mm:ss
9 or 109 mon dd yyyy hh:mi:ss:mmmAM (or PM)
110 mm-dd-yy
111 yy/mm/dd
112 yymmdd
13 or 113 dd mon yyyy hh:mm:ss:mmm(24h)
114 hh:mi:ss:mmm(24h)
20 or 120 yyyy-mm-dd hh:mi:ss(24h)
21 or 121 yyyy-mm-dd hh:mi:ss.mmm(24h)
126 yyyy-mm-dd Thh:mm:ss.mmm(no spaces)
130 dd mon yyyy hh:mi:ss:mmmAM
131 dd/mm/yy hh:mi:ss:mmmAM

Moisés Maciá
20 de September de 2006 a las 6:07 pm    

Acostumbrado a MySQL, si pones dia, mes y año te lo respeta. Si pones mes, dia y año (formato anglosajon), igualmente te lo respeta; pero es que Access le pega la vuelta lo pongas como lo pongas.

Al final opte por el formato YYYY/MM/DD que si que aceptaba sin problemas.

ateo
20 de September de 2006 a las 6:09 pm    

En mi web uso bases de datos Access. Unos 2.000 usuarios por día y tablas con tres y cuatro mil registros. Ni un problema con el Access. Lo más que se corrompen de cuando en cuando las extensiones de Front Page, programa que también uso desde hace años.

Muchas veces he pensado el problema si se me pifian, pero lo cierto es que va para cuatro años y me resulta muy cómodo el formato automatizado que para asp con access me facilita el FrontPage.

Mercenario
20 de September de 2006 a las 6:14 pm    

No ha sido fallo de access, ha sido fallo por no preconfigurar los valores de fecha del motor.

Por cierto, access trabaja medio decente hasta los 400.000 registros en modo local, despues es otra historia….

Elbarto
20 de September de 2006 a las 6:41 pm    

No quiero sonar troll, pero alguien que utiliza FrontPage + MS Accsses … no se yo si fiarme.

En cualquier caso, cuando leo este tipo de cosas me pregunto: que lleva a la gente a utilizar SW de pago (sea de Bill o no) teniendo opciones libres y mucho mejores, como es el caso de MySQL ?

No entiendo ….

notienesniputaidea
21 de September de 2006 a las 2:41 am    

En serio, no tienes ni puta idea. ¿Probastes a cambiar la configuración regional para especificar los formatos de fecha y hora?

Y al patán que afirma ver registros fantasma en SQL Server le recomendaría un commit y un libro sobre bases de datos transaccionales.

Nabuky
3 de October de 2006 a las 1:34 pm    

Llevo muchisimos años programando en VBA con Access y nunca he tenido los problemas que citas.
Algunos clientes tienen bases de varias decenas de miles de registros ocupando muchas megas y sin problemas.
No citas la version de Access que instalaste, sospecho que simplemente tenias el motor MsJet para BBDD y no alguna version completa que habitualmente se distibuye con Office.

Moisés Maciá
3 de October de 2006 a las 3:17 pm    

No tenia ni Office ni nada, lo programe a pelo con el motor Jet que comentas.

Ahora el sorprendido soy yo, o sea que para que funcione bien tienes que instalar el Office?

Unicamente queria un lugar donde guardar unos cuantos datos, ni por asomo le voy a pedir al cliente que pague una licencia de MS Office para eso.

[...] Atendiendo a la experiencia previa, Microsoft Access requiere de un mantenimiento y reparación periodica de las tablas para asegurar la integridad de los datos. [...]

Jakoujan
7 de January de 2007 a las 12:05 am    

Hola

Yo apyo a quien dijo de las opciones libres que son mucho mejores lo peor del caso es que hasta el SQL server ya viendose en aprietos (28 gb) a parte de lento tiende a meter errores de integridad (aclaro no hice yo el modelo de datos ) pero como falla!!!!

Ahora estoy haciendo aplicaciones C# 2005 con SQLite y muy recomdable mejor que ACCESS

JuliusGuate
13 de March de 2007 a las 6:25 pm    

Interesante, cabalmente para una aplicación de bajos requerimientos uno tiene un mal pensamiento.. hasta por que no decir Una Pala Palabra: Access.
La situación que ha vivido Moisés Macía, la sufrí de alguna manera, con Access, Visual Basic 6.0, y Windows 98/xp/me
El manejo de las fechas es una de las características muy especiales que tiene Access, después de muchos intentos, de muchas pruebas/error, y sobre todo de preguntar a mucha gente se puede lograr talvez no algo respetable, pero por lo menos funcional. En el caso de las fechas, tiene que ver la configuración Regional, y hasta las versiones de los motores de datos (hay por ahí una aplicación llamada MDAC_TYP.EXE que actualiza el motor (Microsoft Jet Engine) sin necesidad de adquirir OFFICE. Otra de las caracteristicas de ACCESS es que no maneja algo como ‘Garbage Collector’ entonces nuestra “base de datos” tiende a crecer.. y a crecer aunque se esten eliminando registros, por eso se hace necesario el compactar. Para las personas que programan Visual Studio 6.0 existe una alternativa bastante viable el MSDE, que es el motor de base de datos de SQL7, bastante respetable diria yo, gratis si uno tiene la licencia de Visual Studio. SIN EMBARGO … definitivamente prefiero utilizar software Open Source (MySql y/o PostgreSQL). Una de las ventajas de MySQL es que se puede correr en ambientes Windows, mientras que PostgreSQL solamente en Linux, en lo personal prefiero Postgresql porque es una base de datos relacional, bien puede servir para una aplicación de pocos requerimientos o bien para una aplicación ya galletuda. Pero ooohhhh.. ahora ya está la versión 8.0 (creo que hay 8.1) de PostgreSQL para Windows, corre como un Service, aunque los mismos desarrolladores no la recomiendan para Producción, es una mejor opción que el ACCESS además casi siempre resulta que las aplicaciones crecen, entonces solo es de sacar un backup en windows y restablecerlo en un server en linux y tenemos ya un completo sistema cliente-servidor funcionando. Claro, hay que leer un poco sobre la configuración optima de Postgresql (tunning postgresql) para lograr un performance optimo, definir el Date-Style para el formateo de las fechas, y el Encoding, para reconocimiento de nuestros caracteres especiales (tildes y la letra ñ)

Pablo
2 de April de 2007 a las 8:59 pm    

Estimados: para los problemas de fecha en access.
Usar yyyy/mm/dd y sera independiende de la configuarion reginal

salu2

Zero
16 de May de 2007 a las 3:23 pm    

Gente, estudiar antes de criticar. Tanto Access no es un ENGINE de base de datos, y no debe utilizarse como tal. Oracle y MS SQL Server no son “decentes”, son excelentes motores de alta performance, con una utilización adecuada por parte de los DBA y aplicaciones. Para aplicaciones de bajo coste, se puede utilizar MSDE que es gratuito (bases de hasta 2GB), que tiene una excelente performance si las estructuras son correctamente definidas y utilizadas. Con pruebas en una PC de escritorio, sobre una tabla de 15 millones de registros (código y descripcion) una consulta de rango sobre la clave demora menos de un segundo. Prueben ustedes mismos exactamente eso en firebird, my sql, u otro de esos morores, y comprueben la diferencia.. van a estar obteniendo tiempos de dos a tres minutos en la respuesta. Por favor, lean acerca de arquitecturas y tecnologías… no critiquen productos sólo por lo que escuchan o leen en algunos foros… o porque no les caiga bien la empresa que los produce. Prueben ustedes mismos, y comparen las diferencias.

Saludos.

Juan Santiago
4 de June de 2007 a las 12:09 am    

Access es una mierda, mierda con todas la letras. No hay una reputa referencia de como carajo usar oledb con access, hace lo que se le canta los huevos. Las fechas funcionan para el tuje. MUUUUUUUUUUUYY, MUUUUUUUUUUUUY puto. SQL Server es una garcha nada más. MySQL? Y bueno, no es Oracle, pero funciona muy bien. Oracle? El que trabajó con BD AMA ORACLE. Hace todo, hasta te hace la paja. Gente, un consejo, eviten la mierda de Access, salvo que sea totalmente necesario, y no quieran programar pasándole fechas, ni siquiera desde productos microchot. PD: Soy C# Semi-Senior developer, nivel internacional, así que no piensen que digo pelotudeces. Es así, palabra santa.


Bad Behavior has blocked 315 access attempts in the last 7 days.