C sharp - Actualizar sql desde DataGrid - Programación por capas

 
Vista:
Imágen de perfil de Jose Fdo

Actualizar sql desde DataGrid - Programación por capas

Publicado por Jose Fdo (10 intervenciones) el 12/03/2016 15:28:55
Saludos.
Estoy trabajando con capas, Datos, Negocio y Presentación, en mi capa de presentación tengo un datagridView el cual me trae los datos de la base de datos sin problema, pero requiero realizar cambios dentro del datagrid y enviar la actualización a la base de datos, lo estoy haciendo de la siguiente forma, pero no logro controlar bien, necesitaria alguna ayuda de ustedes.

CAPA DE DATOS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Método para Actualizar
public bool Actualizar(string consulta)
{
	Conex();
	ConexBD.Open();
	comando = new SqlCommand(consulta, ConexBD);
	int i = comando.ExecuteNonQuery();
	ConexBD.Close();
	if (i > 0)
	{
		return true;
	}
	else
	{
		return false;
	}
}

CAPA DE NEGOCIO:
1
2
3
4
5
6
7
8
9
public void ActualizarAreaAnaDataGrid(string VALOR,string NOMBRE)
{
	for(int i=0;i<= VALOR.Count(); i++)
	{
		//CRUD.comando = new SqlCommand("UPDATE AreaAn SET Aa_Estado = @VALOR WHERE Aa_Nombre = @NOMBRE");
		Consulta = "UPDATE AreaAn SET Aa_Estado =" + VALOR + " WHERE Aa_Nombre ='" + NOMBRE + "'";
		CRUD.Actualizar(Consulta);
	}
}

CAPA DE PRESENTACIÓN:
1
2
3
4
5
6
7
8
9
10
private void btnSiguiente_Click(object sender, EventArgs e)
{
	foreach(DataGridViewRow row in dataConsultarAreas.Rows)
	{
		string nombre, valor;
		valor = dataConsultarAreas.CurrentRow.Cells["Seleccionar"].Value.ToString();
		nombre = dataConsultarAreas.CurrentRow.Cells["Nombre_Area"].Value.ToString();
		NConfig.ActualizarAreaAnaDataGrid(valor,nombre);
		MessageBox.Show(valor);
	}

En el solo estoy cargando 2 campos uno que es el nombre y una bandera que es la que se debe modificar.
Al realizar eso me un problema en la capa de datos indicando "Información adicional: Invalid column name 'True'." y si selecciono una sola opcion es como si me tomara la misma opciones para todo el foreach.
De antemano agradezco la 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

Actualizar sql desde DataGrid - Programación por capas

Publicado por Gio Ma (1 intervención) el 13/03/2016 02:21:01
Saludos...

Quisiera recordarte que en Ado.net es un conjunto de clases que permiten tener acceso a datos y manipularlos, dos cosas.... Para acceder a los datos está el conjunto de clases y objetos del DataSet (Conjunto de datos) que permite el acceso a datos en esta clase hay un objeto llamado Tableado (tabla) el cual almacena la información de una tabla SQL y permite su asignación a un control Datagrid, este se realiza de la siguiente forma...

Ejemplo
0) crear un objeto Table
DataTable Tabla = new DataTable();
1) establecer conexión
SqlConnecction Conexión = new SqlConnecction(ruta);
2) establecer comando
SqlCommand Orden = new SqlCommand(orden, Conexión); -la orden puede ser el query SQL o un stored procedure...
3) crear un SqlAdapter que contendrá la orden SQL
SqlDataAdapter Adaptador = new SqlDataAdapter();
4) asignar La orden al SqlDataAdapter...
Adaptador.SelectCommand = Orden;
5) aquí es lo importante los DataAdapter tienen dos métodos y son Fill y Update, el primero (Fill) es un método que actualiza la tabla almacenada en el DataAdapter con la información de tu tabla SQL, y el segundo (Update) permite actualizar la tabla SQL con los datos que tienes en el DataAdapter que por supuesto estará visualizado en el control DataGrid... Entonces
para el primero...
Adaptador.Fill(Tabla); -este muestra los datos como están en SQL en el control...
Para el segundo....
Adaptador.Update(Tabla); - este actualiza tu tabla SQL con lo que hay en el control...

6) asignación al Datagrid...
DataGrid.DataSource = Tabla;
7) cerrar conexión
Conexión.Close();

Sugiero que uses para liberar recursos no administrados como conexiones abiertas el using (no la directriz, que es la que se utiliza para los namespace o librerías; sino como sentencia...

Espero ayudarte

Saludos desde Colombia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Jose Fdo

Actualizar sql desde DataGrid - Programación por capas

Publicado por Jose Fdo (10 intervenciones) el 13/03/2016 05:34:10
Gracias Gio, ya habia solucionado el inconveniente pero tu aporte está demasiado interesante, lo analizaré y estudiaré mas sobre esto ya que la verdad si estoy bastante crudo en el tema.

Saludos desde Medellín.
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