none
Borrar datos DataGrid enlazado a un BindingSource RRS feed

  • Pregunta

  • Tengo este código para borrar datos de un DataGridView enlazado a una base de datos, pero nunca los borra, siempre me salta el error de que no he seleccionado un registro, a pesar de que sí selecciono un registro en el DataGrid. También, haciendo pruebas, si hago un TFechasBindingSource.Count me da siempre 0.

    Me resulta extraño, porque si no estuviera bien enlazado a la base de datos, tampoco se cargarían los datos que hay en el DataGridView.

        If Not Me.TFechasBindingSource.Current Is Nothing Then
          Me.TFechasBindingSource.RemoveCurrent()
          Me.TFechasBindingSource.EndEdit()
          Me.TableAdapterManager.UpdateAll(Me.BDAgendaDataSet)
        Else
          MsgBox("Seleccione registro para Borrar", MsgBoxStyle.Information, "Borrar")
        End If
    

     

    Gracias por la ayuda.

    • Cambiado Enrique M. Montejo miércoles, 21 de junio de 2017 6:34 Pregunta relacionada con controles de Windows Forms.
    domingo, 21 de noviembre de 2010 16:33

Todas las respuestas

  • hola

    http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/efefa2d1-fa3d-42fc-b216-e18f2e99e7d3

     

    - el dataset BDAgendaDataSet es el que se asigno al TFechasBindingSource en el DataSource ?

    - has probado no usar el EndEdit ?

    - si preguntas por el HasChange del DataSet, obtienes un true

    If BDAgendaDataSet.HasChanges() Then

      MessageBox.Show("ha cambios")

    End If

    - prueba de remover una posicion determinada

     BDAgendaDataSet.Rows(TFechasBindingSource.Position).Delete()

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 21 de noviembre de 2010 17:52
  • Hola.

    He comprobado y sí, el BDAgendaDataSet es el que está asignado al TFechasBindingSource

    También he probado a hacerlo sin el EndEdit, pero el error me lo da siempre en la línea anterior.

    El HasChange no se llega a ejecutar por lo mismo del EndEdit

    He probado a borrar una posición determinada, tanto con el Remove como con el RemoveAt, en ambos casos da error diciendo que ese registro no existe.

     

    Gracias por la ayuda.

    domingo, 21 de noviembre de 2010 21:10
  • He borrado todo lo hecho en el diseñador y lo he vuelto a arrastrar de nuevo para que creara de nuevo los objetos. Ahora tengo un nuevo BindingNavigator (había borrado el mio) y me he dado cuenta de algo curioso.

    Si ejecuto mi consulta y me aparecen en mi DataGridView los resultados, pongamos 2 resultados, en el BindingNavigator me aparecen el total de registros que hay en la base de datos, y no los 2 resultados de la consulta.

    La consulta se ejecuta y funciona bien, pero me parece que el DataGridView no está bien enlazado con el BindingSource y el BindingNavigator...

    domingo, 21 de noviembre de 2010 23:54
  • Sigo haciendo pruebas. Esta vez, se me ocurrió que quizá el problema venía al filtrar los datos en la consulta, por el tema de que en el BindingNavigator aparecen todos los registros de la base de datos, pero no en el DataGridView, así que modifiqué la consulta para que no filtrase nada y cargase todos los datos y sigue dando error lo haga como lo haga.

    Me.TFechasBindingSource.Remove(Me.TFechasDataGridView.SelectedRows)  <-------------- Aqui me salta el error, no se puede eliminar un registro que no existe
    Me.TFechasBindingSource.EndEdit()
    Me.TableAdapterManager.UpdateAll(Me.BDAgendaDataSet)

    Gracias.

    lunes, 22 de noviembre de 2010 20:58
  • SITUACIÓN:

    En el DataGridView que me muestra los datos de la consulta, tengo algunas columnas ocultas porque no me interesa mostrar todo (como el ID o la fecha actual). A la hora de guardar un nuevo registro, estoy intentando hacerlo sobre el mismo DataGridView, y por tanto (manualmente) solo se pueden añadir las columnas que aparecen.

    PREGUNTAS:

    1º ¿Como relleno los datos de las celdas que no aparecen en el DataGridView? Como la fecha actual y el ID.

    2º ¿Es mejor introducir los datos nuevos sobre un TextBox y usar solo el DataGridView para visualizar datos y no para todo (visualizar, añadir, editar y borrar datos)?

    3º ¿Puede ser que por este motivo me esté dando fallos al borrar, por que me faltan datos?

     

     

    lunes, 22 de noviembre de 2010 23:38
  • Hola

    ¿Has podido solucionar tu problema?

    Saludos

    Eduardo Portescheller
    jueves, 25 de noviembre de 2010 13:48
    Moderador
  • Pues no, desgraciadamente aun tengo el problema.

    Es un poco frustrante este tipo de problemas para gente inexperta como yo.

    jueves, 25 de noviembre de 2010 22:07
  • Tengo claro que el planteamiento de mi aplicación es erroneo y poco puedo hacer si falla ese planteamiento, pero no sé como plantearlo.

    Pensé que podia añadir un DataGridView donde se pudiera visualizar, añadir, editar y borrar el contenido de una base de datos, pero veo que no es tan sencillo, al menos para mis manos.

    Por tanto decidí que sería mejor si el DataGridView solo lo usara para visualizar, pero el problema que tengo es que mis controles no están "sincronizados".

    Voy a dejar aqui mi aplicación por si alguien puede y desea ayudarme. Yo sigo intentandolo dia a dia en mis ratos libres y leyendo documentación, pero aun no he encontrado la solución.

    http://www.adrive.com/public/4eac4077899b9cc7490e636a1356fe0d7c18ac42163b5e075a78c6080a149290.html

     

    Muchas gracias a todos.

    jueves, 25 de noviembre de 2010 22:20
  • tu codigo me resulto perfecto, yo no podia de otra forma, a mi a veces no me funcionan algunas cosas y me pasa cuendo modifico la estructura de las tablas y se me olvida actualizar el dataset, luego no puedes trabajar por datos nulos.

    7 años despues

    saludos

         

     


    guillermo javier lozano

    viernes, 16 de junio de 2017 21:57