Microsoft Access es un Sistema de gestión de base de datos Relacional creado y modificado por Microsoft (DBMS) para uso personal de pequeñas organizaciones. Es un componente de la suite Microsoft Office aunque no se incluye en el paquete "básico". Una posibilidad adicional es la de crear ficheros con bases de datos que pueden ser consultados por otros programas.
Generalidades
Es un software de gran difusión entre pequeñas empresas (PYMES) cuyas bases de datos no requieren de excesiva potencia, ya que se integra perfectamente con el resto de aplicaciones de Microsoft y permite crear pequeñas aplicaciones con unos pocos conocimientos de programación.
Tiene un sistema de seguridad de cifrado bastante primitivo y puede ser la respuesta a proyectos de programación de pequeño y mediano tamaño.
Nota de Access
Con Access VBA se puede llegar a tener mas de 1.000.000º de registros sin problemas siempre y cuando la capacidad de la DB no supere 1,7 GB.
Muchos usuarios piensan que Access tiene limitaciones en general y, como herramienta de bases de datos está pensada para una pequeña empresa, donde no disponen de grandes bancos de datos, también está dirigida para típicas bases de datos de casa.
Sus limitaciones por ahora están basadas en el tamaño de la DB y en la tarea de multifunción que superando más de 20 usuarios Clientes, la DB puede fallar con bloqueos importantes. Por lo demás, Access puede tener mas de 1.000.000º de registros sin dar ningún tipo de problemas.
Con Access se puede hacer todo lo que uno desee, hasta la aplicación mas compleja que podamos imaginar, todo depende de quien programe la DB, de como se estructure y de las consultas que realiza a las tablas. Está claro que utilizar índices ayuda a Access para agilizar la DB, pero es aconsejable no utilizarlos si deseas manejar muchos Datos, así evitamos Bloqueos y el mal de Access, lo ideal es, que tu base de datos de Access se mueva, relacione y busque la información con instrucciones SQL no muy complejas, se gana, potencia y rigidez con Access.
Para dar una idea de Access y de su potencia:
Imaginaros tres Tablas:
Información Generada en cuatro días
1ª Contiene órdenes de fabricación, Fecha, hora y minutos y puerta 75.000 registros
2ª Contiene órdenes de fabricación, Fecha, hora, minutos y línea de montaje 1.350.000 registros
3ª En esta tabla se encuentra una estructura de componentes los cuales disponen de 7800 Registros
Relación con otras 4 tablas (las tablas de esta DB no están relacionadas entre si)
El programador ha de saber como explosionar los datos, relacionando las 7 tablas entre sin (sin la función de relaciones, eso si, las tablas han de tener datos en común), explosionarlas con instrucciones SQL y obtener la información que según el usuario solicita al consultar la DB con la Fecha y hora en la que desea saber el consumo.
Al tratarse de tantas tablas, seguro que a más de un usuario se le hubiera cocido la DB de Access de pensar tanto en procesar toda la información. Con este ejemplo (aunque no se detalle, por que seria muy extenso) se demuestra que la potencia de Access está reñida con la experiencia del programador y sus recursos como tal.
Esta Select es de Oracle 9i, la pregunta es ¿Access puede ejecutar esta select en su entorno con Oracle? La respuesta es si.. esta sería una de las Select para el ejemplo que se detalla.
SELECT TableMat.Referencia_SAP, SUM(Cla.Cantidad) AS Cantidad
FROM OrdenesJIT Ord, ClavesJIT Cla, GA_TABLE_MAT TableMat
WHERE Cla.Punto = 'M3'
AND Ord.Punto = 'M3'
AND Ord.Orden = Cla.Orden
AND Ord.Entrada >= TO_DATE('01-09-2005','DD-MM-YYYY HH24:MI:SS')
AND Ord.Entrada <= TO_DATE('02-10-2005','DD-MM-YYYY HH24:MI:SS')
AND TableMat.Ref_Cli = Cla.Clave
AND TableMat.Type_Mat LIKE '%P%'
GROUP BY TableMat.Referencia_SAP
UNION ALL
SELECT Referencia_SAP, SUM(Cant1 * Cant2) AS Cantidad
FROM (
SELECT OrdCla.Clave, TableMat.Referencia_SAP, TableMat.Ref_Cli, MAX(OrdCla.Cantidad) AS
Cant1, MAX(ABS(DescMat.JAEIGW)) AS Cant2
FROM
(SELECT Cla.Clave, SUM(Cla.Cantidad) AS Cantidad
FROM OrdenesJIT Ord, ClavesJIT Cla
WHERE Cla.Punto = 'M3'
AND ((Cla.Clave LIKE 'K%') OR (Cla.Clave LIKE 'M%') OR (Cla.Clave
LIKE 'P%') OR (Cla.Clave LIKE 'R%') OR (Cla.Clave LIKE 'S%') OR (Cla.Clave LIKE 'T%') OR
(Cla.Clave LIKE 'L%'))
AND Ord.Punto = 'M3'
AND Ord.Orden = Cla.Orden
AND Ord.Entrada >= TO_DATE('01-09-2005','DD-MM-YYYY HH24:MI:SS')
AND Ord.Entrada <= TO_DATE('02-10-2005','DD-MM-YYYY HH24:MI:SS')
GROUP BY Cla.Clave
) OrdCla,
GA_DESC_MAT DescMat,
GA_TABLE_MAT TableMat
WHERE DescMat.JABGNR = OrdCla.Clave
AND TableMat.Referencia_SAP = DescMat.JAKOMP
AND TableMat.Type_Mat LIKE '%P%'
GROUP BY OrdCla.Clave, TableMat.Referencia_SAP, TableMat.Ref_Cli
)
GROUP BY Referencia_SAP
UNION ALLselect referencia_sap, count(*) as cantidad FROM (select jabgnr, orden from ga_desc_mat, ordenesjit where (jakomp, orden) in ( select dm.jakomp, a.orden
from ga_desc_mat dm, ordenesjit A
where dm.jabgnr in (
select clave from clavesjit where orden=A.orden
and clave like 'L%'
and a.modelo = '1P1'
and a.entrada >= TO_DATE('02-09-2005','DD-MM-YYYY HH24:MI:SS')
and a.entrada <= TO_DATE('02-10-2005','DD-MM-YYYY HH24:MI:SS')
)
and (dm.jakomp like '197%')
)intersectselect jabgnr, orden from ga_desc_mat, ordenesjit where (jakomp, orden) in ( select dm.jakomp, a.orden
from ga_desc_mat dm, ordenesjit a
where dm.jabgnr in (
select clave from clavesjit where orden=A.orden
and clave like 'L%'
and a.modelo = '1P1'
and a.entrada >= TO_DATE('01-09-2005','DD-MM-YYYY HH24:MI:SS')
and a.entrada <= TO_DATE('02-10-2005','DD-MM-YYYY HH24:MI:SS')
)
and (dm.jakomp like '153%')
)order by orden, jabgnr),ga_table_matwhere poponr = jabgnr and type_mat like '%P%'group by jabgnr, referencia_sap "
Hay pocas empresas que utilizan Access como DB pura y dura para sus proyectos, por no decir que muy pocas trabajan en este entorno de programación, pero de las pocas existentes que utilizan este entorno de programación, ofrecen Aplicaciones, robustas, fiables y potentes.
Inconvenientes
Para bases de datos de gran calibre (en cuanto a volumen de datos o de usuarios) es recomendable usar otros sistemas como MySQL o Microsoft SQL Server, y código VBA (Visual Basic para Aplicaciones).
Entre sus mayores inconvenientes figuran que no es multiplataforma, pues sólo está disponible para sistemas operativos de Microsoft, y que no permite transacciones. Su uso es inadecuado para grandes proyectos de software que requieren tiempos de respuesta críticos o muchos accesos simultáneos a la base de datos.