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
 

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


Preguntas similares