Retroceder   Foros del Web > Programación para sitios web > .NET > web forms

Respuesta
 
Herramientas Desplegado
Antiguo 09-ene-2006, 16:08   #1 (permalink)
zaqpz está en el buen camino
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 390
Enviar un mensaje por MSN a zaqpz
Actualizar varios valores en DataSet y reflejar en base de datos

Hola gente. En esta oportunidad estoy intentando rellenar un DataSet de una tabla con nombre "tabla" que tiene dos campos "id" y "nombre". Una vez con el DataSet lleno, modifico MAS DE UN VALOR del mismo (osea cambio un par de nombres) y luego intento reflejar esos cambios en la base de datos.

Con la operación INSERT no tuve problemas al agregar mas de un dato, ya que con DataRow nuevaFila=ds.Tables[0].NewRow(); voy agregando filas al DataSet y luego con el InsertCommand del adaptador envia todo a la base.

El tema es que la consulta de actualización tiene un WHERE. Entonces si yo le pongo comandoActualizar=new System.Data.OleDb.OleDbCommand("UPDATE tabla SET nombre=@valNombre WHERE id=1"); anda barbaro, pero solo me modifica el nombre con id 1 mientras que yo en el DataSet habia modificado varios nombre.

Entonces mi consulta seria como puedo hacer para que todos los cambios del DataSet se reflejen en la base de datos y no solo la fila con id 1.

Se agradece de antemano cualquier ayuda.
Saludos.
__________________
R4DS en español | R4DS en inglés
zaqpz está desconectado   Responder Citando
Antiguo 09-ene-2006, 17:47   #2 (permalink)
zaqpz está en el buen camino
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 390
Enviar un mensaje por MSN a zaqpz
Bueno ya lo solucioné mirando un ejemplo de un tutorial de Mircrosoft.
A veces me apuro demasiado al hacer un pedido de ayuda aquí

Para los que tengan mi mismo problema les dejo un ejemplo completo y comentado que realiza:

-Conexion a base de datos Access. Tabla "tabla" campos "id" y "nombre"
-Llenado de DataSet
-Modificacion de 2 datos del DataSet
-Actualización de estos cambios en la base de datos

Código:
<%@ Page Language="C#" Debug="true" %>

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

<script runat="server">
void Page_Load(Object Src, EventArgs E)
{
	// Declaro variables
	System.Data.OleDb.OleDbConnection conexion;
	System.Data.OleDb.OleDbCommand comando;
	OleDbDataAdapter adaptador;
	DataSet ds=new DataSet(); // Le asigno un objeto de la clase DataSet
	
	// Genero el objeto conexion e invoco al metodo que la abre
	conexion=new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:/base1.mdb;");
	conexion.Open();
	
	// Genero el comando y le asigno la conexion que va a utilizar
	comando=new System.Data.OleDb.OleDbCommand("SELECT * FROM tabla");
	comando.Connection=conexion;
	
	// Genero el adaptador y establezco que haya una consulta de seleccion (comando)
	adaptador=new OleDbDataAdapter();
	adaptador.SelectCommand=comando;
	
	// Lleno el DataSet con la respuesta de la consulta
	adaptador.Fill(ds);

	// Cambio en memoria el contenido de la 1º y 2º fila del DataSet
	ds.Tables[0].Rows[0]["nombre"]="Nuevo Nombre";
	ds.Tables[0].Rows[1]["nombre"]="Nuevo Nombre 2";
	
	// Creo el nuevo comando para actualizar un registro
	System.Data.OleDb.OleDbCommand comandoActualizar;
	comandoActualizar=new System.Data.OleDb.OleDbCommand("UPDATE tabla SET nombre=@valNombre WHERE id=@valId");
	comandoActualizar.Connection=conexion;

	// Asigno al adaptador el comando de actualizacion
	adaptador.UpdateCommand=comandoActualizar;	
	
	// Defino los comandos variables de la consulta de actualizacion
	comandoActualizar.Parameters.Add("@valNombre", OleDbType.VarChar, 50, "nombre");
	OleDbParameter workParam=adaptador.UpdateCommand.Parameters.Add("@valId", OleDbType.Integer);
    workParam.SourceColumn="id";
    workParam.SourceVersion=DataRowVersion.Original;
	
	// Realizo las consultas a las base de datos
	adaptador.Update(ds);
	
	conexion.Close();
}
</script>
Espero que a alguien le resulte útil
Saludos.
__________________
R4DS en español | R4DS en inglés
zaqpz está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 08:25.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93