Hola buenas.

Soy nuevo por aqui y estoy empezando con esto del vb.net. Me estoy haciendo un programilla para llevar los horarios del trabajo (y para practicar...) y tengo un pequeño problemilla que seguro que me podeis orientar de lo que debo de estar haciendo mal.

bueno, pues alla vamos.

Tengo una BBDD en Access (lb.mdb) que tiene tres tablas (jaiegunak, ordutegia y lanbono). Todas ellas con un campo que es clave principal.

En un form (form2) gestiono la tabla "ordutegia". Cuando digo gestiono es que me permite modificar los datos de la tabla "ordutegia" que lo presento en un DataGridView. Este form me funciona perfectamente. Modifica los datos en la tabla de access.

Pero tengo otro form (form3) donde quiero gestionar (de la misma manera que en el form2) la tabla "jaiegunak". Pero en este caso no me modifica los datos en la tabla. Uso basicamente lo mismo en un form que en otro y no lo hace. Ya he mirado que no me copie la BBDD en el directorio de trabajo. El programa no da ningun error, pero no graba los datos en el archivo mdb.

Pongo el codigo fuente de ambis forms:

FORM2

Código:
  1. Imports System.Data.DataRow
  2. Imports System.Data.OleDb
  3.  
  4.  
  5. Public Class Form2
  6.  
  7.  
  8.  
  9.     Private dt As New DataTable 'objeto DataTable
  10.     Private da As New OleDbDataAdapter 'DataAdapter
  11.     Private modificado As Integer = 0
  12.  
  13.  
  14.     Dim conexion As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=lb.mdb; User Id=admin;Password=;")
  15.  
  16.     Dim adaptador As New OleDbDataAdapter("SELECT * FROM ordutegia", conexion)
  17.     Dim setdate As New DataSet
  18.  
  19.     ' Creo un objeto CommandBuilder para actualizar los datos
  20.     Dim cmdBuilder As New OleDbCommandBuilder(adaptador)
  21.    
  22.  
  23.  
  24.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  25.                        Try
  26.                     With adaptador
  27.                         .InsertCommand = cmdBuilder.GetInsertCommand
  28.                         .DeleteCommand = cmdBuilder.GetDeleteCommand
  29.                         .UpdateCommand = cmdBuilder.GetUpdateCommand
  30.                     End With
  31.  
  32.                     Dim dt As DataTable = DirectCast(Me.DataGridView1.DataSource, DataTable)
  33.  
  34.                     ' Actualizamos los datos
  35.                     '
  36.                     adaptador.Update(dt)
  37.  
  38.  
  39.                     MsgBox("Datos Grabados ")
  40.  
  41.  
  42.                 Catch ex As Exception
  43.                     MsgBox("Datos NO Grabados")
  44.                 End Try
  45.  
  46.         'limpiar el datagridview1
  47.         setdate.Tables.Clear()
  48.         Close()
  49.     End Sub
  50.  
  51.  
  52.     Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  53.         'TODO: esta línea de código carga datos en la tabla 'LbDataSet1.ordutegia' Puede moverla o quitarla según sea necesario.
  54.         Me.OrdutegiaTableAdapter.Fill(Me.LbDataSet1.ordutegia)
  55.         modificado = 0
  56.  
  57.  
  58.         adaptador.Fill(setdate)
  59.  
  60.         DataGridView1.DataSource = setdate.Tables(0)
  61.  
  62.      
  63.     End Sub
  64.  
  65.  
  66. End Class
He obviado parte del codigo, pero se supone que cuando he modificado algun dato del DataGridView1, éste queda reflejado en el Grid. Luego al actualizarlo (update) se graban las modificaciones en la BBDD de access.

FORM3

Código:
  1. Imports System.Data.DataRow
  2. Imports System.Data.OleDb
  3.  
  4.  
  5. Public Class Form3
  6.  
  7.  
  8.  
  9.     Private dt3 As New DataTable 'objeto DataTable
  10.     Private da3 As New OleDbDataAdapter 'DataAdapter
  11.  
  12.  
  13.     Dim conexion3 As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=lb.mdb; User Id=admin;Password=;")
  14.  
  15.     Dim adaptador3 As New OleDbDataAdapter("SELECT * FROM jaiegunak", conexion3)
  16.     Dim setdate3 As New DataSet
  17.  
  18.     ' Creo un objeto CommandBuilder para actualizar los datos
  19.     Dim cmdBuilder3 As New OleDbCommandBuilder(adaptador3)
  20.  
  21.  
  22.     Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  23.         'TODO: esta línea de código carga datos en la tabla 'LbDataSet1.jaiegunak' Puede moverla o quitarla según sea necesario.
  24.         Me.JaiegunakTableAdapter.Fill(Me.LbDataSet1.jaiegunak)
  25.         adaptador3.Fill(setdate3)
  26.  
  27.         DataGridView1.DataSource = setdate3.Tables(0)
  28.  
  29.  
  30.     End Sub
  31.  
  32.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  33.         Close()
  34.     End Sub
  35.  
  36.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  37.  
  38.  
  39.         Try
  40.             With adaptador3
  41.             .InsertCommand = cmdBuilder3.GetInsertCommand
  42.              .DeleteCommand = cmdBuilder3.GetDeleteCommand
  43.           ' .UpdateCommand = cmdBuilder3.GetUpdateCommand
  44.              End With
  45.  
  46.             Dim dt3 As DataTable = DirectCast(Me.DataGridView1.DataSource, DataTable)
  47.  
  48.             ' Actualizamos los datos
  49.             '
  50.             adaptador3.Update(dt3)
  51.            
  52.             MsgBox("Datos Guardados ")
  53.  
  54.  
  55.         Catch ex As Exception
  56.             MsgBox("Datos sin guardar")
  57.         End Try
  58.  
  59.  
  60.         'limpiar el datagridview1
  61.  
  62.  
  63.         setdate3.Tables.Clear()
  64.  
  65.  
  66.     End Sub
  67.  
  68. End Class

Pues aqui mas de lo mismo. Hago exactamente lo mismo que en el Form2. Los datos modificados se reflejan en el Datagridview1, pero al actualizar(update) no se graban los datos en la tabla de access.

Los nombres de los datasets, bindingsource y adaptadores pueden ser los mismos en los dos forms? No se si iran por ahi los tiros... En los dos forms tengo un LbDataSet1...

alguna ayudita....... por favor...... que llevo dos dias con ésto y no se como seguir p'alante.....

gracias

iosu