PDA

Ver la Versión Completa : Entorno Delphi 7 + MS-Access + ADO (y/o ADOX)


hgiacobone
14-04-2005, 22:39:38
Hola amigos,
He vuelto y con mas dudas que antes... mmm, eso es un gran problema, no?
Vayamos al grano, pero les advierto que viene largo...

Estoy tratando de realizar un sistemita que opera (en una LAN) con una base Access, accedida desde Delphi a traves de los componentes ADO que trae el mismo. Hasta aquí todo parece normal.
Por cuestiones de requerimiento, hay que establecer cierta seguridad y controlar el acceso de usuarios.

Como todos saben, podemos adicionar (con ADOX o el mismísimo MS-Access) una seguridad para la sesión, que por default viene dada por el usuario Admin con clave en blanco.
Más aun, en teoría podemos crear y administrar Grupos/Usuarios con diferentes niveles de acceso y hasta podemos incluir una protección sobre el archivo MDB para su apertura. Aquí empezamos a trabajar con un nuevo archivo de seguridad que lleva la extensión MDW, creado por el Wrkgadm.exe o desde dentro del MS-Access.


Por comodidad y para no re-compilar el ejecutable en cada cambio, la cadena de conexión del TADOConection la tomo desde un archivo externo, el famoso archivito UDL (para el que no sabe, creen un archivo de texto, cambien la extensión a UDL y hagan doble clic... Voilá!) en el cual tengo seteada dicha conexión.

La cosa es que para utilizar el archivo de trabajo/seguridad MDW, desde MS-Access hay que "Unirse" al que hemos creado para poder abrir la tabla y el MS-Access queda seteado apuntando hacia allí. Para regresarlo a su estado anterior, hay que volver a unirse al archivo por defecto (\Documents and setings\[USUARIO]\Microsoft\Access\System.mdw) y ello cansa.
Otra cosa que se puede hacer es cambiar en el Regsitro el valor HKey_LocalMachine\Software\Office\[8.0 ; 9.0 ; 11.0]\Access\Jet\[3.5 ; 4.0]\Engines\SystemDB por el path correcto.

La cuestión es que si el motor Jet tiene configurado el path hacie el archivo por defecto (o sea System.mdw) desde mi archivo UDL no puedo abrir la base.
Cuando se hace la cadena desde el BDE -sin usar ADO-, se pueden completar (entre otros necesarios) los parámetros:
DATABASE NAME=C:\DATA\Pirulo.MDB
SYSTEM DATABASE=C:\DATA\Pirulo.MDW

En los archivos UDL, hay un valor llamado "JetOLEDB:System Database" que aunque le ponga la ubicación del archivo MDW sigue sin funcionar.

La pregunta del millón: ¿Alguien sabe cómo resolver esto?