Ayuda con CommandBuilder

tema enviado por Knk1 en Access
tema iniciado el 27/01/2007
Ultimamente he estado buscando metodos para ahorrarme algo de trabajo al escribir el acceso a datos y encontre la clase CommandBuilder. Tengo el siguiente codigo: ..... DataTable tabla; SqlCommandBuilder cb; SqlDataAdapter da; tabla = new DataTable(); cb = new SqlCommandBuilder(); da = new SqlDataAdapter("Select * from productos", con); //con es el SqlConnection...para que no queden dudas cb.QuotePrefix = "["; cb.QuoteSuffix = "]"; da.Fill(tabla); cb.DataAdapter = da; dataGridView1.DataSource = tabla.DefaultView; da.InsertCommand = cb.GetInsertCommand(); da.UpdateCommand = cb.GetUpdateCommand(); da.DeleteCommand = cb.GetDeleteCommand(); ..... // y actualizo da.Update(tabla); Al insertar todo bien, pero en los metodos de actualizar y borrado esto me genera un error que dice: Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information. Busque en la ayuda y al parecer tengo que modificar el metodo selectcommand del datadapter y devolver informacion de la llave primaria, asi que lo hice de la siguiente manera: da.SelectCommand = "Select IdProducto from productos"; pero sigue marcando el mismo error alguien sabe lo que sucede... Oh si mediante commandbuilder en vez de pasar la sentencia SQL "insert..." pasar el nombre de un procedimiento almacenado para que el dataadapter lo ejecute, me imagino que de esta forma nos ahorrariamos tener que escribir algo asi: ... da.SelectCommand.CommandType = CommandType.StoredProcedure; da.SelectCommand.Parameters.Add("@Param", SqlDbType.NVarChar).Value = "Su valor"; ... Aún sino se pudiera, creo, el CommandBuilder ya nos ahorra algo de trabajo en aplicaciones de las que me dejan en la escuela o alguna que no requiera la potencia de un servidor. Gracias de antemano por cualquier ayuda.