Foros del Web » Programación para mayores de 30 ;) » .NET »

Como actualizar datagrid a la par de la base de datos

Estas en el tema de Como actualizar datagrid a la par de la base de datos en el foro de .NET en Foros del Web. Hola !! Estoy desarrollando una aplicacion en c# y el datagrid no se actualiza con la base de datos y no se a que puede ...
  #1 (permalink)  
Antiguo 22/05/2009, 08:49
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Como actualizar datagrid a la par de la base de datos

Hola !!

Estoy desarrollando una aplicacion en c# y el datagrid no se actualiza con la base de datos y no se a que puede ser debido.Ayuda por favor!!!!
Este es el codigo:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data;
using MySql.Data.MySqlClient;

namespace Mecanizado
{
public partial class Form1 : Form
{
private DataSet bdl;//DataSet de datos
private DataTable tabla;//Tabla que almacena datos
private MySqlDataAdapter adaptador;//Objeto que sirve para comunicar al dataset con el DBMS
private MySqlConnection conn;//Objeto que realiza la conexion con el DBMS
private MySqlCommand cmd;//Objeto para la ejecucion de sentencias SQ


public Form1()
{
InitializeComponent();
}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
try
{
bdl = new DataSet("singularity");
tabla = new DataTable("eventrecord");
conn = new MySqlConnection("Database=singularity;Data Source=localhost;User Id=root;Password=825200");
cmd = new MySqlCommand("Sentencia SQL", conn);
adaptador = new MySqlDataAdapter(cmd);
}

catch (MySqlException ex)

{
MessageBox.Show(ex.Message, "Error al intentar conectarse", MessageBoxButtons.OK, MessageBoxIcon.Error);
}


}

private void Conexion_Click(object sender, EventArgs e)
{
conn.Open();//Abre la conexion
cmd.CommandText = "SELECT tagId FROM eventrecord WHERE readerid='mecanizado'";//Al objeto cmd le asignamos una sentencia SQL
adaptador.Fill(tabla);//El objeto adaptador llena nuestra tabla con la instruccion declarada arriba
bdl.Tables.Add(tabla);//Se agrega la tabla al DataSet
dataGridView1.DataSource = bdl.Tables["eventrecord"];//Se le indica al DataGridView que use los datos almacenados en el DataSet
conn.Close();//Cierra la conexion

}

private void Form1_Load(object sender, EventArgs e)
{
bdl = new DataSet("singularity");
tabla = new DataTable("eventrecord");
conn = new MySqlConnection("Database=singularity;Data Source=localhost;User Id=root;Password=825200");
cmd = new MySqlCommand("Sentencia SQL", conn);
adaptador = new MySqlDataAdapter(cmd);
}
}
}
  #2 (permalink)  
Antiguo 22/05/2009, 09:14
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Como actualizar datagrid a la par de la base de datos

lo q no entiendo porq q te conectas en un evento de la grilla y porq no tratas de organizar primeramente tratando de realizar tu codigo lo mas limpio posible lo que trato de decir es que parametrizes bien las cosas sobre lo q estas programando trata de usar en lo posible con trabajar en capas para poder simplificar mas el codigo y ser un poco mas ordenado.

Bueno en cuanto a tu pregunta no veo porq piensas ejecutar ese codigo al hacer click en la grilla

Primero:
para ejecutar primeramente un MySqlCommand usa el ExecuteNonQuery(); y no el Adaptador.

Segundo:
no se q tratas de hacer al ejecutar el comando al hacer click o estas tratando q al editar la grilla se actualize la base de datos si es asi entonces ese codigo debe ir luego q la celda ha sido editada en el evento CellEndEdit
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 22/05/2009, 09:32
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Como actualizar datagrid a la par de la base de datos

Perdona Dradi7 por el desorden pero soy nuevo en estas cosas y bueno aun tengo que aprender jaja... A ver lo que pasa es que pulso el boton para que saque los datos de de la BD y si vuelvo a pulsar el boton me dice "datatable ya pertenece a dataset" y no se pq y necesito alguna solucion
  #4 (permalink)  
Antiguo 22/05/2009, 09:49
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Como actualizar datagrid a la par de la base de datos

Primero lo q sucede es q al momento de conectarte ya has creado el DataSet asignandole por defecto un Nombre lo mismo sucede para el DataTable el Adaptador y los otros objetos.

Segundo como ese DataSet tiene un Nombre ya creado digamos "Prueba" no puedes agregar otra ves "Prueba" al DataSet porq ya existe y eso es lo q te genera ese error.

Tercero si lo quieres es actualizar el dataset y se vea reflejada en la base de datos
entonces trata con esto

bdl.AceptChanges();
adaptador.update(bdl,"singularity");

datagridview1.refresh(); o si no
datagridview1.datasource = bdl.Tables["singularity"];
datagridview1.update();
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #5 (permalink)  
Antiguo 22/05/2009, 10:30
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Como actualizar datagrid a la par de la base de datos

Gracias por ayudarme pero me pide una libreria para bdl.AceptChanges(); .lo que hice fui sustituir en el codigo mio esto:

bdl.Tables.Add(tabla);//Se agrega la tabla al DataSet
dataGridView1.DataSource = bdl.Tables["eventrecord"];//Se le indica al DataGridView que use los datos almacenados en el DataSet
conn.Close();//Cierra la conexion

POR:

conn.Open();//Abre la conexion
cmd.CommandText = "SELECT tagId FROM eventrecord WHERE readerid='mecanizado'";
adaptador.Fill(tabla);
bdl.AceptChanges();
adaptador.Update(bdl, "singularity");
dataGridView1.Refresh();
conn.Close();//Cierra la conexion
  #6 (permalink)  
Antiguo 22/05/2009, 10:34
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Como actualizar datagrid a la par de la base de datos

perdon creo q era AcceptChanges() prueba con eso si es q funciona y trata de importar el
System.Data

Ojo

Antes te mencione q estabas realizando una doble insercion del DataTabe al Adaptador trata de separar el codigo del llenado por primera vez y el codigo de la actualizacion

podrias ser lo siguiente
Código C#:
Ver original
  1. conn.Open();//Abre la conexion
  2. if(bdl.Tables.count == 0)
  3. {
  4.      cmd.CommandText = "SELECT tagId FROM eventrecord WHERE readerid='mecanizado'";
  5.      adaptador.Fill(tabla);
  6.      bdl.Tables.Add(tabla);
  7. }
  8. else
  9. {
  10.      bdl.AcceptChanges();
  11.      adaptador.Update(bdl, "singularity");
  12. }
  13. dataGridView1.DataSource = bdl.Tables["eventrecord"];
  14. dataGridView1.Update();
  15. conn.Close();//Cierra la conexion
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones

Última edición por Dradi7; 22/05/2009 a las 12:15
  #7 (permalink)  
Antiguo 22/05/2009, 10:44
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Como actualizar datagrid a la par de la base de datos

Si, era AcceptChanges();

He escrito esto esto

conn.Open();//Abre la conexion
cmd.CommandText = "SELECT tagId FROM eventrecord WHERE readerid='mecanizado'";//Al objeto cmd le asignamos una sentencia SQL
adaptador.Fill(tabla);//El objeto adaptador llena nuestra tabla con la instruccion declarada arriba
bdl.AcceptChanges();
adaptador.Update(bdl, "singularity");
dataGridView1.Refresh(); //Se le indica al DataGridView que use los datos almacenados en el DataSet
conn.Close();//Cierra la conexion


Pero me da este error "Update no puede encontrar TableMapping['singularity'] o DataTable 'singularity' "
  #8 (permalink)  
Antiguo 22/05/2009, 10:50
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Como actualizar datagrid a la par de la base de datos

Cita:
Iniciado por Dradi7 Ver Mensaje
perdon creo q era AcceptChanges() prueba con eso si es q funciona y trata de importar el
System.Data

Ojo

Antes te mencione q estabas realizando una doble insercion del DataTabe al Adaptador trata de separar el codigo del llenado por primera vez y el codigo de la actualizacion

podrias ser lo siguiente
Código C#:
Ver original
  1. conn.Open();//Abre la conexion
  2. if(bdl.Tables.count = 0)
  3. {
  4.      cmd.CommandText = "SELECT tagId FROM eventrecord WHERE readerid='mecanizado'";
  5.      adaptador.Fill(tabla);
  6.      bdl.Tables.Add(tabla);
  7. }
  8. else
  9. {
  10.      bdl.AcceptChanges();
  11.      adaptador.Update(bdl, "singularity");
  12. }
  13. dataGridView1.DataSource = bdl.Tables["eventrecord"];
  14. dataGridView1.Update();
  15. conn.Close();//Cierra la conexion
Cambia "singularity" por "eventrecord" y trata de poner el codigo q esta aqui
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #9 (permalink)  
Antiguo 22/05/2009, 10:52
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Como actualizar datagrid a la par de la base de datos

Perdona no habia visto el codigo que me enviaste solo lo de cambiar el Accept . Estoy probando lo que me has escrito.
  #10 (permalink)  
Antiguo 22/05/2009, 10:57
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Como actualizar datagrid a la par de la base de datos

Dradis7 me da un error en el "count = 0" me dice que falta una referencia de ensamblado . Creo que a veces te hago preguntas algo absurdas pero como ya te he dicho al ser nuevo en esto...
  #11 (permalink)  
Antiguo 22/05/2009, 12:16
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Como actualizar datagrid a la par de la base de datos

Ojo en C# es ==
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #12 (permalink)  
Antiguo 23/05/2009, 04:01
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Como actualizar datagrid a la par de la base de datos

Hoy por la mañana probe si funcionaba el programa con los cambios que me dijiste y funciona genial !!! Muchas gracias por tu ayuda y paciencia. Ahora empezare a mirar mas cosas de C# pq creo que es algo muy interesante. Nos vemos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:01.