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:
Imports System.Data.DataRow
Imports System.Data.OleDb
Public Class Form2
Private dt As New DataTable 'objeto DataTable
Private da As New OleDbDataAdapter 'DataAdapter
Private modificado As Integer = 0
Dim conexion As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=lb.mdb; User Id=admin;Password=;")
Dim adaptador As New OleDbDataAdapter("SELECT * FROM ordutegia", conexion)
Dim setdate As New DataSet
' Creo un objeto CommandBuilder para actualizar los datos
Dim cmdBuilder As New OleDbCommandBuilder(adaptador)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
With adaptador
.InsertCommand = cmdBuilder.GetInsertCommand
.DeleteCommand = cmdBuilder.GetDeleteCommand
.UpdateCommand = cmdBuilder.GetUpdateCommand
End With
Dim dt As DataTable = DirectCast(Me.DataGridView1.DataSource, DataTable)
' Actualizamos los datos
'
adaptador.Update(dt)
MsgBox("Datos Grabados ")
Catch ex As Exception
MsgBox("Datos NO Grabados")
End Try
'limpiar el datagridview1
setdate.Tables.Clear()
Close()
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: esta línea de código carga datos en la tabla 'LbDataSet1.ordutegia' Puede moverla o quitarla según sea necesario.
Me.OrdutegiaTableAdapter.Fill(Me.LbDataSet1.ordutegia)
modificado = 0
adaptador.Fill(setdate)
DataGridView1.DataSource = setdate.Tables(0)
End Sub
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:
Imports System.Data.DataRow
Imports System.Data.OleDb
Public Class Form3
Private dt3 As New DataTable 'objeto DataTable
Private da3 As New OleDbDataAdapter 'DataAdapter
Dim conexion3 As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=lb.mdb; User Id=admin;Password=;")
Dim adaptador3 As New OleDbDataAdapter("SELECT * FROM jaiegunak", conexion3)
Dim setdate3 As New DataSet
' Creo un objeto CommandBuilder para actualizar los datos
Dim cmdBuilder3 As New OleDbCommandBuilder(adaptador3)
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: esta línea de código carga datos en la tabla 'LbDataSet1.jaiegunak' Puede moverla o quitarla según sea necesario.
Me.JaiegunakTableAdapter.Fill(Me.LbDataSet1.jaiegunak)
adaptador3.Fill(setdate3)
DataGridView1.DataSource = setdate3.Tables(0)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Close()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
With adaptador3
.InsertCommand = cmdBuilder3.GetInsertCommand
.DeleteCommand = cmdBuilder3.GetDeleteCommand
' .UpdateCommand = cmdBuilder3.GetUpdateCommand
End With
Dim dt3 As DataTable = DirectCast(Me.DataGridView1.DataSource, DataTable)
' Actualizamos los datos
'
adaptador3.Update(dt3)
MsgBox("Datos Guardados ")
Catch ex As Exception
MsgBox("Datos sin guardar")
End Try
'limpiar el datagridview1
setdate3.Tables.Clear()
End Sub
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