Abrir archivos con Oledb

09/01/2009 - 14:17 por Enrique | Informe spam
hola,

Tengo un pequeño problema, lo que hago es conectarme a un archivo
excel mediante Oledb, si esa mini aplicacion que solo se conecta al
archivo y muestra una serie de datos, lo ejecuto mas de 20 veces me da
un error de que no se puede abrir el fichero! he cerrado la conexion
he hecho disposed y nada... se os ocurre algo?

Da igual hacerlo con un dataadapter un el command lo pongo en el
ejemplo.

resumen

Aplicacion que conecta a un proyect mediante oledb la instancion mas
de 20 veces da error


connectionString ="Provider=Microsoft.Project.OLEDB.11.0;Project
Name=NombreArchivo";

OleDbConnection conn = new OleDbConnection(connectionString);
OleDbCommand cmdSelect = new OleDbCommand("select",
conn);
OleDbDataAdapter data = new OleDbDataAdapter
(cmdSelect);
conn.Open();
cmdSelect.ExecuteNonQuery();
conn.Close();

Preguntas similare

Leer las respuestas

#1 SoftJaén
09/01/2009 - 14:52 | Informe spam
"Enrique" escribió:

Tengo un pequeño problema, lo que hago es conectarme a un archivo
excel mediante Oledb, si esa mini aplicacion que solo se conecta al
archivo y muestra una serie de datos, lo ejecuto mas de 20 veces me da
un error de que no se puede abrir el fichero! he cerrado la conexion
he hecho disposed y nada... se os ocurre algo?

Da igual hacerlo con un dataadapter un el command lo pongo en el



Hola, tocayo:

Nunca he utilizado el proveedor OleDb de Microsoft Project para conectarme
con un libro de trabajo de Excel, ya que siempre he utilizado el ISAM de
Excel que nos proporciona el motor de datos Microsoft Jet, por tanto,
desconozco por completo lo que te puede estar ocurriendo.

Si deseas utilizar el motor Jet, aquí tienes un ejemplo que muestra en un
control DataGridView los datos existentes en una supuesta Hoja1 de un libro
de Excel:

using System.Data.OleDb;

string connectionString "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=C:\\Mis documentos\\Libro1.xls;" +
"Extended Properties='Excel 8.0;HDR=Yes'";

using (OleDbConnection conn = new OleDbConnection(connectionString))
{
string sql = "select * from [Hoja1$]";
try
{
OleDbDataAdapter data = new OleDbDataAdapter(sql, conn);
DataTable dt = new DataTable("Hoja1");
data.Fill(dt);
dataGridView1.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Por muchas veces que ejecutes el código, no creo que obtengas el error que
nos estás comentando, al menos en circunstancias normales. :-)

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#2 Enrique
12/01/2009 - 09:49 | Informe spam
si tienes razon para excel con este provider va bien... el caso es que
para un Proyect... no puedo establecer mas de 20 conexiones ...
En esta pagina que he encontrado muy interesante vienen todos los
oledb:

http://www.carlprothman.net/Default.aspx?tabid‡#OLEDBProviderForMicrosoftProject

Te adjunto el código que da error, por si te pica la curiosidad.. solo
tienes que hacer un sencillo ejecutable y abrirlo mas de 20 veces...


string connectionString = provider + path;
connectionString=@"Provider=Microsoft.Project.OLEDB.
11.0;Project Name=c:\Archivo.mpp";
OleDbConnection conn = new OleDbConnection
(connectionString);
OleDbCommand cmdSelect = new OleDbCommand("SELECT
TaskName,TaskStart,TaskFinish, TaskOutlineLevel FROM Tasks", conn);
OleDbDataAdapter data = new OleDbDataAdapter
(cmdSelect);
conn.Open();
cmdSelect.ExecuteNonQuery();
conn.Close();

Tambien lo he intentado con ADODB y nada lo mismo... sera algo de
licencias...?

un saludo
Respuesta Responder a este mensaje
#3 SoftJaén
12/01/2009 - 10:52 | Informe spam
"Enrique" escribió:

si tienes razon para excel con este provider va bien... el caso es que
para un Proyect... no puedo establecer mas de 20 conexiones ...




Pues si funciona bien con el ISAM de Excel, ¿para qué complicarse la vida
con otro proveedor Ole Db? :-)

Te adjunto el código que da error, por si te pica la curiosidad.. solo
tienes que hacer un sencillo ejecutable y abrirlo mas de 20 veces...



Desde luego que no me va a "picar" la curiosidad. Son ya muchos años
trabajando con el ISAM de Excel del motor Microsoft Jet y hasta la fecha no
he tenido ningún tipo de problemas para traspasar datos desde Excel o hacia
Excel. Como dice el refrán, «más vale malo conocido que bueno por conocer».
:-)

Tambien lo he intentado con ADODB y nada lo mismo... sera algo de
licencias...?



Lo ignoro por completo.

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida