CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Update En La Tabla Real Con Modificaciones.
(1/1)
eliza_marti:
Hola chicos!.. :hola: ..espero que estén bien!..Tengo una incognita..lo que pasa es que ..las modificaciones y las eliminaciones no me resultan…solo las inserciones.. osea en el DataSet se me realizan todos los cambios…pero al presionar btnActualizar..(No se puede actualizar en la tabla real) y me presenta el siguiente error: An unhandled exception of type ‘System.Invalid.Exception’ ocurred in system.data.dll Additional information:Dynamic SQL generation for the update command that does not return any key colunmn information. Lo que me extraña :think: es que no me da ningún error al actualizar por inserción….solo en las modificaciones y eliminaciones..osea que el error está dentro de ellos..pero no sé cual es?...No sé en que dependerá?...será porque falta alguna instrucción?...o porque estoy utilizando Access 2003?..(aunque no creo que sea este último)..Bueno..aquí está mi code..Si alguien es tan amable de ayudarme..le estaré muy agradecida…mientras investigaré… :yes: .bye.. :hola:
Porcia estoy utilizando tambien Oledb….
--- Código: Text ---Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click Dim oDataRow As DataRow ' obtener el objeto fila de la tabla del dataset ' en el que estamos posicionados oDataRow = Me.oDataSet.Tables("Clientes").Rows(Me.iPosicFilaActual) ' modificar las columnas de la fila ' excepto la correspondiente al identificador cliente oDataRow("Nombre") = Me.txtNombre.Text oDataRow("FIngreso") = Me.txtFIngreso.Text oDataRow("Credito") = Me.txtCredito.Text End Sub Private Sub btnActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizar.Click ' actualizar los cambios realizados en el dataset ' contra la base de datos real 'Me.catDA.Update(Me.oDataSet, "Clientes") 'ojitos…..aqui me señala el error Me.oDataAdapter.Update(Me.oDataSet, "Clientes") End Sub Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click Dim oDataRow As DataRow ' obtener el objeto fila, de la tabla del dataset ' en el que estamos posicionados oDataRow = Me.oDataSet.Tables("Clientes").Rows(Me.iPosicFilaActual) oDataRow.Delete() ' borrar la fila ' mediante el método GetChanges(), obtenemos una tabla ' con las filas borradas Dim oTablaBorrados As DataTable oTablaBorrados = Me.oDataSet.Tables("Clientes").GetChanges (DataRowState.Deleted) ' actualizar en el almacén de datos las filas borradas Me.oDataAdapter.Update(oTablaBorrados) ' confirmar los cambios realizados Me.oDataSet.Tables("Clientes").AcceptChanges() ' reposicionar en la primera fila Me.btnPrimero.PerformClick() End SubEnd Class
Usals:
Yo tuve tambien un problema parecido y era por que el comando update no me lo creaba ya que no tenia ninguna columna clave,lo
Usals:
perdona se me colo el mensaje ,sigo,lo que hice fue crearme mi comando oledb.updatecommand y decirle que condicion debia cumplir el post lo tienes un poco mas abajo,pegale una leida seguro que te aclaras,un saludo
eliza_marti:
Saludos a Todos!. :hola: . Estoy muy contenta porque encontré la solución de mi problemita y era que la actualización en una tabla real es diferente cuando es por inserción, modificación y eliminación.. (no se puede hacer con un simple Update en el DataAdapter).. :o Bueno..para los que recién empiezan en esto como yo..aquí está mi code resuelto..espero que les pueda servir de guía.. :)
Usals Gracias por tu atención!. ;) ..te cuento que cuando leí lo que me aconsejaste, no entendí nada..pero ahora que que sé como se hace me doy cuenta que si tiene mucho que ver..Gracias!..Bye :hola: ….Hasta la Próxima!...
:suerte:
--- Código: Text ---Private Sub btnActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizar.Click ' actualizar los cambios realizados en el Dataset ' contra la Base de Datos real ' IDCliente,Nombre,FIngreso y Credito son campos ' de mi tabla Clientes Select Case flag Case 2 'Cuando lo actualizo por modificación Dim q As String q = "UPDATE Clientes SET IDCliente= @IDCLIENTE, Nombre= @NOMBRE, FIngreso = @FINGRESO, Credito=@CREDITO WHERE IDCliente=@IDCLIENTE" Dim orden As OleDbCommand orden = New OleDbCommand(q, oConexion) orden.Parameters.Add(New OleDbParameter("@IDCLIENTE", OleDbType.VarChar, 50)) orden.Parameters.Add(New OleDbParameter("@NOMBRE", OleDbType.VarWChar, 50)) orden.Parameters.Add(New OleDbParameter("@FINGRESO", OleDbType.VarChar, 50)) orden.Parameters.Add(New OleDbParameter("@CREDITO", OleDbType.VarChar, 50)) ' Cargando textbox de clave con el valor de la clave orden.Parameters("@IDCLIENTE").Value = Me.txtIDCliente.Text orden.Parameters("@NOMBRE").Value = Me.txtNombre.Text orden.Parameters("@FINGRESO").Value = Me.txtFIngreso.Text orden.Parameters("@CREDITO").Value = Me.txtCredito.Text orden.Connection.Open() orden.ExecuteNonQuery() orden.Connection.Close() Case 1 'Cuando lo actualizo por inserción Me.oDataAdapter.Update(Me.oDataSet, "Clientes") Case 3 'Cuando lo actualizo por eliminación Dim q As String q = "DELETE * FROM Clientes where IDCliente=@IDCLIENTE" Dim orden As OleDbCommand orden = New OleDbCommand(q, oConexion) orden.Parameters.Add(New OleDbParameter("@IDCLIENTE", OleDbType.VarChar, 50)) orden.Parameters.Add(New OleDbParameter("@NOMBRE", OleDbType.VarChar, 50)) orden.Parameters.Add(New OleDbParameter("@FINGRESO", OleDbType.VarChar, 50)) orden.Parameters.Add(New OleDbParameter("@CREDITO", OleDbType.VarChar, 50)) 'TempIDCliente es una variable temporal que puse para 'salvar el ID del cliente que eliminé en el Dataset orden.Parameters("@IDCLIENTE").Value = Me.TempIDCliente orden.Parameters("@NOMBRE").Value = Me.txtNombre.Text orden.Parameters("@FINGRESO").Value = Me.txtFIngreso.Text orden.Parameters("@CREDITO").Value = Me.txtCredito.Text orden.Connection.Open() orden.ExecuteNonQuery() orden.Connection.Close() ' Refrescando Dataset oDataAdapter = New OleDbDataAdapter("SELECT * FROM Clientes", oConexion) oDataSet = New DataSet oDataAdapter.Fill(oDataSet, "Clientes") Me.TempIDCliente = "" End Select flag = 0 End Sub
Navegación
Ir a la versión completa