Error al añadir archivos al proyecto[SOLUCIONADO]

Iniciado por novalida, 3 Abril 2010, 17:34 PM

0 Miembros y 1 Visitante están viendo este tema.

novalida

Hola!!!
He realizado un pequeño proyecto que usa un archivo de Access para cargar las tablas que utiliza, empleando el siguiente comando para establecer la conexión:


Private oConexion As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data source=Resources\BD_Diseño.mdb")


Cuando ejecuto el programa desde Visual Studio 2005 Express no hay ningún problema, pero cuando genero la publicación y luego la instalo, al intentar abrir las opciones en las que cargaría datos se produce el siguiente error:



He agregado el archivo Access como recurso del proyecto, pero el error persiste y ya no sé qué hacer :(

Si alguien me puede dar unas pautas sobre cómo agregar el archivo de base de datos al proyecto o cómo poder utilizarlo se lo agradecería muchísimo, ya que no tengo mucha experiencia en estos temas :)

Esperando respuesta os doy las gracias por la posible ayuda :)

43H4FH44H45H4CH49H56H45H

#1
Ahi la ruta del *.mdb es lo que falla, no esta bien que lo agregues como recurso, lo mejor es que se encuentre en la misma carpeta donde se instala tu programa, asi en source puedes hacer:
Código (csharp) [Seleccionar]
(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=db.accdb;Persist Security Info=False")
en mi caso utilizo acces 2007, pero es similar para tu proyecto.
En otro caso le das la ruta completa al generarlo, u otra forma podria ser que si no encuentra el *.mdb abra un openFileDialog y de la opcion de abrir la ruta del *.mdb y guardarla con savesetting, para que cuando cargue de nuevo el programa ya tenga donde encontrar dicho archivo aunque sea una ruta variable.

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W

novalida

Hola!
Gracias por la respuesta, pero no he conseguido hacer que mi aplicación, una vez publicada logre funcionar correctamente.
A continuación os expongo la situación actual y las opciones que incluyo,por si alguien me puede ayudar :)

La aplicación consiste en una serie de formularios en los que se realizan consultas a las tablas del archivo Access mediante código, y un formualrio que incluye un control BindingNavigator realizado mediante el diseñador de Visual Studio.
He probado incluir el archivo de base de datos  de dos maneras distintas, logrando que me funcione o la parte de consulta de código o la del control BindingNavigator, pero no todos los formularios :(
Si incluyo el archivo de esta manera



consigo que funcionen los formularios de consulta basados en código, pero no el del control BindingNavigator, que me da el error en tiempo de ejecución que mostré en el primer mensaje.
Si incluyo el archivo de esta otra manera



ocurre lo contrario, que el formualrio del control  BindingNavigator funciona perfectamente pero no así los formularios de de consultas basadas en código, que me dan el error incialmente señalado de no encontrar el archivo :(

Le he dado un montón de vueltas y he íntentado buscar la solución y sé quizás sea algo sencillo, pero dado que estoy aprendiendo y llevo poquito tiempo no consigo dar con una salida al problema que tengo :(

Alguien me puede ayudar, por favor?????

Un saludo y gracias de antemano :)

43H4FH44H45H4CH49H56H45H

Seguro haces la conexión mediante el asistente, bastaria con cambiar esto:

Código (xml) [Seleccionar]
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="WindowsFormsApplication1.Properties.Settings.dbConnectionString"
            connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\db.accdb"
            providerName="System.Data.OleDb" />
    </connectionStrings>
</configuration>


por esto:

Código (xml) [Seleccionar]
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="WindowsFormsApplication1.Properties.Settings.dbConnectionString"
            connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=db.accdb"
            providerName="System.Data.OleDb" />
    </connectionStrings>
</configuration>


en el app.config
y asi funcionaria siempre que tenga el *.mdb en la misma carpeta del programa, si no te funciona prueba en un proyecto nuevo y con un *.mdb que tenga un par de tablas y datos y prueba nuevamente.
Lo que menciono lo probe en este momento y funciona bien.

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W

lordram

Por algún motivo no logro leer el error que te da. De todos modos, una cosa a comprobar en estos casos es que estás compilando para x86 y no para x86_64, porque, al menos hasta donde yo sé, no existe versión del conector de Access para 64 bits.

Podría darse el caso de que en VS compilaras para 32bits pero generaras el release para 64.

novalida

Hola!!!
43H4FH44H45H4CH, muchas gracias por tu respuesta:) , al final me ha funcionado editando el app.config como tú decías y por ahora va de maravilla.
Paso el mensaje a solucionado, pero me gustaría saber a qué se debe realizar ese cambio cambio en dicho archivo.
Las consultas a las tablas del archivo.mdb las realizo medinate código, excepto en el formulario del control BindingNavigator, que sí que utilicé el asistente para la conexión.

Lordram, mcuhas gracias por tu respuesta también :)

Un saludo y gracias

43H4FH44H45H4CH49H56H45H

Si hicieras todas las conexiones por codigo, no necesitarias un app.config, al usar el asistente este debe guardar la cadena de conexión en este archivo (por eso debes editarlo si usas dicho asistente), pero si tienes varios formularios y en cada uno necesitas hacer las conexiones, es mejor utilizar un app.config y asi si haces alguna modificación solo lo haces en dicho archivo.
En este enlace se explica mas detalladamente:

app.config

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W

novalida

Hola!
43H4FH44H45H4CH49H56H45H, gracias por responder tan rápido. Hubiera escrito ayer pero tuve problemas con el router y no pude hacer anda :(
Me quedo con el enlace que está muy interesante :)
Desde luego que no hay día que no se agradezca aprender algo nuevo :)

Un saludo