Migración Access

Buenos días, Tengo que realizar una migración de una Base de Datos de Access 97 a Access 2000 y me gustaría que me indicaseis si existe algún problema al realizar esta migración. Mediante las utilidades de la Base de Datos puedo realizar esta operación pero desconozco si tengo que realizar algún otro cambio por posibles incompatibilidades. Tengo una base de datos que debe tener alguna macro errónea que hace que cada vez que intente abrir la BBDD me salga un mensaje de error de argumento no válido. Intento abrir la BBDD presionando las mayúsculas para evitar que se ejecute la macro como indica la ayuda al respecto, pero me sigue apareciendo el mensaje, ¿sabéis cómo puede resoloverse? Gracias por anticipado y un saludo
3

3 respuestas

Respuesta
1
Antes que nada prueba a pulsar F11 (traer la ventana base de datos) después del error de argumento no válido.
Con un módulo cualquiera abierto deberías comprobar también si falta alguna referencia a bibliotecas de tipo.
Independientemente de que uses la opción de convertir a la versión actual, que si te dará errores, por ejemplo: si haces llamadas a vínculos dinámicos que no existen o a procedimientos que han cambiado de nombre, mi consejo es que crees una base de datos en blanco y procedas a importar los objetos de la base de datos original poco a poco, hasta que consigas depurar y aislar los errores que te vayan surgiendo.
Revisa también las opciones de Inicio en la base de datos original, o si se trata de una macro autoexec, anularla para poder modificarla.
Antes de nada, muchas gracias por atender mi pregunta.
He intentado traer la ventana de base de datos con F11 pero no ocurre nada. Yo supongo que se trata de una macro de autoexec pero no sé como poder eliminarla o modificarla sin tener acceso a la base de datos.
Gracias de nuevo
Si tienes acceso a la versión 97 de la base de datos deberías hacer una copia de la misma
Y modificar el inicio o eliminar esa autoexec. Aun así, existe la opción de que crees una macro que se llame autoexec en una BBDD cualquiera con una Acción digamos nula, del tipo bip, y que Exportes la macro a la base de datos en cuestión ya convertida, cuando te pregunte si deseas sobreescribir la macro existente, le dices que si, con lo cual ya la hemos anulado. De todas formas, pienso que el error te viene por algún formulario que tienes puesto en el Inicio y que ejecuta alguna macro.
He creado la macro que me has propuesto y por lo que parece se debe producir por la segunda opción que comentas, cómo puedo modificar el inicio de esa base de datos. El error este me aparece también cuando intento abrir la BBDD con Access 97, no es un problema puntual de la migración.
Muchas gracias y un saludo
Para poder modificar las opciones de inicio de la BBDD hay que ir al menú Herramientas>Inicio. Si no puedes acceder a la ventana base de datos no podrás modificar estas opciones, por lo que te sugiero lo siguiente:
1º Si dispones de la version de access 97, crea una base de datos en blanco, y desde esta selecciona del menú: Obtener datos externos>Importar para de esta forma acceder a los objetos de la BBDD, importa todos ellos y en la base nueva modifica y pon las opciones de Inicio que necesites.
2º Una forma de forzar a la BBDD original a que nos muestre la ventana base de datos a pesar de todo, seria incluir en esa macro Autoexec que le vamos a Exportar, ya no una acción nula, sino una acción del tipo SeleccionarObjeto, con el Argumento Tipo de objeto: el nombre de alguno de ellos que conozcamos, Nombre del objeto: uno que conozcamos (por la vía de importar podemos saber el nombre de todos los objetos contenidos en la BBDD), y finalmente, en el Argumento En ventana base de datos: Si.
Perdona por todas las molestias que te este ocasionando.
Cuando quiero realizar la importación de la BBDD que me da el problema ni tan siquiera puedo ver los objetos de los que consta porque antes me da el mensaje de error que te he comentado anteriormente por lo que para forzar que me abra un objeto con el AutoExec, me es imposible ya que desconozco el nombre de ningún objeto de la base de datos.
Siento ser tan pesado pero no sé quien narices habrá diseñado esta BBDD para que se produzcan tantos problemas.
No te preocupes, no es molestia. Quizá yo doy por sentado algunas cosillas. Bien, no necesitamos saber el nombre de ningún objeto de esa base de datos, primero vamos a hacer un formulario en blanco e independiente y lo Exportamos del mismo modo que la macro. En nuestra macro AutoExec le pasamos en argumentos el nombre del formulario que acabamos de Exportar. Exportamos la macro y abrimos la base de datos a ver que sucede.
Si continua resistiendo y no tienes inconveniente, puedes meter esa base de datos en una archivo zip, rar, arj... etc. (es preferible que este comprimida) y mandármela a [email protected] como archivo adjunto.
Muchas gracias por todo compañero, comprenderás que no me este permitido enviar la BBDD pero agradezco enormemente el interés que has mostrado.
Gracias de nuevo y un saludo.
Respuesta
1
El hecho de convertir una mdb del 97 al 2000 no tiene 'en principio' que suponer ningún problema, salvo en los casos en que estemos utilizando llamadas a las APIs de Windows desde nuestros módulos, o que estemos utilizando OCX y estás APIs o estos contorles sean incompatibles con la versión 2000.
Si es esto lo único que tendremos que hacer es cambiarlos por las funciones o controles compatibles.
Si quieres puedo echarle un vistazo y comentarte donde falla.
Muchas gracias query, en un principio las base de datos no tienen llamadas a APIs de Windows, de todas formas si me encuentro en esta situación, me pondré en contacto contigo.
Un saludo
Respuesta
1
La reconversión de Access'97 a Access'2000 no debería darte ningún tipo de problema.. y en todo caso Access 2000 te informaría de ello...
En cuanto a la macro de inicio verifica que la macro llamada Autoexec (si es que la tienes) funcione correctamente..
Esta macro con este nombre específico (no puede ser otro) se ejecuta al abrir la base de datos.
Para abrir la base de datos sin abrir la macro autoexec, ni el formulario especificado en Herramientas - Inicio debes mantener presionada la tecla Shift (la de la flecha) no el bloqueo de mayúsculas... aunque es posible que tu base de datos esté configurada para hacer caso omiso de la tecla shift, en cuyo caso deberías ejecutar el siguiente código:
Dim dbs As Database
Set dbs = CurrentDb
On Error Resume Next
dbs.Properties("AllowBypassKey") = True
If Err Then
dbs.Properties.Append dbs.CreateProperty("AllowByPassKey", dbBoolean, True)
End If
Indica el valor True para especificar que haga caso de la tecla Shift... False para que haga caso omiso...
Saludos..
Jordi Pérez i Madern
Mataró (Barcelona)
¿Perdona pero cómo puedo ejecutar ese código?
Es muy sencillo...
En la pestaña Módulos agrega uno nuevo y le llamas por ejemplo mdlOpcionesInicio creas una nueva función con el nombre fncOpcionesInicio y agregas el código que te he pasado..
El código quedaría como sigue..
function fncOpcionesInicio()
Dim dbs As Database
Set dbs = CurrentDb
On Error Resume Next
dbs.Properties("AllowBypassKey") = True
If Err Then
dbs.Properties.Append dbs.CreateProperty("AllowByPassKey", dbBoolean, True)
End If
End Function
Para ejecutar esta función únicamente debes acceder al módulo, situarte dentro de la función y presionar F8
Saludos.
Jordi Pérez i Madern
Mataró (Barcelona)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas