Visual Basic - Problema con rutas de conexion a BD al realizar el instalador

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Problema con rutas de conexion a BD al realizar el instalador

Publicado por Dantoni (4 intervenciones) el 04/11/2014 16:10:05
Hola a todos!
Necesito ayuda para una aplicación que estoy creando.

Tengo que conectarme a BD access, asique en mi aplicación agrego dicha BD como origen de datos.
Posteriormente ejecuto varias funciones de busqueda y de acceso a la BD, poniendo como ruta o cadena de conexion lo siguiente:

Dim cadenaConexion As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Dantoni\Documents\Visual Studio 2013\Projects\Proyecto3\DataBase.accdb;Persist Security Info =False"

Esta Ruta sirve para probar la aplicación en mi ordenador. Sin embargo, al crear el instalador con InstallShield, ya estoy teniendo problemas.

El primero de ellos es que cuando voy a agregar los Archivos con el asistente de InstallShield(en el paso Application Files),donde tengo que buscar el Folder con la carpeta donde esta mi proyecto y añadirlo a "ProgramsFilesFolder", no se si tambien tengo que agregar mas cosas ahí dentro como "Files", es decir, la app de la BD, o la misma BD... En principio, en un videotutorial no lo vi hecho asique no lo hice

El segundo problema es que claro, ahora cuando instalo la aplicación en otro PC, me salta mensaje de error de que no encuentra la cadenaConexion que usé dentro de las funciones de busqueda de registros al crear el proyecto en mi PC, por lo cual no puedo acceder a la base de datos. ¿ Debo preveer la ruta de acceso que voy a tener en los futuros PCs donde utilice mi aplicación y ponerla aunque no exista en mi PC? Si fuera asi, no podria añadir la BD en "origenes de datos al principio"

¿Alguien podria echarme una mano de los pasos que debo seguir? me urge resolver este problema y no soy experto en esto MUCHAS GRACIAS POR SU TIEMPO. ESPERO HABERME EXPLICADO SUFICIENTEMENTE BIEN. UN SALUDO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de andres guerrero
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con rutas de conexion a BD al realizar el instalador

Publicado por andres guerrero (1798 intervenciones) el 04/11/2014 19:32:38
Hola como vas...e spero con esto poderte ayudar o darte una guia..
Cuando hice un sistema una vez paara diferentes maquinas lo que hize fue poner la ruta app.path ... eso quiere decir que busca la Base de datos en la misma ruta donde este el .exe .... para qeu funciona cuando la aplicacion se conecta en un solo server... o si la aplicacion esta en un servidor y se accede remotamente....


Luego podrias hacer unnidad logica en un servidor de aplicacion donde colocar la base .. y siempre apuntar a esa ruta logica

Ejemplo z:\Sistema\DB\

Y todos se conecten... pero para mi la mejor de todo es usar ADO ... y mediante un ODBC invocar donde este la ruta de la base...... Un abrazo y si necesitas un ejemplo de la ultima me avisas para enviarte....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con rutas de conexion a BD al realizar el instalador

Publicado por Dantoni (4 intervenciones) el 04/11/2014 19:51:36
Hola Andrés.
Lo primero es darte las gracias por responder e intentar ayudarme.
La verdad que no soy nada experto en esto, y no entiendo mucho de informatica. Te comento:

Yo cuando creo el instalador, se me crea un archivo llamado app.config, que contiene en su interior lo siguiente (literalmente):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="StandarTimeNewProduct.My.MySettings.DataBaseCMRTConnectionString"
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DataBase.accdb"
providerName="System.Data.OleDb" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

este archivo, se encuentra antes de ejecutar el instalador y posteriormente tambien, en la misma carpeta donde los archivos ".vb", ".vbproj" de los distintos formularios que uso, y la base de datos que utilizo.

Sin embargo en mi codigo cuando estoy programando las funciones yo no pongo exactamente "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DataBase.accdb"
providerName="System.Data.OleDb" , sino que en vez de |DataDirectory| escribo la ruta de acceso a la base de datos para que la encuentre.

Cuando creo el instalador e intento buscar esa base de datos me manda un mensaje de error diciendo que no encuentra la ruta "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Dantoni\Documents\Visual Studio 2013\Projects\Proyecto3\DataBase.accdb;Persist Security Info =False". Cosa que es obvio, ya que en otros PC no existe el usuario "Dantoni" ni la carpeta "Visual Studio 2013" por ejemplo. No se si me explico bien la verdad.

Por ultimo, a que te refieres con lo de utilizar ADO? Creo que no he trabajado con ello aun.

Estoy un poco liado si me pudieras mandar ejemplos te lo agradeceria.

Siento si mi mensaje se hace pesado.
Muchas gracias por tu ayuda de nuevo! :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Guerrero
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con rutas de conexion a BD al realizar el instalador

Publicado por Andres Guerrero (1798 intervenciones) el 04/11/2014 22:08:19
Vaya amigo ... punto a tu favor no lei que era visual studio .net y no 6.0 ... pero en todo caso vamos qeu quizas algo podriamos hacer.... mi codigo que te cuento es visual basic 6.0 entonces hay cosas que ya no se usan o son diferentes... en todo caso.... veremos que podriamos hacer :

Lo mejor seria que busques la manera de relacionar tu aplicacion con un ODBC .... en un ODBC tu configuras un puente entre la aplicacion y la base de datos a fin que sea esa la conexion ... podrias buscar algun video tutorial para que cambies la conexion (estoy seguro que casi no cambiaras nada de codigo)

Lo unico es que despues cada estacion deberas crear un ODBC... pero vamos qe eso no es trabajo lo puedes hacer facil o es mas te puedes crear un .exe que te lo haga ...... voy a tener que aprender .net vb para comenzar a contestar con bases.... espero mi intento de ayuda no te lie mas.... y te ayude a encontrar una solucion o al menos un paleativo a tu novedad.

Saludos
Andres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con rutas de conexion a BD al realizar el instalador

Publicado por Dantoni (4 intervenciones) el 06/11/2014 09:08:21
Hola Andres, ya encontré una solución que me sirvió para mi problema!
Estuve investigando algo sobre lo que me dijiste, porque no manejo bien ODBC la verdad.
Pero de pronto en youtube encontré un video que acabo con mis dudas.

Lo que tenia que hacer era en mi codigo, cuando llamo a las funciones Buscar, Mostrar Modificar, Agregar Registro...
No poner en |DataDirectory| la ruta de mi PC, sino poner lo que se llama una Ruta Universal.

Finalmente, la cadena de conexion a mi BD quedo de la siguiente manera:
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + My.Computer.FileSystem.CurrentDirectory + "\DataBaseDantoni.accdb"

Con Esta cadena, solo tengo que meter en la carpeta de los archivos del programa "obj>Debug" la base de datos con el mismo nombre que puse la cadena (DataBaseDantoni.accdb). (ESTO CREO QUE ES IMPRESCINDIBLE TAMBIEN)

De esta manera, ejecute donde ejecute el programa o la aplicación, siembre va a buscar la BD dentro de esta carpeta.

Espero que le sirva a la gente que tenga la misma duda que yo, y a ti tambien Andres.
Muchas gracias por tu ayuda.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar