Visual Basic / Como hacer para abrir base de datos en acces en todas las PCs?
Mi problema es que al hacer un programa donde se utiliza una base de datos Acces, la termino normalmente y la abre como debe de ser, pero al abrirla en otra computadora me aparece "no es una ruta de acceso valida, asegurese que la ruta esta escrita correctamente y que esta conectado al servidor donde se encuentra el archivo" y al revisarlo, todo esta como deberia de estar, en su lugar.
Cual es el problema? URGENTE! Muchas gracias de antemano
Comments
no entiendo bien tu pregunta pero te contestare 2 posibles casos en los cuales te puedes encontrar
caso 1 ) hiciste un programa, y cuando lo ejecutas en visual basic, corre bien, despues ese mismo programa lo ejecutas en otras pcs que no tienen instalado (o tal ves si) visual basic, y te marca error de que no encuentra la base. Para este caso te recomiendo que desde el inicio en que empiezas a crear tu aplicacion dispongas un lugar donde debera de estar tu base, por ejemplo, c:\Miprograma\Mibase.mdf, De este modo cuando creas la cadena de conexion, ya sabes que no importa en que pc se ejecute tu aplicacion, siempre estara alli tu base, ahora cuando crees el ejecutable, manda que sea "c:\Miprograma\" el lugar predestinado para instalarse tu aplicacion.
Caso 2) hiciste un programa donde a 1 sola base, se deveran de conectar diferentes maquinas, con el mismo programa, en este caso te recomiendo que hagas un mapeo, ¿que como se hace? muy facil, pon tu base por ejemplo en c:\MiPrograma\Mibase.mdf, despues entras a mi pc, en la barra de menu en herramientas, conecntar a unidad de red, elijes una letra para la unidad, por ejemplo la z, y buscas en examinar la carpeta que compartiras, (obviamente la tuviste que compartir primero dandole clic derecho a la carpeta, y donde dice seguriad y compartir) con esto haras que tu base siempre se encuentre en z:\Mibase.mdf, sin importar de que maquina se intente abrir, y evitaras lo molesto de "no encontrar la ruta de la base".
Espero haberte ayudado, cualquier duda, puedes escribirme
strBase = App.course & "datos.mdb" strClave = "iupsmarg2008" BD.Open "provider=Microsoft.Jet.OLEDB.4.0;documents source = " & strBase & ";" & " Jet OLEDB:Database Password=" & strClave solo debes colocar l. a. direccion de tu base de datos en strBase y l. a. clave en strClave... esto es mediante ADO, por código.
Es normal que pase eso, dado que la ruta que estableciste para la apertura de la Db esta en otra PC, ahora crear mapeos de unidades es valido, pero a mi punto de vista seria mejor que accedieras a ella por medio de un (ODBC), en este configuras el acceso a tu DB y desde tu programa solo direccionas a este DSN. y para todas a quellas maquinas en las que quieras abrir tu DB solo cargas el ODBC (DSN) y listo.
El ODBC lo creas desde panel de control - Herramientas administrativas - ODBC
y si lo quieres seguir haciendo por cadena de conexion este seria el codigo:
DB.ConnectionString = "Provider=microsoft.jet.oledb.4.0;" & _
"Data Source= " \\Servicor\RecursoCompartido\ " & App.Path & "\nombre_base_de_datos.mdb" & ";"
Hola:
A pesar que no te lo mereces, porque no veo que participes en este programa ayudando con tus conocimientos, lo mismo te voy a dar una mano.
Para que eso que vos queres funcione, tenes que compartir el lugar donde esta la base de datos como una unidad de red (que no esteen la carpeta donde esta el programa en una pc, sino en la raiz de una unidad compartida, por ejemplo \Mibase.mdb
Una vez que ya llevastes la base de datos a ese lugar, pones compartir y te pedira un nombre de red, y pones acceso total sin contraseña, para no complicar la cosa.
Luego, cuando estableces el path de conexion, lo cual lo podes hacer desde un formulario con un control adodc (lo colocas en el formulario solo para tener el string de conexion) te vas a ese control con el boton derecho, propiedades y lo abris y seteas usaar cadena de conexion, apretas generar, y completas los datos pedidos, si es una base 2000 o 2002 sera microsoft jet olebd 4.0... luego (incluso desde la Pc que tiene la base de datos y que hara de servidor) ubicas la base de datos desde conexiones de red [esto se hace para que la pc de origen no bloquee el acceso a la base cuando la esta usando, sino que comparta recursos con las otras en el mismo nivel] y con ese string abris tu conexion en tu codigo donde se abre la conexion
cn.Open "String de conexion y tu tia"
Listo, ya tenes la base en red.
Otra forma, para no tener encendida la pc de origen del programa, es conseguirse una 486 con una placa de red, y un disco duro no muy chico( 2gb mas o menos), y con windows 95 conectarla a la red como servidor de la base de datos, cosa de que una vez que arranque, no necesita monitor ni teclado ni mouse, queda como servidor, consumiendo mucho menos que una pc completa. entonces cualquier pc que entre en la red con el mismo grupo de trabajo y similares direcciones ip y mascara de subred, se conectan a esta sin problemas.
Bueno con esto tenes que solucionar tu problema, vos veras que es lo que te conviene en caso de tener que instalarlo o si es solo una prueba para ver como hacerlo. Ahhh, y ayuda a otros con sus dudas si queres ser ayudado con las tuyas, es parte de vivir en sociedad...
Dios te bendiga
Saludos
Antonio
Logicamente en la pc donde hiciste el programa estaba la base de datos, si la dejas en una carpeta no estandar (tu carpeta, el escritorio, etc) logicamente no te va a servir en otra pc, la conexion se hace mediante la busqueda la la Base de datos
C:\Documents and Settings\Usuario1\Escritorio\Base.mdb , al buscar este path en otra pc lo buscaria: C:\Documents and Settings\USUARIO2\Escritorio\Base.mdb, esto no coincide, te recomiendes que a la conexion ubiques la base de datos en una ubicacion estandar, es decir q todas las pc las traigan (C:\Windows), (C:\Windows\System32), (C:\) asi te aseguras que te va a funcionar donde sea q la pongas
salu2
Me imagino que las demás máquinas no tienen acceso al servidor de la base de datos...
No se hacerlo en access, pero para SQLServer tienesque saber el nombre de servidor o IP de la máquina que va a servir como servidor (claro que no debe estar cambiando porque sino hay que hacer más configuración) y que dentro de la red en la que esten conectados se tenga acceso ya sea porque es una LAN o una WAN pero bien administrada.
Luego tienes que declararle (y repito que es para SQL) un 'alias' dentro de las herramientas administrativas de SQL de las máquinas que van a usar la base de datos. Esto es precisamente para decirle que existe un servidor con X IP y que tiene abierto el puerto Y para permitir el acceso a la base de datos.
Pero de comienzo, primero ver si cuando ya tengas dado de alta tu servidor (por IIS <<Internet Information Server>>) haces ping en todas las maquinas para saber si ya tienen acceso, aunque todavia no para la base de datos.
No soy administrador de redes, pero mas o menos esa es la causa.
Si ya lo hiciste todo lo anterior, simplmente puede ser que esten mal los puertos, o el nombre de login para la base de datos no tiene acceso... Pueden ser varias razones, pero ya no serían por causas de redes