Cómo: Leer datos jerárquicos en un DataSet en Visual Basic .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 309487 - 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

Utilice a esta guía paso a paso para copiar los datos jerárquicos en un DataSet mediante el método Fill de la clase DataSet .

Cómo leer datos jerárquicos en un DataSet

Puede usar conjuntos jerárquicos de filas o capítulos (tipo DBTYPE_HCHAPTER de OLE DB y tipo adChapter de ADO) para rellenar el contenido de un DataSet . Cuando el DataAdapter encuentra una columna con capítulo durante una operación Fill , se crea una DataTable para la columna con capítulo, y esa tabla se llena con las columnas y filas del capítulo. El nombre de la tabla creada para la columna con capítulo adopta su nombre desde el nombre de tabla principal y el nombre de columna con capítulo; tiene la siguiente sintaxis:
ParentTableNameChapteredColumnName
Si ya existe una tabla en el DataSet y su nombre coincide con el nombre de la columna con capítulo, la tabla actual se rellena con los datos del capítulo. Si no hay ninguna columna de una tabla existente que coincida con una columna que se encuentra en el capítulo, se agrega una nueva columna.

Una vez finalizada la operación Fill , el DataSet contendrá dos tablas: Customers y CustomersOrders . La tabla CustomersOrders representa la columna con capítulo. Una columna adicional denominada Orders se agrega a la tabla Customers y se agrega una columna adicional con el nombre CustomersOrders a la tabla CustomersOrders . La columna Orders en la tabla Customers se establece a incremento automático. Crea una DataRelation , CustomersOrders, utilizando las columnas que se han agregado a las tablas con clientes como la tabla primaria.

El siguiente código de ejemplo utiliza las tablas de pedidos que se incluyen en la base de datos Northwind de Microsoft SQL Server y clientes .
  1. Cree un nuevo proyecto de aplicación de consola de Visual Basic .NET.

    Se creará Module1.vb de forma predeterminada.
  2. Si la ventana código no está abierta, haga clic con el botón secundario en Module1.vb , en el Explorador de soluciones y, a continuación, haga clic en Ver código .
  3. Elimine todo el código de la ventana dé código.
  4. Escriba o pegue el código siguiente en la ventana código:
    Imports System.Data.OleDb
    Module Module1
    
        Sub Main()
            Dim nwindConn As OleDbConnection = New OleDbConnection("Provider=MSDataShape;Data Provider=SQLOLEDB;" & _
                                                     "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind")
    
            Dim custDA As OleDbDataAdapter = New OleDbDataAdapter("SHAPE {SELECT CustomerID, CompanyName FROM Customers} " & _
                                                  "  APPEND ({SELECT CustomerID, OrderID FROM Orders} AS Orders " & _
                                                  "  RELATE CustomerID TO CustomerID)", nwindConn)
            Dim custDS As DataSet = New DataSet()
            custDA.Fill(custDS, "Customers")
      Dim CustomerRow, OrderRow As DataRow
            Dim OrderRows As DataRow()
            Dim sline As String
            Dim i As Integer
            CustomerRow = custDS.Tables("Customers").Rows(0)
            Console.WriteLine("Customer Row")
            Console.WriteLine("Customer ID = " & CustomerRow("CustomerId").ToString)
            Console.WriteLine("Orders for Customer ID " & CustomerRow("customerID").ToString)
            ' Retrieve child rows for the order.
            OrderRows = CustomerRow.GetChildRows("CustomersOrders")
            ' Do something with the child rows collection.
            For i = 0 To OrderRows.Length - 1
                OrderRow = OrderRows(i)
                ' Do something with the detail row.
                sline = (OrderRow("OrderId").ToString)
                Console.WriteLine(sline)
            Next
            Console.ReadLine()
        End Sub
    
    End Module
    					
  5. Modifique la cadena como corresponda de acuerdo con su entorno.
  6. Presione F5 para crear y ejecutar el proyecto. El resultado siguiente aparece en la ventana de comandos:
    Fila de cliente
    ID cliente = ALFKI
    Pedidos para ALFKI de ID de cliente
    10643
    10692
    10702
    10835
    10952
    11011
  7. Presione ENTRAR para cerrar la ventana de comandos.

Referencias

Para obtener información adicional sobre un tema similar en Visual Basic 6.0, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
189657HOWTO: Usar el comando SHAPE de ADO
Para obtener más información acerca de los objetos de ADO.NET y su sintaxis, consulte el tema siguiente en la documentación del Kit de desarrollo de software (SDK) de Microsoft .NET Framework:
Recuperar datos mediante DataReader
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpcontheadonetdatareader.asp

Propiedades

Id. de artículo: 309487 - Última revisión: lunes, 24 de febrero de 2014 - Versión: 3.1
La información de este artículo se refiere a:
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbhowtomaster kbsystemdata KB309487 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): 309487

Enviar comentarios

 

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