Autor Tema: DataGridView no actualiza Base De Datos Visual Basic  (Leído 4471 veces)

titoct200

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
    • El Rincón de Titoct200
DataGridView no actualiza Base De Datos Visual Basic
« en: 24 de Noviembre 2015, 23:02 »
Buenas noches.

A  ver, yo estudié VB 6, y ahí era más fácil este tema. Yo tengo una BD access, y tengo un formulario donde hay un DGV conectado a una tabla, y aparte tengo unos TextBox, lógicamente con los NAMES cambiados, conectados tb  la tabla.

En la parte superior me aparece el navegador de registros por defecto: con su  selector, su adición, su borrado...

Mi problema es que cuando añado, modifico o borro registros, luego no graba a BD.

  Tengo que decir que estoy con una BD de ACCESS.  Este es mii código (tengo 3 tablas, pero sería similar):

Código: [Seleccionar]
Public Class FormPRO

 
    Private Sub ProfesoresBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles ProfesoresBindingNavigatorSaveItem.Click
        Me.Validate()
        Me.ProfesoresBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.AcaInglesDataSet)

    End Sub

    Private Sub FormPRO_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'TODO: esta línea de código carga datos en la tabla 'AcaInglesDataSet.Profesores' Puede moverla o quitarla según sea necesario.
        Me.ProfesoresTableAdapter.Fill(Me.AcaInglesDataSet.Profesores)
        EtqTitPro.Text = "Añadir " & vbCrLf & " Profesores"
    End Sub

    Private Sub TodoToolStripButton_Click(sender As System.Object, e As System.EventArgs)
        Try
            Me.ProfesoresTableAdapter.Todo(Me.AcaInglesDataSet.Profesores)
        Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub SalirToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs)
        Dim valor As Integer
        valor = MsgBox("¿Cerrar Profesores?", vbYesNo, "Academia de Inglés")
        If valor = 6 Then
            End
        Else
            Me.Close()

        End If

    End Sub

    Private Function CalcularGastos() As Double
        Dim f As Integer
        Dim total As Double = 0
        For f = 0 To DGVProfesores.RowCount - 1 Step 1
            total = total + Convert.ToDouble(DGVProfesores.Item(7, f).Value)
            total = total + Convert.ToDouble(DGVProfesores.Item(8, f).Value)
            total = total + Convert.ToDouble(DGVProfesores.Item(9, f).Value)
        Next
        Return total
    End Function

    Private Sub btnCerrar_Click(sender As System.Object, e As System.EventArgs) Handles btnCerrar.Click
        FormPral.txtTGastos.Text = txtGastos.Text
        Me.Close()

    End Sub

    Private Sub txtDNI_Leave(sender As System.Object, e As System.EventArgs) Handles txtDNI.Leave
        If txtDNI.TextLength > 9 Then
            MsgBox("No puede meter más de 9 caracteres", vbOKOnly, "Acaddemia de Inglés")
            txtDNI.Text = ""
            txtDNI.Focus()

        End If
    End Sub

    Private Sub btnCalcGastos_Click(sender As System.Object, e As System.EventArgs) Handles btnCalcGastos.Click

        txtGastos.Text = Convert.ToString(CalcularGastos())
        FormPral.totalGastos = txtGastos.Text & " €"

    End Sub

    Private Sub txtTel_Leave(sender As System.Object, e As System.EventArgs) Handles txtTel.Leave
        If txtTel.TextLength > 9 Then
            MsgBox("No puede meter más de 9 caracteres", vbOKOnly, "Acaddemia de Inglés")
            txtTel.Text = ""
            txtTel.Focus()

        End If
    End Sub

    Private Sub BindingNavigatorAddNewItem_Click(sender As System.Object, e As System.EventArgs) Handles BindingNavigatorAddNewItem.Click
        txtId.Focus()

    End Sub
End Class

He mirado un montón de ejemplos, pero todos utilizan conexiones por código. Yo soy una  persona con problemas físicos y lo que me iteresa es ahorrarme código.No ostante, tb podría hacerme un módul BAS y hacer la conexión por código.

 Muchas gracias
« Última modificación: 26 de Noviembre 2015, 08:25 por Ogramar »
Si las normas de uso de un foro impiden hablar de un tema concreto, que ese foro sea coherente con esa regla.
¿Razón? Mundoplus.s

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:DataGridView no actualiza Base De Datos Visual Basic
« Respuesta #1 en: 26 de Noviembre 2015, 08:26 »
Hola titoct200, para pegar código en los foros por favor hazlo como se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0, si no lo haces así no queda bien formateado

Pienso que lo que se comenta en https://www.aprenderaprogramar.com/foros/index.php?topic=2980.0 te pueda servir de ayuda

También en este hilo se comenta https://www.aprenderaprogramar.com/foros/index.php?topic=1485.0

Salu2

titoct200

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
    • El Rincón de Titoct200
Re:DataGridView no actualiza Base De Datos Visual Basic
« Respuesta #2 en: 26 de Noviembre 2015, 13:58 »
Ahh, vale, con las etiquetas "code". De acuerdo.  Perdóname.

  Muchas racias, a ver si soluciono esto

Si las normas de uso de un foro impiden hablar de un tema concreto, que ese foro sea coherente con esa regla.
¿Razón? Mundoplus.s

titoct200

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
    • El Rincón de Titoct200
Re:DataGridView no actualiza Base De Datos Visual Basic
« Respuesta #3 en: 26 de Noviembre 2015, 15:59 »
Gracias por la respuesta, pero puede  que no me haya explicado bien.

  A ver, estoy hablando desde el modo DISEÑO (si no hay otra solución, veré la forma de implementar un  módulo BAS para montar una conexion el plan text).. En el momento en que yo arrastro una tabla del dataset al form como DGV, se me crea abajo:
 * AcaInglesDataSet
 * ProfesoresBindingSource
 * ProfesoresTableAdapter
 * TableAdapterManager
 * ProfesoresBindingNavigator
 
  Al lado del DGV, arrastro la misma tabla del DGV, pero como DETALLES, con lo cual automáticamente me aparecen los TextBox (y sus etiquetas) conectados a sus respectivos campos en  la BD access, textBox's a los que le cambio el nombre por cuestiones de comodidad.

 Yo recuerdo que en Visual Basic 6, cuando se utilizaba un recordset (que ahí habían métodos como moveFirst, MoveLAST, etc.) se podía administrar la BD a través del objeto Recordset de ADO, y con esos métodos, yo me hacía mis propios botones, poniendo entonces la propiedad VISIBLE del control ADO a FALSE, con lo cual no se veía y quedaba la aplicación  curiosita.  ¿Esto mismo  se puede hacer ahora con el 2010 o 2015?

  Yo lo único quee quiero saber es si existe algún método, algún sistema, alguna arquitectura para conseguirlo.  Muchas gracias
« Última modificación: 26 de Noviembre 2015, 16:07 por titoct200 »
Si las normas de uso de un foro impiden hablar de un tema concreto, que ese foro sea coherente con esa regla.
¿Razón? Mundoplus.s

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:DataGridView no actualiza Base De Datos Visual Basic
« Respuesta #4 en: 28 de Noviembre 2015, 14:57 »
Buenas no entiendo bien por qué piensas que es necesario crear un módulo bas. En este hilo https://www.aprenderaprogramar.com/foros/index.php?topic=2980.0 no se comenta nada de que sea necesario crear un  módulo bas pero a lo mejor es que no estoy enteniendo bien

Salu2

titoct200

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
    • El Rincón de Titoct200
Re:DataGridView no actualiza Base De Datos Visual Basic
« Respuesta #5 en: 28 de Noviembre 2015, 15:17 »
Muchas gracias. De momento ya está solucionado.

 Una pregunta: ¿Es posible ver el código de los botones de la barra superior que te inserta al añadir un origen de datos? Porque al darle doble click se crea otro evento click. El objetivo es personalizar esos botones: pa atrás, pa alante, primero, último,  etc.

Saludos
Si las normas de uso de un foro impiden hablar de un tema concreto, que ese foro sea coherente con esa regla.
¿Razón? Mundoplus.s

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:DataGridView no actualiza Base De Datos Visual Basic
« Respuesta #6 en: 30 de Noviembre 2015, 12:56 »
Buenas si haces doble click sobre por ejemplo un DataGridView te inserta el código correspondiente al evento click:

    Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick

    End Sub

Al mismo tiempo en la parte superior de la ventana de código aparecen dos combobox desplegables, uno que pone DataGridView1 y otro que pone CellContentClick.

Si seleccionas en el combobox de eventos otro evento, te aparecerá el código para ese evento, por ejemplo si seleccionas CellEndEdit te aparecerá:

    Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit

    End Sub

Este código digamos que es el código marco para escribir un código de respuesta al evento seleccionado, en este caso sería para respuesta al evento CellEndEdit

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".