C sharp - Error al agregar nuevo registro

 
Vista:

Error al agregar nuevo registro

Publicado por David Molina (3 intervenciones) el 30/05/2011 05:02:44
HOla amigos, necesito una ayudadita. Tengo una tabla cliente en SQL server y en C# en el boton nuevo al dar clic sale el siguiente error: " Update requiere que InsertCommand sea valido cuando se pasa la coleccion DataRow con nuevas filas" ---------- la verdad no se por que sale este error. aqui dejo los codigos para que examinen:

private void btnNuevo_Click_1(object sender, EventArgs e)
{
DataRow dr = dt.NewRow();
// Asignar los datos de los textbox a la fila
asignarDatos(dr);

// Añadir la nueva fila a la tabla
dt.Rows.Add(dr);
// Guardar físicamente los datos en la base
try{
da.Update(dt);
dt.AcceptChanges();
// Si es el primer registro de la base,
// volver a leer los datos para actualizar los IDs
if( Convert.ToInt32("0" + dr["Idcliente"].ToString()) == 0 ){
dt = new DataTable();
da.Fill(dt);
}
// Posicionarlo en la última fila
BtnUltimo_Click(null, null);
}catch(DBConcurrencyException ex){
MessageBox.Show("Error de concurrencia:\n" + ex.Message);
}catch(Exception ex){
MessageBox.Show(ex.Message);
}
}
private void asignarDatos(DataRow dr)
{
// Usar los datos que hay en los textbox

dr["cliente"] = txtcliente.Text;
dr["direccion"] = txtdireccion.Text;
dr["telefono"] = txttelefono.Text;
dr["edad"] = txtedad.Text;
dr["profesion"] = txtprofesion.Text;
}

------------------en load del formulario -----------------
private void Form1_Load(object sender, EventArgs e)
{

string cadenaConexion = Properties.Settings.Default.conexionDavid;
string tabla = "Select * from cliente ORDER BY Idcliente";
SqlDataAdapter da = new SqlDataAdapter(tabla, cadenaConexion);


try{
// Crear un nuevo objeto del tipo DataAdapter
da = new SqlDataAdapter(tabla, cadenaConexion);
// Crear los comandos de insertar, actualizar y eliminar
SqlCommandBuilder cb = new SqlCommandBuilder(da);
// Como hay campos con caracteres especiales,
// al usarlos incluirlos entre corchetes.
cb.QuotePrefix = "[";
cb.QuoteSuffix = "]";
// Asignar los comandos al DataAdapter
da.UpdateCommand = cb.GetUpdateCommand();
da.InsertCommand = cb.GetInsertCommand();
da.DeleteCommand = cb.GetDeleteCommand();

// Esta base de datos usa el ID con valores automáticos
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
//
dt = new DataTable();
// Llenar la tabla con los datos indicados
da.Fill(dt);
if (dt.Rows.Count > 0)
{
btnPrimero_Click(null, null);
}
else
{
fila = -1;
btnactualizar.Enabled = false;
}
}
catch (Exception ex)
{
MessageBox.Show("ERROR al conectar o recuperar los datos:\n" +
ex.Message, "Conectar con la base",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
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