Cómo: Realizar un filtro complejo en ADO.NET

Seleccione idioma Seleccione idioma
Id. de artículo: 321896 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Resumen

En ADO.NET, puede utilizar la propiedad DataView.RowFilter y el método DataTable.Select para filtrar un subconjunto de registros. Sin embargo, las expresiones que puede utilizar tienen limitaciones. En este artículo se muestra tres técnicas para evitar las limitaciones de las expresiones de filtro.

Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los Service Packs recomendados que necesitará:
  • Microsoft Visual Studio .NET instalado en un equipo que ejecuta un sistema operativo de Microsoft Windows compatible
En este artículo se supone que está familiarizado con los temas siguientes:
  • Aplicaciones de Windows de Microsoft Visual Basic .NET
  • Codificación de ADO.NET

Técnicas

Para evitar las limitaciones de las expresiones de filtro, puede utilizar uno de las siguientes tres técnicas:
  • Si no tienen nada enlazar las filas, puede agregar las filas que desee a una clase ArrayList . Esto devuelve resultados similares como el método DataTable.Select , que devuelve una matriz de objetos DataRow .
    Dim foundRows As New ArrayList()
    ' DataTable1 is an existing DataTable object. You want to select the second and fifth rows from this object.
    foundRows.Add(DataTable1.Rows(1))
    foundRows.Add(DataTable1.Rows(4))
    					
  • Agregar una columna booleana con un atributo de oculto a la DataTable para que esta columna no aparece en el DataGrid . Recorrer los registros, establecer el indicador donde corresponda y, a continuación, filtrar en la columna booleana. Este método funciona mejor cuando disponga de tablas que están relacionadas, cuando haya una exploración jerárquica y debe mantener la integridad referencial.
    'DataTable1 is an existing DataTable object.
    DataTable1.Columns.Add("Flag", GetType(Boolean))
    DataTable1.Columns("Flag").ColumnMapping = MappingType.Hidden
    Dim dr As DataRow
    For Each dr In DataTable1.Rows
      ' If the criteria are satisfied Then
          dr("Flag") = True
      ' End If
    Next
    Dim dv As New DataView(DataTable1, "Flag = True", "", DataViewRowState.CurrentRows)
    DataGrid1.DataSource = dv
    					
  • Crear un nuevo objeto DataSet y, a continuación, agregue un clon de la DataTable al objeto DataSet . Utilice el método DataTable.ImportRow para copiar las filas que desee. Si tiene capacidad de actualización, utilice el método DataSet.Merge combinar la DataTable en el objeto de conjunto de datos principal. Este método es mejor sólo si tiene que actualizar una sola tabla que no tiene integridad referencial o problemas de una exploración jerárquica.
    Dim dsFiltered As New DataSet()
    ' dsMain is the existing DataSet object. You want to select the second and fifth rows from the "MyTable" table.
    dsFiltered.Tables.Add(dsMain.Tables("MyTable").Clone)
    dsFiltered.Tables(0).ImportRow(dsMain.Tables("MyTable").Rows(1))
    dsFiltered.Tables(0).ImportRow(dsMain.Tables("MyTable").Rows(4))
    
    dsMain.AcceptChanges()   ' This is not required if you never edit dsMain.
    dsMain.Merge(dsFiltered, False)
    MyDataAdapter.Update(dsMain, "MyTable")
    					

Propiedades

Id. de artículo: 321896 - Última revisión: miércoles, 26 de febrero de 2014 - Versión: 2.5
La información de este artículo se refiere a:
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft Visual Studio .NET 2002 Professional
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Academic Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbdataadapter kbhowtomaster kbsystemdata KB321896 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 321896

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com