DataSets Tipificados y No Tipificados II

Manejo de registros

Fecha: 19/Jul/2005 (19 de Julio de 2005)
Autor: Ing. Fernando Luque Sánchez - DCE 4 Estrellas

[email protected]


Sres. Desarrolladores, continuando con el artículo referente a DataSet, en el anterior explicaba los componentes del DataSet, Ventajas y otros temas, el artículo está en el enlace:
http://www.elguille.info/colabora/NET2005/FernandoLuque_DataSetsI.htm

En este artículo pretendo mostrar como se acceden a los datos cuando se trabajan con DataSets Tipificados y como se acceden cuando se trabajan con DataSets NO Tipificados.

AL GRANO

En el ejemplo que comparto con ustedes he colocado información en cajas de texto y me conecto a la Tabla Customers (Clientes) de la base de datos Northwind. El esquema presente en el DataSet tipificado  dsCustomers.xsd, se llama ClientesTyped, que tiene la misma estructura de la tabla Customers de Northwind.

DataSet Tipificado

Dim drRegistro1 As dsCustomers.ClientesTypedRow 

Donde dsCustomers es el DataSet tipificado incluído en el proyecto y ClientesTypedRow en el DataRow correspondiente.

drRegistro1.CompanyName = txtCompanyName.Text

Donde  txtCompanyName.Text es el contenido de una caja de texto. Note que los elementos del DataRow están presentes como si se tratara de las propiedades del objeto.

For i = 0 To dsTDatos.ClientesTyped.Count - 1

...código necesaio

Next   i

Donde: dsTdatos es el nombre del DataSet y ClientesTyped es el DataTable.

dsTDatos.ClientesTyped(i).ContactName.ToString

Donde ContactName es uno de los campos para mostrar en el control ListBox.

 

DataSet NO TIPIFICADO

Dim dsUDatos as New DataSet

daClientes.Fill( dsUDatos, "ClientesUnTyped")

Donde: daClientes es el SQLDataAdapter , dsUDatos es el DataSet que debe estar previamente definido y ClientesUnTyped es el nombre del DataTable a crear.

Dim drRegistro as DataRow
drRegistro = dsUDatos.Tables("ClientesUnTyped").NewRow

drRegistro1("CompanyName") = txtCompanyName.Text

Donde  txtCompanyName.Text es el contenido de una caja de texto. Note que los elementos del DataRow se acceden utilizando ("  ")

For i = 0 To dsUDatos.Tables("ClientesUnTyped").Rows.Count  - 1

...código necesaio

Next   i

Donde: dsUdatos es el nombre del DataSet y ClientesUnTyped es el DataTable.

dsTDatos.Tables("ClientesUnTyped").Rows(i) ("ContactName").ToString

Donde ContactName es uno de los campos para mostrar en el control ListBox.

 

Notas IMPORTANTES:

 

A continuación sigue código en Visual Basic:

    Private Sub frmMoves_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

        'Definir la cadena de conexión
        Dim cn As New SqlConnection("workstation id=HOME;packet size=4096;user id=fernnado;integrated security=SSPI;data source=(local);persist security info=False;initial catalog=Northwind")

        'Abrir la conexión
        cn.Open()
       
'Crear el SQLCommand
        Dim coClientes As New SqlCommand
        coClientes.Connection = cn
        coClientes.CommandType = CommandType.Text

        'Se usarán dos tablas adicionales con los mismos datos
        'de Customers: ClientesTyped y ClientesUnTyped
        'Para ClientesTyped...comprobar si existe y borrarla

        coClientes.CommandText = _
            "IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'[ClientesTyped]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) DROP TABLE [ClientesTyped] "

        coClientes.ExecuteNonQuery()   'Ejecuta el comando
        'Para ClientesUnTyped...comprobar si existe y borrarla
        coClientes.CommandText = _
                    "IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'[ClientesUnTyped]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) DROP TABLE [ClientesUnTyped] "

        coClientes.ExecuteNonQuery()   'Ejecuta el comando
        'Luego crear las dos tablas basadas en Customers de Northwind
        'Crear ClientesTyped
        coClientes.CommandText = _
            "CREATE TABLE ClientesTyped (" & _
         "CustomerID nchar (5) PRIMARY KEY  ," & _
         "CompanyName nvarchar (40)  NOT NULL," & _
         "ContactName nvarchar (30)  NULL," & _
         "ContactTitle nvarchar (30) NULL," & _
         "Address nvarchar (60) NULL," & _
         "City nvarchar (15) NULL," & _
         "Region nvarchar (15) NULL ," & _
         "PostalCode nvarchar (10) NULL," & _
         "Country nvarchar (15) NULL," & _
         "Phone nvarchar (24) NULL," & _
         "Fax nvarchar (24) NULL )"

        coClientes.ExecuteNonQuery() 'Ejecuta Crear Tabla ClientesTyped  

        'Crear ClientesUnTyped
        coClientes.CommandText = _
            "CREATE TABLE ClientesUnTyped (" & _
         "CustomerID nchar (5) PRIMARY KEY  ," & _
         "CompanyName nvarchar (40)  NOT NULL," & _
         "ContactName nvarchar (30)  NULL," & _
            "ContactTitle nvarchar (30) NULL," & _
         "Address nvarchar (60) NULL," & _
         "City nvarchar (15) NULL," & _
         "Region nvarchar (15) NULL ," & _
         "PostalCode nvarchar (10) NULL," & _
         "Country nvarchar (15) NULL," & _
         "Phone nvarchar (24) NULL," & _
         "Fax nvarchar (24)  NULL )"

        coClientes.ExecuteNonQuery() 'Ejecuta Crear Tabla ClientesUnTyped

        'Insertar los registros a las Tablas Creadas

        'TABLA ClientesTyped
        coClientes.CommandText = _
            "INSERT INTO ClientesTyped " & _
            "(CustomerID,CompanyName,ContactName,ContactTitle," & _
            "Address,City,Region,PostalCode,Country,Phone,Fax )" & _
            "(Select CustomerID,CompanyName,ContactName,ContactTitle," & _
             "Address,City,Region,PostalCode,Country," & _
             "Phone,Fax from Customers)"

        coClientes.ExecuteNonQuery()

        'TABLA ClientesUntyped

        coClientes.CommandText = _
            "INSERT INTO ClientesUnTyped " & _
            "(CustomerID ,        CompanyName,   ContactName,      ContactTitle," & _
            "Address ,City,Region,PostalCode,Country,Phone ,Fax )" & _
            "(Select CustomerID , CompanyName,               ContactName,      ContactTitle," & _
             "Address ,               City,       Region,  PostalCode,          Country," & _
             "Phone , Fax from Customers)"
        coClientes.ExecuteNonQuery()         

           'Hasta acá necesitamos el SQLCommand coClientes
        coClientes.Dispose()

          'Tipificado   ---- dsCustomers.xsd

        dsTDatos = New dsCustomers  'dsCustomers en un DataSet Tipificado

        'Crear el Adaptador

        Dim daTDatos As New SqlDataAdapter("Select * from ClientesTyped", cn)

        'Llenar el DataSet, creando el DataTable ClientesTyped

        daTDatos.Fill(dsTDatos, "ClientesTyped")

 

        'No Tipificado

        dsUDatos = New DataSet

        Dim daUDatos As New SqlDataAdapter("Select * from ClientesUnTyped", cn)

        daUDatos.Fill(dsUDatos, "ClientesUnTyped")

 

        'CERRAMOS LA CONEXION

        cn.Close()

 

        'Los datos siguientes son solo para ejemplo
        'Llenados con mis datos

        txtCustomerId.Text = "FLS23"
        txtcompanyNema.Text = "Net Desarrollo SAC"
        txtContactName.Text = "Ing. Fernando Luque"
        txtContactTitle.Text = "Gerente General"
           txtAddress.Text = "Av. Brasil 3546 Magdalena"
        txtCity.Text = "Lima"
           txtRegion.Text = "Oeste"
        txtCountry.Text = "Perú"
        txtPostalCode.Text = "51"
        txtPhone.Text = "045968879"
        txtFax.Text = "054-567466"

    End Sub

 

El código completo se encuentra en el archivo adjunto al final del artículo, recuerda dar tu opinión para PanoramaBox, suerte a todos y A SEGUIR DESARROLLANDO.

Ing. Fernando Luque Sánchez
CIP 61806
Desde Trujillo - Perú para el mundo

 


Espacios de nombres usados en el código de este artículo:

System.Data
System.DataSQLClient


Fichero con el código de ejemplo: FernandoLuque_DataSetsII.zip - Tamaño 20 KB


ir al índice