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

[0] Índice de Mensajes

Ir a la versión completa