¿Porqué no me funciona la división de una base de datos.

Tengo una aplicación Access 2007. Para entrar en la misma me solicita, a través de un formulario, usuario y contraseña (siguiendo uno de los ejemplos de Neckkito). Claro está que en una tabla tengo registrados los usuarios y contraseñas de todas aquellas personas que pueden acceder.

Hasta aquí bien, llevo dos años funcionando con ella.

Ahora varios compañeros necesitamos utilizarla más de uno y estamos en localizaciones distintas. Para poder hacerlo la he copiado en una carpeta del servidor que usamos. La he dividido y cuando pide usuario y contraseña los introduzco y pulso <<Aceptar>>, pero me devuelve el siguiente error:

Se ha producido el error 3219 en tiempo de ejecución. Operación no válida.

En las opciones que me ofrece pico <<Depurar>> con lo que me introduce en Visual Basic donde aparece en amarillo el siguiente renglón:

 Set rstControl = dbs.OpenRecordset("TControl", dbOpenTable).

Y entonces no me permite entrar en el menú principal de la aplicación. Solución:

  • No dividir.
  • Antes de esa línea le pongo un apóstrofe (').

La reinicio. Pero en esta ocasión el error que me presenta es 424 y me lo marca en Visual Basic, una vez detrás de otra en los siguientes renglones:

Set rstControl = dbs.OpenRecordset("TControl", dbOpenTable)

With rstControl
   .AddNew
   .Fields(0).Value = vUser
   .Fields(1).Value = Date
   .Fields(2).Value = Format(Now, "hh:mm:ss")
   .Update
End With

A los que he ido poniéndoles apóstrofes y sigue y sigue para dejarlo como si tuviese acceso libre.

Por favor, ¿alguno de vosotros, que no sois principiantes como yo, puede orientarme para solucionar este problema?.

2 respuestas

Respuesta
1

Prueba cambiando los dbOpenTable por dbOpenDynaset, a ver si así no te da errores.

También asegúrate de que la tabla TControl la tienes en cada front-end o si la tienes en el back-end la tienes correctamente vinculada.

Ya me dirás.

Un saludo.


Ya te lo dio cuando lo modifique y pruebe. Entonces te valor, ¿vale?.

No obstante, gracias.

Tengo que pedirte disculpas porque no se ha dividido en dos archivos. Back-End si aparece pero Front-End no sale.

¿Puede influir que tenga un formulario de acceso con clave para que no se divida bien?.

Gracias.

El front end debería ser el archivo original, ¿Lo comprobaste?

¡Gracias!.

Yo creo que si no tuviese los formularios, y su correspondiente código VBA, funcionaría.

Voy a probar y te comento. 

Dividir una base de datos lo que hace es separar las tablas a un archivo nuevo, eliminarlas del original y crear los vínculos al back-end (el archivo nuevo) en la Bd original ( que se convierte en el front-end)

Que tengas código VBA o un formulario de acceso, no influye ni en el proceso ni en el resultado.

Si tienes protegido el código con contraseña, te la pedirá antes de dividir.

Respuesta
1

Prueba con >>

Dim StrSQL As String

Dim Rst As DAO.Recordset ' Supongo que éste ya lo tienes

StrSQL = "SELECT * FROM TControl;"

Set Rst = CurrentDB.OpenRecordset(StrSQL,dbOPenDynaset)

Mis saludos >> Jacinto

¡Gracias!. Ya te diré como me ha ido.

Tengo que pedirte disculpas porque no se ha dividido en dos archivos. Back-End si aparece pero Front-End no sale.

¿Puede influir que tenga un formulario de acceso con clave para que no se divida bien?.

Gracias.

No necesariamente ha de aparecer "Front End".

Al dividir una BD, lo que si es normal es que al Nombre de la BD, le ponga el apodo _be, y el Front End se queda con el Nombre que tenía.

Mira en los dos Ficheros generados >> En el Front deben aparecerte las Tablas Vinculadas.

Si cambias de ubicación el BackEnd generado, evidentemente tendrás que revincular las Tablas desde el Front.

Por lo que observo el problema inicial por el que hiciste la pregunta ya lo tienes resuelto.

Sveinbjorn te dió una solución más corta y yo te sugerí el uso de una variable. Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas