none
TableAdapter y DataTable RRS feed

  • Pregunta

  •  

    Hola a todos,

    quería saber algún sitio o de alquien que me explique como a un niño de 3 años la diferencia y el significado de estos dos objetos. Del datatable más o menos lo sé, pero del tableadapter no. En visual studio sé manejarlo siguiendo los ejemplos pero no llego a entenderlo.

     

    saludos a todos y gracias de antemano

    • Cambiado Fran DiazModerator jueves, 9 de julio de 2009 10:57 -3 (De:DCE2005- Tercera Estrella)
    domingo, 2 de diciembre de 2007 18:35

Respuestas

  • Bueno... pues como si tuvieramos 3 años....

     

    Imagínate una tienda de caramelos en la que el mostrador repleto de dulces está cerrado con llave, hay un vendedor, y te presentas tú con tu bolsita.

     

    La conexión sería la llave que abriría el mostrador y que permitiría llegar a los caramelos, pero como buen niño que eres, sabes que no puedes tocar los caramelos directamente, sinó que has de pedir las cosas. Si quieres caramelos se los debes pedir al vendedor, que usando la "conexión" (la llave) puede coger los caramelos que le pidas, y ponerlos en tu bolsa, tú DataTable. En este escenario el TableAdapter es el vendedor, que es quien atiende a tus peticiones (comandos SQL) y los refleja en una DataTable(bolsa) mediante una conexión (llave).

     

    Ah! Y fueron felices y comieron perdices!

     

    Salud y suerte!

    domingo, 2 de diciembre de 2007 19:48
  • En mi "fábula" el mostrador no es el Dataset, sinó la base de datos. El DataSet podría ser el carrito de la compra, es decir, una bolsa más completa que la bolsa inicial que representaba el DataTable. En el carrito de la compra podrías tener varias bolsas, un apara chuches, otra para refrescos... pues igual un Dataset con sus DataTables.

     

    A la pregunta de si: "Y si quiero refrescos?" Pues aquí depoendes de la llave (conexión) que te ha abierto el mostrador (base de datos). Si en el mismo mostrador de las chuches hay refrescos, no hay problema, el mismo vendedor te puede atender. Si los refrescos están en otro mostrador tienes dos opciones que son tal cual la vida misma. Puedes obtar por que el mismo vendedor cuando acabe del mostrador de las chuches, lo cierre, coja la llave del mostrador de los refrescos, lo abra, y te atienda, o por lo contrario, si quiero ir piediendo chuches y refrescos a la vez, según me vengan los antojos, pues entonces necesitaré que me atiendan dos vendedores.

     

    La verdad es que se lo he explicado a mi hijo... y creo que no lo ha pillado, pero es que todavía le falta un año y una semana para los tres... con lo que...

     

    lunes, 3 de diciembre de 2007 10:28
  • JajajajAJajaja!!! No ha estado mal!

     

     

    Recuerda marcar el hilo como contestado. Gracias!

    lunes, 3 de diciembre de 2007 12:01

Todas las respuestas

  • Bueno... pues como si tuvieramos 3 años....

     

    Imagínate una tienda de caramelos en la que el mostrador repleto de dulces está cerrado con llave, hay un vendedor, y te presentas tú con tu bolsita.

     

    La conexión sería la llave que abriría el mostrador y que permitiría llegar a los caramelos, pero como buen niño que eres, sabes que no puedes tocar los caramelos directamente, sinó que has de pedir las cosas. Si quieres caramelos se los debes pedir al vendedor, que usando la "conexión" (la llave) puede coger los caramelos que le pidas, y ponerlos en tu bolsa, tú DataTable. En este escenario el TableAdapter es el vendedor, que es quien atiende a tus peticiones (comandos SQL) y los refleja en una DataTable(bolsa) mediante una conexión (llave).

     

    Ah! Y fueron felices y comieron perdices!

     

    Salud y suerte!

    domingo, 2 de diciembre de 2007 19:48
  • Me encanta tu ejemplo pero tengo otro pero (valga la redundancia).

     

    Y si además de las chuches quiero un refresco, ¿tengo que pedírselo al mismo vendedor (TableAdapter) o tengo que pedírselo a otro vendedor?

    Supongo que el mostrador es el dataset y no sé si tengo que ir (o sea hacer otro dataset) a otro mostrador y pedirle el refresco al vendedor o pedirlo al mismo vendedor que me dió las chuches.

     

    En otras palabras:

    Hay que crear otra tableadapter para refrescos o otro DSRefrescos o no hace falta.

     

     

    DATASET

    DATATABLE

    TABLEADAPTER

    DSChuches

    ChuchesDB

    Namespace ChuchesDataSetTableAdapters

     

    Para tener acceso:

     

    Dim ChuchesDS as new DSChuches

    Dim ChuchesTableAdapter as New _

                ChuchesDataSetTableAdapters.ChuchesTableAdapter

    ChuchesTableAdapter.Fill(ChuchesDS.Chuches)

     

    No sé si me he explicado bien, me repito muchas veces, verdad.

     

    gracias por todo

     

     

     

    lunes, 3 de diciembre de 2007 10:15
  • En mi "fábula" el mostrador no es el Dataset, sinó la base de datos. El DataSet podría ser el carrito de la compra, es decir, una bolsa más completa que la bolsa inicial que representaba el DataTable. En el carrito de la compra podrías tener varias bolsas, un apara chuches, otra para refrescos... pues igual un Dataset con sus DataTables.

     

    A la pregunta de si: "Y si quiero refrescos?" Pues aquí depoendes de la llave (conexión) que te ha abierto el mostrador (base de datos). Si en el mismo mostrador de las chuches hay refrescos, no hay problema, el mismo vendedor te puede atender. Si los refrescos están en otro mostrador tienes dos opciones que son tal cual la vida misma. Puedes obtar por que el mismo vendedor cuando acabe del mostrador de las chuches, lo cierre, coja la llave del mostrador de los refrescos, lo abra, y te atienda, o por lo contrario, si quiero ir piediendo chuches y refrescos a la vez, según me vengan los antojos, pues entonces necesitaré que me atiendan dos vendedores.

     

    La verdad es que se lo he explicado a mi hijo... y creo que no lo ha pillado, pero es que todavía le falta un año y una semana para los tres... con lo que...

     

    lunes, 3 de diciembre de 2007 10:28
  • Yo ya lo he pillado, la verdad es que soy un poco mayor que tu hijo. Mi duda se resuelve aquí:

     

    Si en el mismo mostrador de las chuches hay refrescos, no hay problema, el mismo vendedor te puede atender.

     

    Sería:

     

    chuchesTableAdapter.Fill(ChuchesDS.Chuches)

    y después

    chuchesTableAdapter.Fill(ChuchesDS.Refrescos)

     

    Muchas gracias, me he divertido mucho con tu explicación.

    lunes, 3 de diciembre de 2007 11:38
  • JajajajAJajaja!!! No ha estado mal!

     

     

    Recuerda marcar el hilo como contestado. Gracias!

    lunes, 3 de diciembre de 2007 12:01
  • Hola

    muy bueno el ejemplo, pero una pregunta

    que pasa si en la primera consulta quiero dulces rojos, y mas adelante quiero dulces amarillos.

    tendria que pedir un nuevo carro de compras (DataSet), o un nuevo vendedor (TableAdapter)


    DulcesTablaAdapter.FillDulcesRojos(DataSet.TablaDulces);



    DulcesTablaAdapter.FillDulcesAmarillos(DataSet.TablaDulces);


    hay alguna otra forma para realizarlo?

    Saludos
    viernes, 6 de junio de 2008 5:50
  • Evidentemente la conexión(llave) y el vendedor(TableAdapter) serán los mismos.

    En cuanto a los dulces de fresa y de limón tenemos dos opciones:

    1. Si tienes la bolsa llena de chuches de fresa y quieres de limón puedes usar la misma bolsa, pero aplicando la forma de pensar informática resultaría una situación un poco extraña, por que no le puedes pedir al vendedir que te añada a la bolsa los caramelos de limón, sino que el pedido tendría que ser "quiero caramelos de limón y fresa en la bolsa", descartando por decirlo de algún modo los caramelos de fresa que ya tenía.

    2. Como comentas, cojo otra bolsa y hago un pedido sólo de caramelos de limón.

    Espero haberme explicado... Wink
    viernes, 6 de junio de 2008 6:58
  •  

    Hola

     

    sabes que no me quedo muy claro eso ultimo

     

    lo que en realidad necesito es que para cada consulta dentro de una misma tabla (dulces por ejemplo) la quiero dejar en un combobox diferente, y para esto, ¿tengo que utilizar dos tableadapter? o dos dataset??? o puedo reutilizar el mismo tableadapter con su dataset para las dos consultas como lo deje antes puesto

     

     

    DulcesTablaAdapter.FillDulcesRojos(DataSet.TablaDulces);

     

    y luego la segunda consulta

     

    DulcesTablaAdapter.FillDulcesAmarillos(DataSet.TablaDulces);

     

     

    o tengo un error de conceptos

     

    espero que me puedas ayudar

     

    saludos.

    sábado, 7 de junio de 2008 2:51
  • Tal y como lo veo yo con un TableAdapter haces, lo que necesitarás es un DataTable por Combo.

    Salud!
    domingo, 8 de junio de 2008 20:00
  • Hola

    me podrias dar un codigo de ejemplo por favor, que un tableadapter llene dos combobox o lo que sea, que este relacionados con un dataset y bueno como ocuparia los dos datatable

    me ayudarias mucho si me pudieras dar ese ejemplo

    gracias y saludos
    martes, 10 de junio de 2008 21:34