Probando los tableAdapters de vs2005

24/01/2006 - 20:26 por Carmelo J. Morales Muñoz | Informe spam
hola!

estoy intentando comprender un poco como va eso de los tableAdapters que
según dicen microsoft es para que nos olvidemos de los sqlCommand y
sqlDataAdapters.

Os pongo un poco de código para que me indiqueis si esto es la forma
correcta de trabajar ya que en la poca documentación que he encontrado no me
aclaro mucho


Este código que pongo lo que pretende es coger de un DataSet en el que he
creado un tableAdapter llamado ARTICULOS, y ejecutarlo, de manera que
devuelva un determinado número de filas.

¿es correcta estas líneas de código?.

// instancio al tableAdapter de artículos

DataSetArticulosTableAdapters.ARTICULOSTableAdapter articulos
new
ClassLibrary_Articulos.DataSetArticulosTableAdapters.ARTICULOSTableAdapter();


// Instancio un dataSet para almacenar los datos que me traeré mediante el
tableAdapter

DataSetArticulos.ARTICULOSDataTable dsArticulos = new
DataSetArticulos.ARTICULOSDataTable();


// Ejecuto el procedimiento almacenado que hay en el tableAdapter que me
llenará el dataSet y

// además me devolverá un long con los registros que se han devuelto.

long? numRegistrosDevueltos = 0;

articulos.Fill_ReferenciaDescripcion(dsArticulos,
tbReferencia.Text.ToString(), tbDescripcion.Text.ToString(),

ref numRegistrosDevueltos);

// Enlazo el visor con el dataSet.

dataGridView.DataSource = dsArticulos;

El caso es que funcionar funciona, pero no se si es el mejor modo
Gracias!

http://www.gestionagricola.com
http://www.carmelosoft.com

Preguntas similare

Leer las respuestas

#1 Misael Monterroca
25/01/2006 - 03:32 | Informe spam
El código es correcto.

Una de las ventajas es precisamente esta linea:
DataSetArticulos.ARTICULOSDataTable dsArticulos

Ya que TIENES que crear un DataTable especifico para la consulta que estás
relizando, este datatable tiene asignado un esquema(TypedDataSet) con lo
cual se realizan validaciones de tipos y demás.

Otra de las ventajas de utilizar es precisamente que puedes tener varios
métodos fill's asignados a diferentes consultas, pero que regresen la misma
información, por ejemplo

articulos.Fill(dsArticulos) <- dsArticulos es tu dataset typeado

Internamente la consulta seria "Select * from articulos"

articulos.FillById(dsArticulos,txtId.text) <- dsArticulos es tu dataset
typeado

Internamente la consulta seria "select * from articulo where id=@id"

o el que originalmente tienes

articulos.Fill_ReferenciaDescripcion(dsArticulos, tbReferencia.Text.,
tbDescripcion.Text,
Internamente la consulta seria (no sé por que solo tu tienes el detalle
jeje :P)

Entonces, en un mismo tableadapter puedes tener varias consultas asignadas
siempre y cuando el esquema regresado sea el mismo, por ejemplo no seria
valido un

articulos.FillByName(dsArticulos,txtId.text) <- dsArticulos es tu dataset
typeado

Internamente la consulta seria "select nombre from articulo where
id=@id"

Ya que suponiendo, * regresaria un id y name, si te das cuenta en la
anterior consulta solo estariamos regresando un solo campo, cuando tu
DataTable está esperando dos, id y name.

Bueno, espero no te haya enredado más

Saludos
Misael Monterroca - Microsoft Mvp C#
http://www.neo-mx.com/blogs/neo-mx


"Carmelo J. Morales Muñoz" escribió en el mensaje
news:
hola!

estoy intentando comprender un poco como va eso de los tableAdapters que
según dicen microsoft es para que nos olvidemos de los sqlCommand y
sqlDataAdapters.

Os pongo un poco de código para que me indiqueis si esto es la forma
correcta de trabajar ya que en la poca documentación que he encontrado no
me aclaro mucho


Este código que pongo lo que pretende es coger de un DataSet en el que he
creado un tableAdapter llamado ARTICULOS, y ejecutarlo, de manera que
devuelva un determinado número de filas.

¿es correcta estas líneas de código?.

// instancio al tableAdapter de artículos

DataSetArticulosTableAdapters.ARTICULOSTableAdapter articulos >
new
ClassLibrary_Articulos.DataSetArticulosTableAdapters.ARTICULOSTableAdapter();


// Instancio un dataSet para almacenar los datos que me traeré mediante el
tableAdapter

DataSetArticulos.ARTICULOSDataTable dsArticulos = new
DataSetArticulos.ARTICULOSDataTable();


// Ejecuto el procedimiento almacenado que hay en el tableAdapter que me
llenará el dataSet y

// además me devolverá un long con los registros que se han devuelto.

long? numRegistrosDevueltos = 0;

articulos.Fill_ReferenciaDescripcion(dsArticulos,
tbReferencia.Text.ToString(), tbDescripcion.Text.ToString(),

ref numRegistrosDevueltos);

// Enlazo el visor con el dataSet.

dataGridView.DataSource = dsArticulos;

El caso es que funcionar funciona, pero no se si es el mejor modo
Gracias!

http://www.gestionagricola.com
http://www.carmelosoft.com


Respuesta Responder a este mensaje
#2 Carmelo J. Morales Muñoz
25/01/2006 - 18:38 | Informe spam
hola !

Muchas gracias por tu explicación, porque aunque dices que lo he realizado
de forma correcta, no tenía muy claro si era el modo a seguir.

Con tu explicación me ha quedado mucho mas claro, llevo todo el día
utilizando y aprendiendo a utilizar las nuevas caracteristicas del
tableAdapter y me acabas de aclarar un problema con tenía, ya que en un
mismo tableAdapter devolvía dos conjuntos con tipos distintos (dos sql
distintas tenía para la consulta).

Nuevamente muchas gracias, sigo probando con este método que me está
gustando mucho y desecho el utilizar directamente el sqlCommand y
SqlDataAdapter.s (salvo que no quede otro remedio ya que he leido que
microsoft quiere que usemos estos).

Para finalizar me parece genial la forma de pasar y devolver parámetros,
antes era engorroso pasar gran cantidad y recuperar de un storeProc.

en fin, muchas gracias, me ha ayudadom ucho tu explicación!


http://www.gestionagricola.com
http://www.carmelosoft.com

"Misael Monterroca" <mmonterroca(@)neo-mx.com> escribió en el mensaje
news:%
El código es correcto.

Una de las ventajas es precisamente esta linea:
DataSetArticulos.ARTICULOSDataTable dsArticulos

Ya que TIENES que crear un DataTable especifico para la consulta que estás
relizando, este datatable tiene asignado un esquema(TypedDataSet) con lo
cual se realizan validaciones de tipos y demás.

Otra de las ventajas de utilizar es precisamente que puedes tener varios
métodos fill's asignados a diferentes consultas, pero que regresen la
misma información, por ejemplo

articulos.Fill(dsArticulos) <- dsArticulos es tu dataset typeado

Internamente la consulta seria "Select * from articulos"

articulos.FillById(dsArticulos,txtId.text) <- dsArticulos es tu dataset
typeado

Internamente la consulta seria "select * from articulo where id=@id"

o el que originalmente tienes

articulos.Fill_ReferenciaDescripcion(dsArticulos, tbReferencia.Text.,
tbDescripcion.Text,
Internamente la consulta seria (no sé por que solo tu tienes el detalle
jeje :P)

Entonces, en un mismo tableadapter puedes tener varias consultas asignadas
siempre y cuando el esquema regresado sea el mismo, por ejemplo no seria
valido un

articulos.FillByName(dsArticulos,txtId.text) <- dsArticulos es tu dataset
typeado

Internamente la consulta seria "select nombre from articulo where
id=@id"

Ya que suponiendo, * regresaria un id y name, si te das cuenta en la
anterior consulta solo estariamos regresando un solo campo, cuando tu
DataTable está esperando dos, id y name.

Bueno, espero no te haya enredado más

Saludos
Misael Monterroca - Microsoft Mvp C#
http://www.neo-mx.com/blogs/neo-mx


"Carmelo J. Morales Muñoz" escribió en el
mensaje news:
hola!

estoy intentando comprender un poco como va eso de los tableAdapters que
según dicen microsoft es para que nos olvidemos de los sqlCommand y
sqlDataAdapters.

Os pongo un poco de código para que me indiqueis si esto es la forma
correcta de trabajar ya que en la poca documentación que he encontrado no
me aclaro mucho


Este código que pongo lo que pretende es coger de un DataSet en el que he
creado un tableAdapter llamado ARTICULOS, y ejecutarlo, de manera que
devuelva un determinado número de filas.

¿es correcta estas líneas de código?.

// instancio al tableAdapter de artículos

DataSetArticulosTableAdapters.ARTICULOSTableAdapter articulos >>
new
ClassLibrary_Articulos.DataSetArticulosTableAdapters.ARTICULOSTableAdapter();


// Instancio un dataSet para almacenar los datos que me traeré mediante
el tableAdapter

DataSetArticulos.ARTICULOSDataTable dsArticulos = new
DataSetArticulos.ARTICULOSDataTable();


// Ejecuto el procedimiento almacenado que hay en el tableAdapter que me
llenará el dataSet y

// además me devolverá un long con los registros que se han devuelto.

long? numRegistrosDevueltos = 0;

articulos.Fill_ReferenciaDescripcion(dsArticulos,
tbReferencia.Text.ToString(), tbDescripcion.Text.ToString(),

ref numRegistrosDevueltos);

// Enlazo el visor con el dataSet.

dataGridView.DataSource = dsArticulos;

El caso es que funcionar funciona, pero no se si es el mejor modo
Gracias!

http://www.gestionagricola.com
http://www.carmelosoft.com






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida