• Domingo 19 de Mayo de 2024, 16:03

Autor Tema:  Update En La Tabla Real Con Modificaciones.  (Leído 3051 veces)

eliza_marti

  • Miembro MUY activo
  • ***
  • Mensajes: 267
    • Ver Perfil
    • http://www.solocodigo.com
Update En La Tabla Real Con Modificaciones.
« en: Lunes 27 de Septiembre de 2004, 16:50 »
0
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
  1. Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click
  2.         Dim oDataRow As DataRow
  3.         ' obtener el objeto fila de la tabla del dataset
  4.         ' en el que estamos posicionados
  5.         oDataRow =  
  6.         Me.oDataSet.Tables("Clientes").Rows(Me.iPosicFilaActual)
  7.         ' modificar las columnas de la fila
  8.         ' excepto la correspondiente al identificador cliente
  9.         oDataRow("Nombre") = Me.txtNombre.Text
  10.         oDataRow("FIngreso") = Me.txtFIngreso.Text
  11.         oDataRow("Credito") = Me.txtCredito.Text
  12.  End Sub
  13.  
  14.  Private Sub btnActualizar_Click(ByVal sender As System.Object,
  15.  ByVal e As System.EventArgs) Handles btnActualizar.Click
  16.         ' actualizar los cambios realizados en el dataset
  17.         ' contra la base de datos real
  18.         'Me.catDA.Update(Me.oDataSet, "Clientes")
  19.         'ojitos…..aqui me señala el error
  20.         Me.oDataAdapter.Update(Me.oDataSet, "Clientes")
  21.  
  22.  End Sub
  23.   Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As  
  24.   System.EventArgs) Handles btnEliminar.Click
  25.         Dim oDataRow As DataRow
  26.         ' obtener el objeto fila, de la tabla del dataset
  27.         ' en el que estamos posicionados
  28.         oDataRow = Me.oDataSet.Tables("Clientes").Rows(Me.iPosicFilaActual)
  29.         oDataRow.Delete() ' borrar la fila
  30.         ' mediante el método GetChanges(), obtenemos una tabla
  31.         ' con las filas borradas
  32.         Dim oTablaBorrados As DataTable
  33.         oTablaBorrados = Me.oDataSet.Tables("Clientes").GetChanges
  34.        (DataRowState.Deleted)
  35.         ' actualizar en el almacén de datos las filas borradas
  36.         Me.oDataAdapter.Update(oTablaBorrados)
  37.         ' confirmar los cambios realizados
  38.         Me.oDataSet.Tables("Clientes").AcceptChanges()
  39.         ' reposicionar en la primera fila
  40.         Me.btnPrimero.PerformClick()
  41.     End Sub
  42. End Class
  43.  
Conserva la Paz con tu Alma en la bulliciosa confusión de la vida, aún con toda su farsa, penalidades y sueños fallidos, el mundo es todavia Hermoso....

http]
programacion,c,c++,
C#,java,linux,videojuegos,
directX,.NET,allegro,asm,codigo
[

Usals

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: Update En La Tabla Real Con Modificaciones.
« Respuesta #1 en: Lunes 27 de Septiembre de 2004, 20:54 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: Update En La Tabla Real Con Modificaciones.
« Respuesta #2 en: Lunes 27 de Septiembre de 2004, 20:56 »
0
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

  • Miembro MUY activo
  • ***
  • Mensajes: 267
    • Ver Perfil
    • http://www.solocodigo.com
Re: Update En La Tabla Real Con Modificaciones.
« Respuesta #3 en: Lunes 4 de Octubre de 2004, 16:25 »
0
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
  1. Private Sub btnActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizar.Click
  2.         ' actualizar los cambios realizados en el Dataset
  3.         ' contra la Base de Datos real
  4.         ' IDCliente,Nombre,FIngreso y Credito son campos
  5.         ' de mi tabla Clientes
  6.         Select Case flag
  7.             Case 2 'Cuando lo actualizo por modificación
  8.                 Dim q As String
  9.                 q = "UPDATE Clientes SET IDCliente= @IDCLIENTE, Nombre= @NOMBRE, FIngreso = @FINGRESO, Credito=@CREDITO WHERE IDCliente=@IDCLIENTE"
  10.                 Dim orden As OleDbCommand
  11.                 orden = New OleDbCommand(q, oConexion)
  12.                 orden.Parameters.Add(New OleDbParameter("@IDCLIENTE", OleDbType.VarChar, 50))
  13.                 orden.Parameters.Add(New OleDbParameter("@NOMBRE", OleDbType.VarWChar, 50))
  14.                 orden.Parameters.Add(New OleDbParameter("@FINGRESO", OleDbType.VarChar, 50))
  15.                 orden.Parameters.Add(New OleDbParameter("@CREDITO", OleDbType.VarChar, 50))
  16.                 ' Cargando textbox de clave con el valor de la clave
  17.                 orden.Parameters("@IDCLIENTE").Value = Me.txtIDCliente.Text
  18.                 orden.Parameters("@NOMBRE").Value = Me.txtNombre.Text
  19.                 orden.Parameters("@FINGRESO").Value = Me.txtFIngreso.Text
  20.                 orden.Parameters("@CREDITO").Value = Me.txtCredito.Text
  21.                 orden.Connection.Open()
  22.                 orden.ExecuteNonQuery()
  23.                 orden.Connection.Close()
  24.             Case 1 'Cuando lo actualizo por inserción
  25.                 Me.oDataAdapter.Update(Me.oDataSet, "Clientes")
  26.             Case 3 'Cuando lo actualizo por eliminación
  27.                 Dim q As String
  28.                 q = "DELETE * FROM Clientes where IDCliente=@IDCLIENTE"
  29.                 Dim orden As OleDbCommand
  30.                 orden = New OleDbCommand(q, oConexion)
  31.                 orden.Parameters.Add(New OleDbParameter("@IDCLIENTE", OleDbType.VarChar, 50))
  32.                 orden.Parameters.Add(New OleDbParameter("@NOMBRE", OleDbType.VarChar, 50))
  33.                 orden.Parameters.Add(New OleDbParameter("@FINGRESO", OleDbType.VarChar, 50))
  34.                 orden.Parameters.Add(New OleDbParameter("@CREDITO", OleDbType.VarChar, 50))
  35.                 'TempIDCliente es una variable temporal que puse para
  36.                 'salvar el ID del cliente que eliminé en el Dataset
  37.                 orden.Parameters("@IDCLIENTE").Value = Me.TempIDCliente
  38.                 orden.Parameters("@NOMBRE").Value = Me.txtNombre.Text
  39.                 orden.Parameters("@FINGRESO").Value = Me.txtFIngreso.Text
  40.                 orden.Parameters("@CREDITO").Value = Me.txtCredito.Text
  41.                 orden.Connection.Open()
  42.                 orden.ExecuteNonQuery()
  43.                 orden.Connection.Close()
  44.                 ' Refrescando Dataset
  45.                 oDataAdapter = New OleDbDataAdapter("SELECT * FROM Clientes", oConexion)
  46.                 oDataSet = New DataSet
  47.                 oDataAdapter.Fill(oDataSet, "Clientes")
  48.                 Me.TempIDCliente = ""
  49.         End Select
  50.         flag = 0
  51.     End Sub
  52.  
Conserva la Paz con tu Alma en la bulliciosa confusión de la vida, aún con toda su farsa, penalidades y sueños fallidos, el mundo es todavia Hermoso....

http]
programacion,c,c++,
C#,java,linux,videojuegos,
directX,.NET,allegro,asm,codigo
[