Error en UpdateCommand al añadir un registro.

20/03/2006 - 17:23 por Jesús G. | Informe spam
En un formulario tengo DataGridView con vendedores. Además, tengo una
ToolStrip con un botón Añadir, y otro, Editar.

Cuando pulso el botón Editar, llamo a un formulario que es la ficha de
Vendedores. Utilizo el siguiente código:

Private Sub btEditar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btEditar.Click

My.Forms.frmFVendedores.MdiParent = My.Forms.frmPrincipal
My.Forms.frmFVendedores.WindowState = FormWindowState.Normal

'Editar registro
Dim dgvr As DataGridViewRow = Me.VendedoresDataGridView.CurrentRow()
My.Forms.frmFVendedores.Tag = dgvr.Cells("IdVendedor").Value.ToString()
My.Forms.frmFVendedores.Show()

End Sub

Para crear este formulario, creé un Dataset denominado VendedoresDS en el
cual sólo incluyo la tabla Vendedores con todos sus campos.

En el formulario de vendedores tengo el siguiente código:

Private Sub frmFVendedores_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
If Val(Me.Tag) > 0 Then
'Edición
Me.VendedoresTableAdapter.FillByIdVendedor(Me.VendedoresDS.Vendedores,
Me.Tag)
Else
'Añadir registro
Me.VendedoresTableAdapter.Fill(Me.VendedoresDS.Vendedores)
Me.VendedoresBindingSource.AddNew()
End If
End Sub

Private Sub btAceptar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btAceptar.Click
'Guardar los cambios
If MsgBox("¿Desea guardar los cambios?", MsgBoxStyle.Information +
MsgBoxStyle.YesNo, "Guardado") = MsgBoxResult.Yes Then
Me.Validate()
Me.VendedoresBindingSource.EndEdit()
Me.VendedoresTableAdapter.Update(Me.VendedoresDS.Vendedores)
Else
MessageBox.Show(Me, "Errores")
End If
Me.Close()
End Sub

El problema que tengo es que cuando ejecuto la aplicación y entro en la
ficha de Vendedores a editar y modifico un dato en un campo y luego pulso el
botón Aceptar, me sale el siguiente error:

"No se encontron InvalidOperationException. Update requiere que
UpdateCommand sea válido cuando se pasa una colección Datarow con filas
modificadas."

No sé que hacer. ¿Alguién me echa una manita?

Saludos

Jesús G.

Preguntas similare

Leer las respuestas

#1 Lucas
20/03/2006 - 18:06 | Informe spam
No dispongo de mucho tiempo para revisar tu código a fondo, pero por el error
que te da, me pregunto si a la hora de haber creado tu DataAdapter para poder
llenar la tabla en el DataSet, también habrás creado un CommandBuilder que es
el que te permite hacerle modificaciones a las tablas.

Para una conexión a SQL Server sería algo como

Dim commandBuilder As SqlCommandBuilder
adapter = New SqlDataAdapter("Select * from Tabla", Conexion)
commandBuilder = New SqlCommandBuilder(adapter)
adapter.FillSchema(dataSet, SchemaType.Source)
adapter.Fill(dataSet, "nombreTabla")

Espero te haya ayudado en algo. Me avisas si ese era el error.

Nos vemos.
Respuesta Responder a este mensaje
#2 Jesús G.
20/03/2006 - 18:48 | Informe spam
Me ha faltado indicar que el Dataset lo he creado, desde VS 2005 en VB, con
el asistente para Origenes de Datos, por tanto no he creado, yo
personalmente, nada. Simplemente he arrastrado la tabla desde Orígenes de
datos al formulario. Y luego he puesto el codigo indicado anteriormente.

Saludos

Jesús G.

"Lucas" escribió en el mensaje
news:
No dispongo de mucho tiempo para revisar tu código a fondo, pero por el
error
que te da, me pregunto si a la hora de haber creado tu DataAdapter para
poder
llenar la tabla en el DataSet, también habrás creado un CommandBuilder que
es
el que te permite hacerle modificaciones a las tablas.

Para una conexión a SQL Server sería algo como

Dim commandBuilder As SqlCommandBuilder
adapter = New SqlDataAdapter("Select * from Tabla", Conexion)
commandBuilder = New SqlCommandBuilder(adapter)
adapter.FillSchema(dataSet, SchemaType.Source)
adapter.Fill(dataSet, "nombreTabla")

Espero te haya ayudado en algo. Me avisas si ese era el error.

Nos vemos.
Respuesta Responder a este mensaje
#3 Eduardo Alvarado Meza
21/03/2006 - 09:50 | Informe spam
Tal vez tu origen de datos es una consulta y no una tabla, el Vs2005, no te
crea los inserts, delete y updates cuando el origen es una consulta.
Respuesta Responder a este mensaje
#4 Jesús G.
21/03/2006 - 21:56 | Informe spam
El Dataset es una Tabla de SQL Server 2000.

Lo sorprendente es que hago lo mismo con otra tabla, y no me dá error.

Saludos

Jesús G.


"Eduardo Alvarado Meza" <ealvarado_15@(eliminarestetexto)hotmail.com>
escribió en el mensaje news:
Tal vez tu origen de datos es una consulta y no una tabla, el Vs2005, no
te crea los inserts, delete y updates cuando el origen es una consulta.

Respuesta Responder a este mensaje
#5 Jesús G.
28/03/2006 - 00:00 | Informe spam
Ya lo tengo resuelto. Era que en la tabla de Vendedores, no sé por qué
motivo, no tenía un campo clave.

Saludos

Jesús G.

"Jesús G." escribió en el mensaje
news:%
En un formulario tengo DataGridView con vendedores. Además, tengo una
ToolStrip con un botón Añadir, y otro, Editar.

Cuando pulso el botón Editar, llamo a un formulario que es la ficha de
Vendedores. Utilizo el siguiente código:

Private Sub btEditar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btEditar.Click

My.Forms.frmFVendedores.MdiParent = My.Forms.frmPrincipal
My.Forms.frmFVendedores.WindowState = FormWindowState.Normal

'Editar registro
Dim dgvr As DataGridViewRow = Me.VendedoresDataGridView.CurrentRow()
My.Forms.frmFVendedores.Tag = dgvr.Cells("IdVendedor").Value.ToString()
My.Forms.frmFVendedores.Show()

End Sub

Para crear este formulario, creé un Dataset denominado VendedoresDS en el
cual sólo incluyo la tabla Vendedores con todos sus campos.

En el formulario de vendedores tengo el siguiente código:

Private Sub frmFVendedores_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
If Val(Me.Tag) > 0 Then
'Edición

Me.VendedoresTableAdapter.FillByIdVendedor(Me.VendedoresDS.Vendedores,
Me.Tag)
Else
'Añadir registro
Me.VendedoresTableAdapter.Fill(Me.VendedoresDS.Vendedores)
Me.VendedoresBindingSource.AddNew()
End If
End Sub

Private Sub btAceptar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btAceptar.Click
'Guardar los cambios
If MsgBox("¿Desea guardar los cambios?", MsgBoxStyle.Information +
MsgBoxStyle.YesNo, "Guardado") = MsgBoxResult.Yes Then
Me.Validate()
Me.VendedoresBindingSource.EndEdit()
Me.VendedoresTableAdapter.Update(Me.VendedoresDS.Vendedores)
Else
MessageBox.Show(Me, "Errores")
End If
Me.Close()
End Sub

El problema que tengo es que cuando ejecuto la aplicación y entro en la
ficha de Vendedores a editar y modifico un dato en un campo y luego pulso
el
botón Aceptar, me sale el siguiente error:

"No se encontron InvalidOperationException. Update requiere que
UpdateCommand sea válido cuando se pasa una colección Datarow con filas
modificadas."

No sé que hacer. ¿Alguién me echa una manita?

Saludos

Jesús G.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida