none
Modificar con el datagrid el origen de datos automáticamente. RRS feed

  • Pregunta

  • <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:595.3pt 841.9pt; margin:70.85pt 3.0cm 70.85pt 3.0cm; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

    Hola. Haber si alguien me ayuda.

    En mi proyecto de visual studio tengo un datagridview enlazado con una tabla de una base de datos SQL. Cuando en el datagridview añado un nuevo registro y le doy a update, también me añade el registro en la tabla de origen, sin embargo, cuando elimino o modifico algo, la cosa se complica, ya que tengo que escribir el código correspondiente para ello. En visual basic 6 usábamos un componente (un datagrid distinto) que al conectarse a una base de datos, cualquier modificación que hacías en el datagrid también lo hacia en el origen directamente, es decir, que al modificar el datagrid, era como si modificabas directamente con el SQL Server.

    Mi pregunta es: hay alguna forma de hacer esto mismo con el datagrid propio de visual studio, o instalando el Enterprise Library o alguna otra cosa?

    Saludos y gracias.

    jueves, 16 de julio de 2009 14:10

Todas las respuestas

  • hola azti, como consejo te doy que no uses directamente en la interfaz el dataset con tableadapters, busca de programar algo en capas y crea los metodos addone, update, getone, getall en tu clase de negocio y desde la interfaz llama a esos metodos cuando quieras, por experiencia en programar aplicaciones windows con dataset que tienen muchas tablas con tablaadapters y muchos metodos se vuelve pesado modificar los dataset y de vez en cuanto se explotan por decirlo en forma literal
    o tenes que tener una supercomputadora para tirar visual cuando editas y modificas esos dataset que en definitiva son clases

    en los ejemplos de internet siempre te dan una tablita simple y ahi puede andar pero cuando tenes una base de datos realmente grande y de produccion se hace pesado programar con dataset atados a un origen de datos y tableadpaters


    - con respecto a tu pregunta, yo uso un formulario para mostrar la grilla con todos los registros de una tabla por ejemplo de localidades y tengo los botones agregar, modificar y borrar
    -directamente no dejo modificar en la grilla
    -para el alta o la modificacion lo hago en un segundo formulario de edicion
    -para borrar lo hago en el primer formulario


    las cosas automaticas pueden parecer lindas al principio pero despues se complica si no tenemos un buen conocimiento del tema ya que no sabemos luego que hacer para que haga algo simple pero automático

    el dataset trabaja en modo desconectado por lo que podes hacer cambios en él, pero no significa que se realizen en la base de datos hasta que lo confirmes con algun metodo

    por ejemplo en el boton borrar si trabajas con tablaadapters ydataset:

    'borro un registro
    
    Me.LetraBindingSource.RemoveCurrent()
    
    'finalizo la edicion del binding
    Me.LetraBindingSource.EndEdit()
    'con el apadtador actualizo en la base de datos el registro que borre con el metodo removecurrent
    Me.LetraTableAdapter.Update(Me.LetraDataSet.letra)

     

    con el removecurrent solo boras en el dataset en memoria pero no en la base de datos, si ejecutas despues de borrar con el removecurrent el update se actualiza el borradoen la tabla de la base de datos


    la otra es que despues de modificar varios datos en la grilla, ya sea agregar, modificar o borrar
    ejecutes

     

    'finalizas la edicion
    Me.LetraBindingSource.EndEdit()
    'aplicas los cambios al datatable letra
    Me.LetraDataSet.letra.AcceptChanges()
    
    'actualiza en la tabla de la base de datos
    Me.LetraTableAdapter.Update(Me.LetraDataSet.letra)

    para descartar cambios de un datatable usas el metodo RejectChanges

     



    podrias ejecutar este codigo en algun boton del formulario por ajemplo "guardar cambios" y se te guardarian todos los cambios



    Saludos


    programador
    martes, 28 de julio de 2009 20:09