C sharp - DateRead Open

 
Vista:

DateRead Open

Publicado por Marvin Emilson Pineda (1 intervención) el 12/07/2008 06:56:09
Hola foro....

tengo un problema que he resuelto temporal mente... tengo en un formulario un DataGridView, utilizando un SqlDataAdapter, DataSet, BinderSource. el problema es que tengo un boton para actualizar la información... me explico, al hacer clic sobre el boton actualizar este deberia de forzar nuevamente el SqlDataAdapter (osea!!... volver a leer el origen de datos para actualizar la información en el DataGridView) el problema es que obtengo el siguiente error:

There is already an open DataReader associated with this Command which must be closed first.

dataAdapter.SelectCommand.ExecueteReader();
dataAdapter.Fill(dataSet, "<<Nombre de la tabla>>"); // aki brinca el error

no logro cerrar el DataReader y no se donde se abrio!!!!... lo que hice fue usar el Dispose al SqlDataAdapter y volver a instanciarlo alli todo trabaja bien.

estoy haciendo bien al resolverlo de esta manera o existe otra forma de hacerlo???

PD. ya aplique el MultipleActiveResultSets = true a la conexión a SQL y aun sigue mostrando el error

Saludos y de ante mano gracias por su ayuda...
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
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:DateRead Open

Publicado por Yamil Bracho (1164 intervenciones) el 17/07/2008 20:10:45
Tenemos una confusion aqui. Tienes dos maneras de acceder a los datos, una es usando un DataReader, que es un enfoque conectado y usando un DataSet que es un enfoque desconectado.
Veo que estas combinando los dos por lo tanto o usas el Reader o usas el DataSet. Veo mas facil que simplemente comentarices la llamada al ExecuteReader
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

RE:DateRead Open

Publicado por Marvin Emilson Pineda (19 intervenciones) el 17/07/2008 23:51:09
traducción!!!...

no entendi para nada lo que quieres decir

saludos
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

RE:DateRead Open

Publicado por Marvin Emilson Pineda (19 intervenciones) el 18/07/2008 00:36:37
Mira... no es que no te haya entendido si no que... no estoy usando un DataReader... en ningun momento lo uso... lo que uso es:

SqlDataAdapter
DataSet
BindingSource

SqlDataAdapter daProductos = new SqlDataAdapter(SqlCommand, Conexion);

// luego lleno el DataSet segun el SqlDataAdapter

daProductos.Fill(dsProductos);

// luego designo el dataset al dataSource del bindingsource
bsProductos.DataSource = dsProductos.Tables["Productos"];

// luego relaciono el DataGridView con el BindingSource
dgwProductos.DataSource = bsProductos

ahora!!!... tengo un boton para que el sistema vuelva a leer el origen de datos y vuelva a actualizar la informacion en el DataGridView... pero cuando vuelvo a llenar el DataSet brinca el error antes mencionado...

segun tu!!!... cual de estos objectos tengo que obiar para que funcione como yo kiero?

gracias por tu ayuda pero con tanto objecto que hace lo mismo es dificil decidirse
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

RE:DateRead Open

Publicado por Marvin Emilson Pineda (19 intervenciones) el 18/07/2008 03:41:58
Hola Yamil...

Gracias por tu ayuda y futuras ayudas, pero fijate que ya resolvi el problema... lo que hice fue implementar un SqlCommand y en el adaptador lo aplico asi:

SqlCommand comando = new SqlCommand("Select * From Productos", Conexion);

private void Productos_Load(object sender, EventArgs e)
{
// cuando carga el formulario
GetData()
}

private void btActualizar_Click(object sender, EventArgs e)
{
// boton para leer nuevamente el origen de datos y actualizar el DataGridView
GetData();
}

Private void GetData()
{
daProductos.SelectCommand = comando
daProductos.FillSchema(dsProductos, SchemaType.Source, "Productos");
daProductos.Fill(dsProductos, "Productos");
}

y ya no brinca el error y funciona bien.... Que opinas? o cual era tu sugerencia? todo buen consejo es bienbenido

Saludos,
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

RE:DateRead Open

Publicado por Marvin Emilson Pineda (19 intervenciones) el 18/07/2008 04:04:05
hey!!!... ya me esta cayendo el 20... mira como vengo de programar en VFP a C# es un salto muy pero muy grande....

acabo de hacer otra prueba y estoy viendo que no necesito volver a especificar nada al SqlDataAdapter para volver a leer la información del Origen de Datos en mi caso SQL Server 2005, ya que con solo aplicar nuevamente el Fill() del adaptador el vuelve a leer el origen de datos y actualizar la tabla y por default el DataGridView ya que esta enlazado atravez del BindingSource al dataset....

excelente....

gracias por todo... como digo siempre, solo es cuestion de hacer todas las pruebas necesarias para saber como funcionan las cosas...
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