Foros del Web » Programando para Internet » ASPX (.net) »

Problemas con DataSet

Estas en el tema de Problemas con DataSet en el foro de ASPX (.net) en Foros del Web. Hola chic@s. Tengo un codigo que se supone deberia: -Conectar con base Access a la tabla "tabla" con un solo campo "nombre" -Traer los datos ...
  #1 (permalink)  
Antiguo 07/01/2006, 22:05
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Problemas con DataSet

Hola chic@s. Tengo un codigo que se supone deberia:
-Conectar con base Access a la tabla "tabla" con un solo campo "nombre"
-Traer los datos a un DataSet
-Agreagar una fila al DataSet
-Reflejar el cambio del DataSet en la base de datos

Lo que no me funciona es el reflejar los datos, ya que si pido mostrar el DataSet me muestra la fila que agregue.
Les dejo el codigo y el error que me da:

Código:
void Page_Load(Object Src, EventArgs E)
{
	System.Data.OleDb.OleDbConnection conexion=new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:/base1.mdb;");
	OleDbDataAdapter adaptador=new OleDbDataAdapter("SELECT * FROM tabla", conexion);

	adaptador.InsertCommand=new OleDbCommand("INSERT INTO tabla (nombre) VALUES (@inNombre)", conexion);
	adaptador.InsertCommand.Parameters.Add("@inNombre", OleDbType.VarChar, 50, "nombre");
	
	DataSet ds=new DataSet();
	adaptador.Fill(ds);
	
	DataRow nuevaFila=ds.Tables[0].NewRow();
	nuevaFila["nombre"]="Pepe";
	ds.Tables[0].Rows.Add(nuevaFila);
	
	adaptador.Update(ds);
	
	conexion.Close();
}
</script>
El error es: Exception Details: System.Data.OleDb.OleDbException: La operación debe usar una consulta actualizable.

La linea que me marca es la que contiene adaptador.Update(ds);
Si elimino esa linea todo funciona bien, pero como ya dije no me refleja los cambios del DataSer en la base de datos.

Se agradece de antemano cualquier ayuda.
Saludos!
__________________
R4DS en español | R4DS en inglés
  #2 (permalink)  
Antiguo 07/01/2006, 22:19
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Me auto-respondo: el codigo estaba bien, el problema eran la falta de permisos de escritura para el .mdb
Para el que tenga el mismo problema puede seguir el siguiente link: http://www.us.es/foros/read.php?f=54&i=104&t=104

Saludos!
__________________
R4DS en español | R4DS en inglés
  #3 (permalink)  
Antiguo 26/01/2006, 08:51
 
Fecha de Ingreso: enero-2006
Mensajes: 9
Antigüedad: 18 años, 3 meses
Puntos: 0
Buenas.....

Yo esto lo haria de la siguinete manera:
A ver que tal va y suerte!!

System.Data.OleDb.OleDbConnection conexion=new System.Data.OleDb.OleDbConnection("Provider=Micros oft.Jet.OLEDB.4.0; Data Source=d:/base1.mdb;");

Dataset ds=New Dataset

OleDbDataAdapter adaptador=new OleDbDataAdapter("SELECT * FROM tabla", conexion);

adaptador.Fill(ds,"DATASET")

DataRow nuevaFila=ds.Tables[0].NewRow();
nuevaFila["nombre"]="Pepe";
ds.Tables[0].Rows.Add(nuevaFila);

OleDbCommandBuilder comando=new OleDbCommandBuilder(adaptador)
adaptador.update(ds,"DATASET")

adaptador.Update(ds);

conexion.Close();
  #4 (permalink)  
Antiguo 26/01/2006, 18:22
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Es buena la sugerencia de usar OleDbCommandBuilder en lugar de hacer los comandos a mano. Desconocia la existencia de ese objeto.
Gracias por el dato.
Saludos!
__________________
R4DS en español | R4DS en inglés
  #5 (permalink)  
Antiguo 26/01/2006, 18:37
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
No son muy recomendables que digamos...
Cita:
Do Not Use CommandBuilder at Run Time

CommandBuilder objects such as SqlCommandBuilder and OleDbCommandBuilder automatically generate the InsertCommand, UpdateCommand, and DeleteCommand properties of a DataAdapter. The CommandBuilder objects generate these properties based on the SelectCommand property of the DataAdapter. CommandBuilder objects are useful when you are designing and prototyping your application. However, you should not use them in production applications. The processing required to generate the commands affects performance. Manually create stored procedures for your commands, or use the Visual Studio® .NET design-time wizard and customize them later if necessary.
http://msdn.microsoft.com/library/de...netchapt06.asp

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #6 (permalink)  
Antiguo 26/01/2006, 19:08
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Ahah con razon los tutoriales de ejemplos no lo utilizaban. Muchas gracias xknown por la aclaración.
Saludos!
__________________
R4DS en español | R4DS en inglés
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 09:06.