none
Modificar Tabla y DataSet

    Question

  • Acabo de añadir un nuevo campo a una tabla en el Server explorer, pero veo que en el DataSource Tab no se hizo ningun cambio en el DataSet

    Que tengo que hacer para ver el campo añadido en el DataSet o es que esto no ocurre igual como se generó automaticamente al comienzo?


    MauricioIvan

    Monday, January 11, 2010 3:57 PM

Answers

  • hola

    para realziar la actualziacion tienes dos formas:

    - creas manualmente el campo que has agregado en el datatable de forma manual
    me refiero a la opcion "column" de esta imagen


    - o eliminas el datatable quwe representa la tabla y vuelves a arrastrarlo desde el solution explorer


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by MauricioIvan Monday, January 11, 2010 4:33 PM
    Monday, January 11, 2010 4:20 PM
  • hola

    si recuerdo el ejemplo pero ten en cuenta que aqui no estabas usando dataset tipados
    con estos cambian un poco la cosa ya que no necesitas usar
    lineas como ser
    row.Item("Codigo") = TextBox1.Text
    row.Item("Descripcion") = TextBox2.Text

    ya que si creas una instacia del datatable tipado puntualmente tendras los nombres de las columnas

    row.Codigo = TextBox1.Text
    row.Descripcion = TextBox2.Text

    prueba de crear una instancia de un dataset tipado que hayas creado vas a ver que puedes acceder a los nombres de la columnas directamente ya que justamente el dataset tipado genera codigo para quee esto suceda


    con respecto al punto 3 y 5
    en realidad no son parecidad tienen funciones muy distintas, uno crear una copia de la estructura de una fila del datatable, dejando preparado el objeto DataRow para poder ser cargado, o sea cargas la fila con los datos
    el otro lo que hace es agregar a la coleccion de filas la nueva creada en base a la estructura que se ha definido en el datatable
    con el dataset tipado esto se puede hacer pero totalmente tipado crrando objetos concretos, no tan genricos como en este ejemplo

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by MauricioIvan Tuesday, January 12, 2010 12:24 PM
    Tuesday, January 12, 2010 4:25 AM
  • hola

    por tipado se entiende que esta definido, que conoces el "tipo" del objeto, que sabes de las propiedades que posee, como esta definido, la estructura
    o se ala estructura no es dinamica, sino que fue definida en tiempo de diseño

    cuando usas un dataset normal este no es tipado ya que no sabes de antemano cuales son sus propeidades
    es por ello que para acceder a una columna usas un string

    Dim desc As String = CStr(row("descripcion"))

    es tipado cuando puedes mientras codificas poner punto y se listan als propiedades que este objeto posee
    es proe so que en ele ejemplo anterior usaba

    Dim desc As String = row.descripcion

    ademas este ya tiene un tipo de dato especifico, sabes que es una descripcion de tu entidad y es del tipo string

    en cambio en el anterior no sabias el tipo por eso se uso el CStr, para convertirlo a string

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by MauricioIvan Tuesday, January 12, 2010 2:34 PM
    Tuesday, January 12, 2010 12:51 PM

All replies

  • hola

    para realziar la actualziacion tienes dos formas:

    - creas manualmente el campo que has agregado en el datatable de forma manual
    me refiero a la opcion "column" de esta imagen


    - o eliminas el datatable quwe representa la tabla y vuelves a arrastrarlo desde el solution explorer


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by MauricioIvan Monday, January 11, 2010 4:33 PM
    Monday, January 11, 2010 4:20 PM
  • Hola leandro, gracias por tu respuesta. Respecto a la primera opcion, en la Imagen veo que creas un datatable y luego le adicionas una columna.

    Te pregunto, si lo actualizo desde la segunda opcion, arrastrandolo nuevamente, y no uso el diseñador, lo puedo llamar directamente desde el codigo?

    Como sería la diferencia entre las dos?

    Gracias leandro


    MauricoIvan 

    Monday, January 11, 2010 6:25 PM
  • O mas bien me refirero al llamado o uso posterior del nuevo DataTable


    Sorry



    MauricioIvan
    Monday, January 11, 2010 6:48 PM
  • hola

    la diferencia es que en la priemra agregando la columan tu controlas el cambio
    y por ejemplo si has agregado a tu tablaadapter metodos creados por ti no los perderias al eliminar el datatable
    pero la actualziacion no solo debes agregar el campo, sino ademas modificar las consultas sql que hacen usod el mismo en el tabla adapter

    la segunda opcion es ams simple elimians y arrastras, pero si has realizado cambios puntuales los perderias


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Monday, January 11, 2010 6:54 PM
  • Leandro, seguramente recordaras este ejemplo del año pasado. Es un compuesto de una respuesta tuya complementada en esta de Enrique, Lo tengo muy en cuenta siempre porque a menos que me equivoque, es una muy buena muestra de lo que se podria llamar en mi arcaico lenguaje , el viejo I/O.  o meter y sacar datos., pasar de memoria al disco o cosa asi.


    ·                         ¡Vamos a ver! Si tu intención es actualizar la base de datos sin utilizar los controles TextBox que se encuentran enlazados a datos, es decir, cuando hagas clic en el botón de color rojo llamado «Pase a la DB», tienes que hacerlo de la siguiente manera:

        Private Sub Button1_Click( ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

            Try
                '1. Referenciamos el objeto DataSet que se encuentra enlazado con el control TablaNovBindingSource
                     Dim ds As DataSet = Me.TablaNovBindingSource.DataSource

                '2. Referenciamos el objeto DataTable llamado TablaNov
                     Dim dt As DataTable = ds.Tables("TablaNov")

                '3. Añadimos un nuevo registro           
                     Dim row As DataRow = dt.NewRow

                '4. Especificamos los valores de los campos        
                     row.Item("Codigo") = TextBox1.Text
                     row.Item("Descripcion") = TextBox2.Text

                '5. Añadimos el registro al objeto DataTable.
                     dt.Rows.Add(row)

                '6.  Actualizamos la base de datos
                      Dim n As Integer = Me.TableAdapterManager.UpdateAll(Me.DataBase_NovDataSet)

                '7. Aceptamos los cambios efectuados en el objeto DataTable.
                     dt.AcceptChanges()

                '8. Comprobamos si se ha añadido el registro.                                                                                          
                    
    If n > 0 Then
                           MessageBox.Show("Registro añadido.")
                    End If

                   Catch ex As Exception
                           MessageBox.Show(ex.Message)

                   End Try

        End Sub


    En los puntos 3 y 4, el contenido de los textbox1 y 2, que va a ser metido en el datatable del punto nro. 5, donde esta en ese momento?

    lo que quiero tener claro son esas dos instrucciones tan parecidas del punto 3 dt.NewRow y el punto 5 dt.Rows.Add(Row)

    Gracias


    MauricioIvan


    Tuesday, January 12, 2010 1:02 AM
  • hola

    si recuerdo el ejemplo pero ten en cuenta que aqui no estabas usando dataset tipados
    con estos cambian un poco la cosa ya que no necesitas usar
    lineas como ser
    row.Item("Codigo") = TextBox1.Text
    row.Item("Descripcion") = TextBox2.Text

    ya que si creas una instacia del datatable tipado puntualmente tendras los nombres de las columnas

    row.Codigo = TextBox1.Text
    row.Descripcion = TextBox2.Text

    prueba de crear una instancia de un dataset tipado que hayas creado vas a ver que puedes acceder a los nombres de la columnas directamente ya que justamente el dataset tipado genera codigo para quee esto suceda


    con respecto al punto 3 y 5
    en realidad no son parecidad tienen funciones muy distintas, uno crear una copia de la estructura de una fila del datatable, dejando preparado el objeto DataRow para poder ser cargado, o sea cargas la fila con los datos
    el otro lo que hace es agregar a la coleccion de filas la nueva creada en base a la estructura que se ha definido en el datatable
    con el dataset tipado esto se puede hacer pero totalmente tipado crrando objetos concretos, no tan genricos como en este ejemplo

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by MauricioIvan Tuesday, January 12, 2010 12:24 PM
    Tuesday, January 12, 2010 4:25 AM
  • Hola leandro, gracias nuevamente. La palabra typado, o el tipo typado, que es exactamente. Bueno, si se puede explicar en palabras sencillas.

    Se puede aplicar la definicion de tipo en ingles type a Clase, Estilo (Style) Model (modelo).   Lo que quiero es ENTENDER una definico sencilla del termino tipado

    Ojala tu pudieras hacerme ese favor para poder avanzar con mayor firmesa.

    Gracias mil


    MauricioIvan 
    Tuesday, January 12, 2010 12:31 PM
  • hola

    por tipado se entiende que esta definido, que conoces el "tipo" del objeto, que sabes de las propiedades que posee, como esta definido, la estructura
    o se ala estructura no es dinamica, sino que fue definida en tiempo de diseño

    cuando usas un dataset normal este no es tipado ya que no sabes de antemano cuales son sus propeidades
    es por ello que para acceder a una columna usas un string

    Dim desc As String = CStr(row("descripcion"))

    es tipado cuando puedes mientras codificas poner punto y se listan als propiedades que este objeto posee
    es proe so que en ele ejemplo anterior usaba

    Dim desc As String = row.descripcion

    ademas este ya tiene un tipo de dato especifico, sabes que es una descripcion de tu entidad y es del tipo string

    en cambio en el anterior no sabias el tipo por eso se uso el CStr, para convertirlo a string

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by MauricioIvan Tuesday, January 12, 2010 2:34 PM
    Tuesday, January 12, 2010 12:51 PM
  • Gracias Leandro, desafortunadamente ya se me acabaron los preciosos minutos de mis dias libres, los que trato de aprovechar al maximo como ya sabes, espero con esto haberle hechado otra "capita al cimiento" VB a ver si algun dia puedo desarrollar.

    Saludos y Gracias


    MauricioIvan
    Tuesday, January 12, 2010 2:36 PM