Foros del Web » Programación para mayores de 30 ;) » .NET »

Update a un DataSet

Estas en el tema de Update a un DataSet en el foro de .NET en Foros del Web. Hola grupo tengo el siguiente problema: Trabajo en vb.net 2002 estoy conectando una base de datos access de forma manual, es decir, no utilizo el ...
  #1 (permalink)  
Antiguo 14/10/2005, 14:35
Avatar de Maxi.Net  
Fecha de Ingreso: abril-2005
Ubicación: R.M. Talagante, Chile!!
Mensajes: 295
Antigüedad: 19 años
Puntos: 2
Pregunta Update a un DataSet

Hola grupo tengo el siguiente problema:
Trabajo en vb.net 2002 estoy conectando una base de datos access de forma manual, es decir, no utilizo el asistente que trae el OleDbDataAdapter ni el OleDbconection, lo que hago es generar en tiempo de ejecución el código para el adaptador, la conexión y crear mi conjunto de datos:

'La base de datos se llama bd1.mdb y la tabla Tabla1

Imports System.Data.OleDb

Public Class
...
...

'Al hacer click en el boton "Conectar base de datos"

Dim StrConexion As String
Dim StrComando As String
Dim AdaptadorTabla As New OleDbDataAdapter()
Dim Ds As New System.Data.DataSet()
Dim FILA As DataRow

StrConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta & "\bd1.mdb"

StrComando = "SELECT * FROM Tabla1"

AdaptadorTabla = New OleDb.OleDbDataAdapter(StrComando, StrConexion)
AdaptadorTabla.Fill(Ds, "Tabla1")
FILA = Ds.Tables("Tabla1").NewRow
FILA("nom") = TextBox2.Text
FILA("edad") = Val(TextBox3.Text)
BindingContext(Ds, "Tabla1").EndCurrentEdit()
Ds.Tables("Tabla1").Rows.Add(FILA)
AdaptadorTabla.Update(Ds)

Cuando hace el Update aparece el siguiente mensaje de error:

Excepción no controlada del tipo 'System.InvalidOperationException' en system.data.dll
Información adicional: Update no puede encontrar TableMappings['Table'] o DataTable 'Table'.


Tambien tengo unas rutinas de consulta usando el mismo código y resultan

Graciasssss...
  #2 (permalink)  
Antiguo 16/10/2005, 21:33
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
ya abriste la conexion a la base de datos para poder realizar la funcion de cargar valores... por que yo cuando manejo SQL SERVER siempre tienes que crear una conexion y abrirla para que puedas hacer cualquier funcion de insertar, modificar o eliminar, de no ser asi, entonces puedes colocar un punto de interrupcion para que veas que linea te esta generando el error y de ahi, modificarla.
  #3 (permalink)  
Antiguo 18/10/2005, 12:51
Avatar de Maxi.Net  
Fecha de Ingreso: abril-2005
Ubicación: R.M. Talagante, Chile!!
Mensajes: 295
Antigüedad: 19 años
Puntos: 2
Probé abriendo la conexión y no me funca!!

¿Tú creas el OleDbDataAdapter cuando estas diseñando?
  #4 (permalink)  
Antiguo 18/10/2005, 13:13
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
El código que pusiste no tiene por qué funcionar, las cosas no se hacen mágicamente...; si deseas que funcione (valga la redundancia) dicho método debes asignar las propiedades UpdateCommand y DeleteCommand del DataAdapter, eso lo puedes hacer manualmente o usando un CommandBuilder.

Te sugiero que revises la documentación.

Saludos
PS. Disculpa por no enviarte enlaces, estoy un poquito ocupado...
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #5 (permalink)  
Antiguo 02/11/2005, 19:28
Avatar de Maxi.Net  
Fecha de Ingreso: abril-2005
Ubicación: R.M. Talagante, Chile!!
Mensajes: 295
Antigüedad: 19 años
Puntos: 2
cambie de idea: lo que hago ahora es con el IDE insertar el dataAdapter, Connection y el DatSet

Luego en el load de mi gormulario cambio el path de la base de datos y listo, aprovecho todas las instrucciones que genera el adaptador de datos (insert, select, delete,etc)

asi:
OleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strRuta & "\MiBaseDeDAtos.mdb"

y funca!!!
  #6 (permalink)  
Antiguo 03/11/2005, 07:16
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Bueno, si quieres saber como se hace lo que te mencioné, puedes ver lo siguiente:
http://msdn.microsoft.com/library/sp...edCommands.asp

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #7 (permalink)  
Antiguo 09/01/2006, 22:19
 
Fecha de Ingreso: agosto-2005
Mensajes: 83
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta para xknown

hola xknown intente hacer el ejemplo de la dpcumentacion sobre commandbuilder asi , en un datagrid asociado a un dataview clientes, realiszo eliminacion de filas ,cambia el dataset, le doy accpetchanges, y lueog con el dataadapter le doy el update, pero no comprendo por que no actualiza la BD
Código:
Imports System.Data.SqlClient
PublicClass Form1
Inherits System.Windows.Forms.Form
Private d AsNew DataSet
Private a As SqlDataAdapter, b As SqlCommandBuilder, dvcli As DataView

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
a = New SqlDataAdapter("select * from cliente", cn)
b = New SqlCommandBuilder(a)
b.QuotePrefix = "["
b.QuotePrefix = "]"
coneccion()
a.Fill(d, "cli")
dvcli = d.Tables("cli").DefaultView
DataGrid1.DataSource = dvcli
cn.Close() : cn.Dispose()
EndSub

'elimina la fila del dataview
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
dvcli.Delete(DataGrid1.CurrentRowIndex)
d.AcceptChanges()
DataGrid2.DataSource = d.Tables("cli")
EndSub
 
'graba cambios
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
coneccion()
a.Update(d, "cli")
cn.Close() : cn.Dispose()
EndSub
 

EndClass 
supuestamente cualquier cambio que sufra el dataset sea modificacion, insercion o eliminacion, al hacerle un update con el dataadapter tiene que afectar el origen , me equivoco?, he intentado hacerlo eliminando filas ,pero no me funciona, no actualiza la BD, o falta codigo, podria hacerlo manualmente pero quiero saber se hace eso del commandbuilder, me podrian decir que hago mal? yya he buscado informacion pero no he encontrado ejemplos concretos
  #8 (permalink)  
Antiguo 26/01/2006, 09:35
 
Fecha de Ingreso: enero-2006
Mensajes: 9
Antigüedad: 18 años, 3 meses
Puntos: 0
te falta codigo en esa aplicacion:

Dim StrConexion As String
Dim StrComando As String
Dim AdaptadorTabla As New OleDbDataAdapter
Dim Ds As New System.Data.DataSet
Dim FILA As DataRow
Dim comando As OleDb.OleDbCommandBuilder
StrConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta & "\bd1.mdb"

StrComando = "SELECT * FROM Tabla1"

AdaptadorTabla = New OleDb.OleDbDataAdapter(StrComando, StrConexion)
AdaptadorTabla.Fill(Ds, "Tabla1")
FILA = Ds.Tables("Tabla1").NewRow
FILA("nom") = TextBox2.Text
FILA("edad") = Val(TextBox3.Text)

Ds.Tables("Tabla1").Rows.Add(FILA)
Dim comando As New OleDb.OleDbCommandBuilder(AdaptadorTabla)
AdaptadorTabla.Update(Ds,"Tabla1")
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:06.