4 programacion orientada a objetos ii

218
Programación Orientada a Objetos II

Upload: pedro-pablo-juarez

Post on 25-Nov-2015

473 views

Category:

Documents


7 download

TRANSCRIPT

  • Programacin Orientada a Objetos II

  • 2222

    CARRERAS PROFESIONALES CIBERTEC

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 3

    CIBERTEC CARRERAS PROFESIONALES

    NDICE

    Presentacin 5 Red de contenidos 6 Sesiones de aprendizaje Unidad de aprendizaje 1 SEMANA 1 : Arquitectura de ADO .NET, conexin a un base de datos,

    consulta de datos 7

    SEMANA 2 : Operaciones de consultas y recuperacin de datos utilizando DataAdapter, DataReader y Command

    23

    SEMANA 3 : Manejo del TableAdapter, Usando LINQ to SQL. 39 SEMANA 4 : Modificacin de datos de una fuente de datos, manejo de

    transacciones de datos 59

    Unidad de aprendizaje 2 SEMANA 5 : Operaciones desconectadas con programacin 83 SEMANA 6 : Operaciones desconectadas: Manejo del DataView y el

    DataTableReader desde un DataSet 103

    SEMANA 7 : Semana de exmenes parciales teora SEMANA 8 : Semana de exmenes parciales laboratorio Unidad de aprendizaje 3 SEMANA 9 : Manejo de Crystal Report 115 Unidad de aprendizaje 4 SEMANA 10 : Modelo relacional de objetos: LINQ to SQL 131 SEMANA 11 : Modelo ADO.NET Entity FrameWork, arquitectura 147 SEMANA 12 : Actualizacin de datos utilizando objetos EntityClient 163 Unidad de aprendizaje 5 SEMANA 13 : Operaciones XML en datos desconectados

    Procesamiento de datos XML utilizando DOM 177

    SEMANA 14 : Consulta XML utilizando XPath, 201 SEMANA 15 : Examen final de laboratorio SEMANA 16 : Sustentacin de proyectos SEMANA 17 : Examen final de teora

  • 4444

    CARRERAS PROFESIONALES CIBERTEC

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 5

    CIBERTEC CARRERAS PROFESIONALES

    PRESENTACIN

    Visual Studio 2008 y su plataforma .NET FrameWork 3.5 es un amplio conjunto de bibliotecas de clases donde se incluye ADO .NET 3.5 que representa las clases en el Acceso de Datos, el cual sufre de avances importantes en el aumento de la productividad.

    Programacin Orientada a Objetos II pertenece a la lnea de tecnologa y se dicta en las carreras de tecnologa de la institucin. El curso brinda un conjunto de herramientas de programacin para trabajar con un origen de datos que permita al alumno realizar operaciones de consulta y actualizacin de datos en forma eficiente.

    El manual para este curso ha sido diseado bajo la modalidad de unidades de aprendizaje, las que desarrollamos durante semanas determinadas. En cada una de ellas, hallar los logros que se deber alcanzar al final de la unidad; el tema tratado, el cual ser ampliamente desarrollado; y los contenidos, que debe desarrollar. Por ltimo, encontrar las actividades y trabajos prcticos que deber desarrollar en cada sesin, que le permitirn reforzar lo aprendido en la clase.

    El curso es eminentemente prctico: consiste en programacin visual Basic con base de datos utilizando ADO .NET. La primera parte de este manual nos ensea a familiarizarnos con los objetos de ADO .NET para realizar las consultas y actualizaciones a la base de datos, sea sta en forma conectada o desconectada a la fuente de datos, mediante ejemplos didcticos. Aprenderemos a utilizar los controles enlazados a los datos que permitan realizar dichos procesos. Luego, vamos a realizar reportes y grficos utilizando el motor del Crystal Report, a continuacin realizamos operaciones de consulta actualizacin a travs del objeto Entity; y por ltimo desarrollamos procesos para manejar XML.

  • 6666

    CARRERAS PROFESIONALES CIBERTEC

    RED DE CONTENIDOS

    Operaciones de consulta y

    actualizacin utilizando ADO.NET

    Programacin Orientada a Objetos II

    Arquitectura de

    ADO.NET

    Operacion de consulta y actualizar

    datos

    Operaciones desconectadas a un origen de

    datos

    Manejo de DataSet,

    DataTable

    Consultas utilizando

    TableDataReader

    Manejo de Reportes

    Diseo de Crystal Report

    Manejo de parmetros

    Manejo de DataAdapter, DataReader, Command ,

    Table Adapter y

    LINQ to SQL

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 7

    CIBERTEC CARRERAS PROFESIONALES

    ARQUITECTURA DE ADO .NET, CONEXIN A UN ORIGEN DE DATOS Y CONSULTA DE DATOS

    LOGRO DE LA UNIDAD DE APRENDIZAJE

    Al trmino de la unidad, los alumnos elaboran aplicaciones Windows .NET que se conectan a un origen de datos utilizando los objetos de ADO.NET para realizar operaciones de consulta y actualizacin de datos.

    TEMARIO

    Arquitectura y componentes de ADO.NET. Administracin almacenamiento de una cadena de conexin a un origen de

    datos. Operaciones de consulta sobre un origen de datos. Recuperacin de datos utilizando DataAdapter, DataReader y Command Manejo de TableAdapter, Usando LINQ to SQL Modificacin de datos, manejo de transacciones de datos y excepciones.

    ACTIVIDADES PROPUESTAS

    Los alumnos se conectan a un origen de datos. Los alumnos consultan los datos en un origen de datos, utilizando sentencias SQL. Los alumnos consultan los datos por diversos criterios en un origen de datos

    utilizando sentencias SQL. Los alumnos manejan los controles enlazados a los datos para realizar operaciones

    de consulta.

    UNIDAD DE

    APRENDIZAJE

    1

    SEMANA

    1

  • 8888

    CARRERAS PROFESIONALES CIBERTEC

    1. INTRODUCCION AL ADO .NET 3.5

    En la plataforma .NET, esos servicios reciben la denominacin genrica de ADO.NET, ha llegado a su versin 3.5 con Visual Studio 2008. Esta nueva iteracin aporta una serie de interfaces y objetos, as como nuevos controles y mejoras en las clases ya existentes, y tambin en el propio motor que se encarga de la manipulacin de los datos en el cliente, incrementando su rendimiento considerablemente.

    ADO.NET incorpora varios proveedores de datos que permiten conectar con SQL Server y Oracle, as como otros que facilitan el uso de controladores ODBC y OLE DB para acceder a aquellos provenientes de Excel, Access, MySQL, etc. Adems incorpora el nuevo modelo de factoras que hace posible un acceso genrico a orgenes de datos, la obtencin de informacin de esquema, las caractersticas especficas para SQL Server o las nuevas capacidades del objeto Datatable.

    2. ARQUITECTURA DE ADO .NET

    Tradicionalmente, el procesamiento de datos ha dependido principalmente de un modelo de dos niveles basado en una conexin. A medida que el procesamiento de datos utiliza cada vez ms arquitecturas de varios niveles, los programadores estn pasando a un enfoque sin conexin con el fin de proporcionar una escalabilidad mejor para sus aplicaciones.

    ARQUITECTURA ADO.NET 2.0

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 9

    CIBERTEC CARRERAS PROFESIONALES

    3. PROVEEDOR DE DATOS ADO .NET

    Cualquier aplicacin que utiliza ADO.NET accede a un origen de datos mediante un Provider o proveedor de datos. Un proveedor de datos permite conectarse a una base e datos, ejecutar comandos y obtener resultados. Cada proveedor de datos implementa interfaces para sus objetos.

    3.1 Implementaciones de los proveedores de datos

    3.2 Objetos principales de los proveedores de datos

    3.2.1 Connection: Establece una conexin a un origen de datos.

    3.2.2 Command: Ejecuta un comando en un origen de datos. Expone Parameters y puede ejecutarse en el mbito de un objeto Transaction.

    3.2.3 DataReader: Lee una secuencia de datos de slo avance y slo lectura desde un origen de datos.

    3.2.4 DataAdapter: Llena un DataSet y realiza las actualizaciones necesarias en el origen de datos.

    Proveedor de Datos de .NET

    System.Data.SqlClient: Acceso a datos para SQL Server 7.0 o posterior

    System.Data.OleDb: Origen de datos que se exponen mediante OLE DB

    System.Data.Odbc: Origen de datos que se exponen mediante ODBC

    System.Data.OracleClient: Acceso a datos de Oracle 8.1.7 o posterior

  • 10101010

    CARRERAS PROFESIONALES CIBERTEC

    Adems de las clases principales citadas en la tabla anterior, los proveedores de datos de .NET Framework tambin incluyen las que se enumeran en la tabla siguiente.

    Objeto Descripcin Transaction Permite incluir comandos en las transacciones

    que se realizan en el origen de datos. CommandBuilder Objeto que genera, automticamente, las

    propiedades de comando de un DataAdapter o que obtiene, de un procedimiento almacenado, informacin acerca de parmetros con las que puede rellenar la coleccin Parameters de un objeto Command.

    ConnectionStringBuilder Objeto que genera y maneja una cadena de conexin utilizada por el objeto Connection.

    Parameter Define los parmetros de entrada, salida y valores devueltos para los comandos y procedimientos almacenados.

    Exception Se devuelve cuando se detecta un error en el origen de datos. En el caso de que el error se detecte en el cliente, los proveedores de datos de .NET Framework inician una excepcin de .NET Framework.

    Error Expone la informacin relacionada con una advertencia o error devueltos por un origen de datos.

    ClientPermission Se proporciona para los atributos de seguridad de acceso a cdigo de los proveedores de datos de .NET Framework.

    4. CONEXIN A UNA BASE DE DATOS POR ADO .NET

    El objeto Connection permite conectarse con un determinado origen de datos mediante una cadena de conexin en la que se proporciona la informacin de autenticacin necesaria. El objeto Connection utilizado depende del tipo de origen de datos.

    Cada proveedor de datos de .NET Framework, incluido en .NET Framework, cuenta con un objeto Connection:

    OleDbConnection, proveedor de datos para OLE DB. SqlConnection, proveedor de datos para SQL Server. OdbcConnection, proveedor de datos para ODBC. OracleConnection, proveedor de datos para Oracle.

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 11

    CIBERTEC CARRERAS PROFESIONALES

    4.1 Definicin de la cadena de conexin

    Para conectarse a una base de datos por ADO .NET, debe proveer de una cadena de conexin para identificar la base de datos. Los valores que se incluyen en una cadena de conexin dependen del origen de datos que utilice. A continuacin describiremos algunos parmetros de la cadena de conexin.

    Parmetro Descripcin Provider Parmetro para conexiones de datos OLE DB Initial Catalog o DataBase El nombre de la base de datos Data Source Nombre o direccin de red del origen de datos Integrated Security o Trusted_Connection

    Si el parmetro es false, debe especificar User ID y Password en la cadena de conexin. Si es true, la cuenta de autenticacin es de Windows.

    User ID Cuenta de usuario Password Clave de la cuenta de usuario ingresada Persist Security Info SI el parmetro es false el origen de datos

    (data source) no retorna seguridad sensitiva como el password, por defecto es false.

    4.2 Conexin a SQL Server mediante ADO .NET

    El Data Provider del .NET Framework para SQL Server provee la conectividad a SQL Server 7.0 o posterior. Para conectarse a SQL Server utilice la clase SqlConnection desde el namespace System.Data.SqlClient.

    4.2.1 Conexin a SQL Server mediante ADO .NET 1. Defina una cadena de conexin que identifique la base de datos a

    conectar. 2. Cree un objeto SqlConnection, pase la cadena de conexin como

    argumento al constructor del SqlConnection. 3. Llame al mtodo Open del objeto SqlConnection. 4. Utilice la conexin a la base de datos en su aplicacin. 5. Llame al mtodo Close o el mtodo Dispose para cerrar la conexin.

    Puede usar una sentencia Using, el cual garantiza que el objeto SqlConnection se libera.

    El siguiente ejemplo muestra como conectarse a la base de datos BDFactura.

    Dim connectionstring As String = _ "Data Source = (local); Initial Catalog = BDFactura; Integrated Security = true" Dim cn As New SqlConnection(connectionstring) o a travs de la Estructura Using Using cn As New SqlConnection(connectionstring)

    End Using

  • 12121212

    CARRERAS PROFESIONALES CIBERTEC

    Using: Declara el principio de un bloque Using y, opcionalmente, adquiere los recursos del sistema que controla el bloque. A veces su cdigo requiere un recurso no administrado, como un identificador de archivos, un contenedor

    COM o una conexin SQL. Un bloque Using garantiza la eliminacin de uno o ms de tales recursos cuando su cdigo termina de usarlos. Esto los pone a disposicin de otro cdigo para que los pueda utilizar.

    4.3 Conexin con un origen de datos mediante la Librera OleDB El Data Provider del .NET Framework para OLE DB provee la conectividad utilizando la clase OleDbConnection desde el namespace System.Data.OleDbConnection. El proveedor de datos .NET de OLE DB, el formato de la cadena de conexin es igual al que utiliza en ADO con la excepcin de la palabra clave Provider.

    4.3.1 Conexin a un origen de datos mediante ADO .NET 1. Defina una cadena de conexin que identifique la base de datos a

    conectar. La cadena de conexin debe incluir un parmetro Provider para especificar cul es el OLE DB Provider para establecer la conexin.

    2. Cree un objeto OleDbConnection, pasar la cadena de conexin como argumento al constructor del OleDbConnection.

    3. Llame al mtodo Open del objeto OleDbConnection. 4. Utilice la conexin a la base de datos en tu aplicacin 5. Llame el mtodo Close o el mtodo Dispose para cerrar la conexin.

    Puede usar una sentencia Using, el cual garantiza que el objeto OleDbConnection se libera.

    4.4 Almacenar una cadena de conexin en un app.config Almacene una cadena de conexin en un Application Configuration File, sin tener que editar el cdigo de origen y recompilar la aplicacin.

    4.4.1 Almacenar una cadena de conexin en un Application Configuration File

    1. Abrir un Application Configuration File (app.config). 2. Dentro de la etiqueta aadir una elemento llamado

    . 3. Dentro de la etiqueta aadir un elemento llamado

    para cada cadena de conexin. 4. Por cada etiqueta definir un atributo name para especificar el

    nombre de la cadena de conexin, definir un atributo connectionString para especificar la informacin de la cadena de conexin.

    El siguiente ejemplo permite definir una cadena de conexin para la base de datos BDFactura, la cual se llamara cnfactura.

    Dim connectionstring As String = _ "Provider=SQLOLEDB; server=(local); DataBase=BDFactura; uid=sa;pwd=sql"

    Dim cn As New SqlConnection(connectionstring)

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 13

    CIBERTEC CARRERAS PROFESIONALES

    Para utilizar la cadena de conexin almacenada en el app.config, primero defina el namespace Configuration.ConfigurationManager, que utiliza la propiedad ConnectionStrings definida en el app.config, tal como se muestra.

    5. Ejecutar consultas de base de datos

    ADO .NET, posee una clase que permite ejecutar consultas sobre la base de datos: sentencias SQL embebidas, procedimientos almacenados, funciones; es la clase SqlCommand. La clase SqlCommand tiene 4 mtodos que permite utilizar para ejecutar sentencias SQL:

    SqlCommand Descripcin ExecuteScalar Ejecuta una consulta que retorna un valor. ExecuteReader Ejecuta una consulta que retorna un conjunto de

    datos a un DataReader.

    ExecuteNonQuery Ejecuta una Sentencia para actualizar los datos. ExecuteXmlReader Ejecuta una consulta y retorna un conjunto de

    datos en XML. 5.1 Ejecutar una consulta en la base de datos

    1. Crear un objeto Connection, tal como SqlConnection. 2. Crear un objeto Command, tal como SqlCommand. En el constructor

    especificar la sentencia sql que se va a ejecutar y especificar la conexin. 3. Al ejecutar la sentencia sql, especificar la propiedad CommandType. Si va

    a ejecutar una sentencia SQL el valor del CommandType es CommandType.Text; si va a ejecutar un procedimiento almacenado el valor del CommandType ser CommandType.StoredProcedure.

    4. Llame al mtodo Open del objeto Conexin. 5. Ejecute el mtodo del objeto Command, asignando su resultado a una

    variable o control. 6. Llame al mtodo Close del objeto conexin.

    El siguiente ejemplo permite ejecutar una consulta que retorne el nmero de facturas almacenadas en la base de datos BDFactura

    Imports System.Data.SqlClient Imports System.Configuration.ConfigurationManager

    Dim cnstring As String= ConnectionStrings("cnfactura").ConnectionString

    Using cn As New SqlConnection(cnstring) ......

    End Using

    Dim cn As New SqlConnection(aConnectionString) Dim cmd as new SqlCommand(Select Count(*) From fac_cabe , cn) cmd.CommandType=CommandType.Text cn.Open()

    Dim count as Integer=CInt(cmd.ExecuteScalar()) cn.Close()

  • 14141414

    CARRERAS PROFESIONALES CIBERTEC

    6. Connection Pooling en ADO .NET

    Cuando una aplicacin se conecta a un servidor de base de datos, lo primero que hace es abrir una conexin con el servidor; lo que resulta ser un proceso costoso: Desde el punto de vista del cliente, hay que abrir una conexin de red con el

    servidor, enviarle una cadena de conexin y esperar la confirmacin. Desde el punto de vista del servidor, se recibe una solicitud de conexin, se

    valida el usuario que desea conectar y se enva al cliente el resultado de la solicitud.

    El objetivo de Connection Pooling es gestionar, en el cliente, un sistema que almacena conexiones abiertas contra el servidor de base de datos. Para ello, crear listas de conexiones, agrupadas por el par dominio de la aplicacin/cadena de conexin. Para habilitarlo usaremos Pooling=true. Al conectarse a un servidor de base de datos, comprueba su pool de conexiones, si existe una que coincida, utilizar la que tiene en el pool; sino crear una nueva conexin.

    En el siguiente ejemplo, se crean tres objetos SqlConnection, pero solo se necesitan dos grupos de conexin para administrarlos.

    6.1 Adicin de conexiones Por cada cadena de conexin nica se crea un grupo de conexin; las conexiones se agregan al grupo cuando es necesario, hasta el tamao mximo del grupo especificado en la propiedad Max Pool Size (100 es el valor predeterminado), y se liberan del grupo cuando se cierran o eliminan.

    6.2 Eliminacin de conexiones Si la aplicacin no cierra ni elimina explcitamente sus conexiones, es mejor asegurarse de que llama claramente a Close y Dispose en las conexiones

    7. DBFACTORY CON ADO.NET

    Ante la necesidad de escribir aplicaciones que puedan trabajar con cualquier tipo de base de datos, siempre se ha recurrido al modelo de n capas donde una de ellas, era el proveedor de acceso a datos y se encargaba de abstraer esta tarea, normalmente encapsulada en una librera .dll que se cambiaba a voluntad sin que ello supusiese ningn problema para la aplicacin.

    Esta librera, suele contener lo que se denomina un DBFactory, una clase abstracta o conjunto de funciones encargadas de adaptarse a la base de datos que se le indique y obtener datos de forma transparente para su consumidor, esta semana he descubierto como hacerlo con ADO.NET 2.0 sin tener que codificar a penas nada con las clases que habitan en System.Data.Common.

    Using cn As New SqlConnection(Server=. ;DataBase=NorthWind; uid=sa) cn.Open() Pool A es creado End Using Using cn As New SqlConnection(Server=. ;DataBase=Pubs; uid=sa) cn.Open() Pool B es creado End Using Using cn As New SqlConnection(Server=. ;DataBase=NorthWind; uid=sa) cn.Open() La conexin coincide con Pool A End Using

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 15

    CIBERTEC CARRERAS PROFESIONALES

    En el siguiente ejemplo, vamos a conectarnos a la base de datos DBVentas, administrados por SQL Server, utilizando la clase DBFactory.

    1. Defina la cadena de conexin en el app.config.

    2. En el formulario, defina las libreras para trabajar con el origen de datos.

    3. Defina el Proveedor de DBfactory para conectarse a SQL Server.

    3. Defina la conexin a la base de datos DBVentas.

    LABORATORIO 1.1 ACCESO A DATOS EN UN FORMULARIO WINDOWS FORM, UTILIZANDO EL ASISTENTE

    En este Laboratorio, presentamos un formulario Windows Forms sencillo que muestra los datos de la tabla artculos en una cuadrcula de datos (DataGridView).

    1. Ingrese a Visual Studio 2005 2. Selecciona Files -> New ->Project 3. Elija las siguientes opciones:

    - En Project Types elija Visual Basic - En Templates elija WindowsApplication - En name coloque appFacturacion - En Location coloque C:\CursoPOOII

    Imports System.Data.Common Imports System.Configuration.ConfigurationManager

    Private db As DbProviderFactory = DbProviderFactories.GetFactory(ConnectionStrings("cn").ProviderName)

    Dim cn As DbConnection = db.CreateConnection cn.ConnectionString = ConnectionStrings("cn").ConnectionString

  • 16161616

    CARRERAS PROFESIONALES CIBERTEC

    4. En el Formulario, Agregue un control DataGridView, para realizar la conexin a la base de datos BDFactura, se muestra la lista de tareas tal como se observa en la figura:

    5. En la lista de tareas del DataGridView1 (nombre del control) debemos asignar un origen de datos (Choose Data Source), tal como se muestra en la figura. Desplegar dicha opcin; si no tenemos origen de datos, entonces lo aadiremos utilizando la opcin Add Project Data Source, tal como se muestra.

    6. Al seleccionar la opcin Add Project Data Source, se presenta el asistente de configuracin de origen de datos. La primera opcin es elegir el tipo de origen de datos Choose a Data Source Type, seleccione la opcin Database; luego, presione el botn Next

    7. En la segunda ventana del Asistente, permite elegir la conexin de datos Choose Your Data Connection, el cual podemos seleccionar una conexin; en caso de que no haya, presione el botn New Connection.

    Permite visualizar la lista de tareas del control

    Clickea para elegir un origen de datos

    Clickea para aadir un origen de datos al proyecto

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 17

    CIBERTEC CARRERAS PROFESIONALES

    Presione el botn para crear una nueva conexin

    8. Seleccione el origen de datos, el cual ser Microsoft SQL Server, tal como se muestra en la figura; luego, presione el botn OK.

    9. Al aadir una nueva conexin, se visualiza una ventana para crear la conexin a la base de datos, donde se ingrese el nombre del servidor Server Name, seleccione la autenticacin Log on to the Server y seleccione la base de datos Select o enter a DataBase Name.

    10. Al crear la conexin, sta se visualiza en la ventana Choose Your Data Connection, tal como se muestra en la figura, para continuar con el asistente presione el botn Next.

    Ingrese el servidor, si utiliza SQL Server 2005, su servidor ser: (local)\SQLEXPRESS.

    Seleccione la autenticacin, que puede ser por Windows o SQL Server.

    Seleccione la base de datos de la lista

    Conexin generada por el asistente.

    Presione la opcin ConnectionString para visualizar la cadena de conexin.

  • 18181818

    CARRERAS PROFESIONALES CIBERTEC

    11. Creada la conexin, debemos elegir la tabla artculos para realizar la consulta, tal como se muestra en la figura. Se puede observar que junto a la seleccin de la tabla artculos se crear un DataSet llamado BDFacturaDataSet, para almacenar la estructura de la tabla artculos. Luego, presione el botn Finish.

    12. Al finalizar, se visualiza el formulario con el DataGridView1 configurado con la tabla artculos, luego presione F5 para ejecutar.

    Seleccione la tabla artculos de la base de datos.

    Al seleccionar el objeto de base de datos, se crear un DataSet.

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 19

    CIBERTEC CARRERAS PROFESIONALES

    LABORATORIO 1.2 ACCESO A DATOS EN UN FORMULARIO WINDOWS FORM, UTILIZANDO CODIGO DE PROGRAMACION En este laboratorio, poblaremos un DataGridView con la informacin de los clientes de la base de datos DBVentas basada en una cadena select SQL. A continuacin, ejecutaremos los pasos para ejecutar la consulta SQL y mostrar los resultados en la cuadrcula.

    1. Agregue un nuevo formulario de windows al proyecto 2. Agregue un control Label y un control DatGridView tal como se muestra en la

    figura.

    3. En la ventana de cdigo, se definirn el namespace para SQL Server, en la parte superior, tal como se muestra en la figura.

    4. Defina, a nivel formulario, la cadena de conexin a la base de datos DBVentas.

    5. Defina, a nivel formulario, el objeto Connection: SqlConnection, donde al inicializar la conexin, pasar la cadena de conexin definida en strcon.

    6. Programa las sentencias en el Evento Load del Form1, para listar los clientes: a. Definir la instancia del objeto DataAdapter llamado da, ejecutando la

    sentencia de consulta de la tabla tb_clientes. b. La sentencia SQL se ejecutar en el mtodo SelectCommand y los

    registros resultantes se almacenar en el DataAdapter da. c. Definir un DataTable llamado tabla. d. Poblar los registros resultantes de DataAdapter (da) en tabla. e. Asignar al origen de datos del DataGridView1 el objeto tabla. f. Ejecutar la aplicacin.

    Control Label

    Control DataGridView

    Imports System.Data.SqlClient

    Dim strcon As String = "server = .; DataBase=DBVentas; Integrated Security=True"

    Private cn As New SqlConnection(strcon)

    Dim da As New SqlDataAdapter(Select * From tb_clientes", cn)

    Dim tabla As New DataTable da.Fill(tabla) Me.DataGridView1.DataSource = tabla

  • 20202020

    CARRERAS PROFESIONALES CIBERTEC

    LABORATORIO 1.3 EJECUTAR UN PROCEDURE EN UN FORMULARIO WINDOWS FORM, UTILIZANDO DBFACTORY PROVIDER

    En este laboratorio, poblaremos un DataGridView al ejecutar un procedimiento almacenado en la base de datos DBVentas, que visualiza los registros de los proveedores. Los siguientes pasos permitirn ejecutar un procedimiento almacenado.

    1. En el Administrador de la base de Datos, defina el procedimiento almacenado en la base de datos.

    2. Agregue un nuevo formulario de windows al proyecto. 3. Agregue un control Label y un control DatGridView. 4. Agregue en el proyecto un app.config para definir una cadena de conexin a la

    base de datos DBVentas y defina el proveedor del origen de datos: SqlClient.

    5. En la ventana de cdigo, defina las libreras para trabajar con la cadena de conexin en app.config y con DBFactory.

    6. Defina al proveedor DBFactory para conectarse a un origen de datos en SQL Server.

    7. Programe las siguientes sentencias en el evento load del Form1 para ejecutar el procedimiento almacenado:

    a. Defina un DBConnection llamado cn, asigne en la propiedad ConnectionString el objeto definido en el app.config llamado cn.

    b. Defina un DBCommand llamado cmd. Asigne: en la propiedad Connection la conexin cn, en la propiedad CommandText el nombre del procedure, en la propiedad CommandType el tipo de comando, el cual ser un procedimiento almacenado.

    c. Defina un DbDataAdapter llamado da. d. Asigna en la propiedad SelectCommand del DataAdapter, el comando. e. Defina un DataTable llamado tabla. f. Poblar los registros resultantes de DataAdapter (da) en tabla. g. Asigna al origen de datos del DataGridView1 el objeto tabla.

    Create Procedure usp_Proveedor As Select * From tb_proveedores

    Imports System.Data.Common Imports System.Configuration.ConfigurationManager

    Private db As DbProviderFactory = DbProviderFactories.GetFactory(ConnectionStrings("cn").ProviderName)

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 21

    CIBERTEC CARRERAS PROFESIONALES

    8. Ejecute la aplicacin.

    Autoevaluacin

    1. Cul es la Arquitectura ADO .NET? _______________________________________________________________

    _______________________________________________________________

    _______________________________________________________________

    2. Cules son los proveedores de datos en .NET Framework? _______________________________________________________________

    _______________________________________________________________

    3. Defina brevemente los objetos principales de los proveedores de datos _______________________________________________________________

    _______________________________________________________________

    _______________________________________________________________

    4. Defina brevemente los parmetros de una cadena de conexin _______________________________________________________________

    _______________________________________________________________

    5. Qu es el Connection Pooling? _______________________________________________________________

    _______________________________________________________________

    _______________________________________________________________

    6. Cules son los objetos para realizar una conexin utilizando DBFactory _______________________________________________________________

    _______________________________________________________________

    _______________________________________________________________

    Dim cn As DbConnection = db.CreateConnection cn.ConnectionString = ConnectionStrings("cn").ConnectionString

    Dim cmd As DbCommand = cn.CreateCommand cmd.Connection = cn cmd.CommandText = "usp_proveedor" cmd.CommandType = CommandType.StoredProcedure

    Dim da As DbDataAdapter = db.CreateDataAdapter da.SelectCommand = cmd Dim tabla As New DataTable da.Fill(tabla) Me.DataGridView1.DataSource = tabla

  • 22222222

    CARRERAS PROFESIONALES CIBERTEC

    Resumen

    El proveedor de datos .NET de SQL Server o del proveedor de datos .NET de OLE DB requiere de la instalacin de la versin 2.8 de Microsoft Data Access Components.

    Existen 4 tipos de proveedores de datos: SqlClient, OleDB, ODBC, OracleClient.

    El objeto DataAdapter o adaptador de datos permite llenar un DataSet y realizar actualizaciones a la base de datos.

    El objeto DataReader es un lector de datos; el objeto DataSet almacena un conjunto de datos para realizar operaciones de consulta y actualizacin.

    La conectarse a una base de datos en SQL Server, se requiere de los siguientes parmetros: Data Source, Inicial Catalog, Integrated Security o User Id.

    La cadena de conexin es almacenada en un app.config dentro de la etiqueta connectionString.

    El objeto Command ejecuta sentencias SQL, procedimientos almacenados, funciones, as como sentencias de definicin de datos: crear y eliminar tablas.

    Cuando se ejecuta un Command de actualizacin, se debe abrir la conexin cn.Open () y al finalizar el proceso cerrar la conexin cn.Close ().

    La librera DBFactory, es una clase abstracta o conjunto de funciones encargadas de adaptarse a la base de datos que se le indique y obtener datos de forma transparente para su consumidor, esta semana he descubierto como hacerlo con ADO.NET 2.0, codificando mnimamente con las clases que habitan en System.Data.Common.

    Si desea consultar mas acerca de estos temas puede consultar las siguientes paginas:

    http://msdn2.microsoft.com/es-es/library/e80y5yhx(VS.80).aspx Referencia a ADO.NET 2.0

    http://msdn.microsoft.com/es-es/library/27y4ybxw(VS.80).aspx Referencia a la arquitectura de ADO.NET

    http://sabia.tic.udc.es/docencia/is/old/2006-2007/docs/transparencias/03-ADO.NET.pdf Referencia a ADO.NET, arquitectura, diseo e implementacin

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 23

    CIBERTEC CARRERAS PROFESIONALES

    OPERACIONES DE CONSULTA Y RECUPERACION DE DATOS UTILIZANDO ADO.NET

    LOGRO DE LA UNIDAD DE APRENDIZAJE

    Al trmino de la unidad, los alumnos elaboran aplicaciones Windows .NET que se conectan a un origen de datos utilizando los objetos de ADO.NET para realizar operaciones de consulta y recuperacin de datos.

    TEMARIO

    Arquitectura y componentes de ADO.NET. Administracin almacenamiento de una cadena de conexin a un origen de

    datos. Operaciones de consulta sobre un origen de datos. Recuperacin de datos utilizando DataAdapter, DataReader y Command. Manejo de TableAdapter, Usando LINQ to SQL. Modificacin de datos, manejo de transacciones de datos y excepciones.

    ACTIVIDADES PROPUESTAS

    Los alumnos utilizan los objetos de ADO.NET: DataAdapter, DataReader y Command para realizar las consultas de datos.

    Los alumnos definen y ejecutan procedimientos almacenados para consultar informacin de un origen de datos.

    UNIDAD DE

    APRENDIZAJE

    1

    SEMANA

    2

  • 24242424

    CARRERAS PROFESIONALES CIBERTEC

    1 CONEXIN CON DATOS Y RECUPERACION EN ADO .NET

    La principal funcin de cualquier aplicacin de base de datos es conectarse a un origen de datos y recuperar los datos contenidos. Los proveedores de .NET Framework para ADO.NET sirven como puente entre una aplicacin y un origen de datos, permitindole ejecutar comandos y recuperar datos mediante un DataReader, DataAdapter o un TableAdapter.

    2 TRABAJO CON DATAADAPTERS

    Un DataAdapter se utiliza para recuperar datos de un origen de datos y llenar tablas con un DataSet.

    El DataAdapter, tambin, resuelve los cambios realizados en el DataSet de vuelta al origen de datos. Mediante el objeto Connection del proveedor de datos de .NET Framework, DataAdapter se conecta a un origen de datos y utiliza objetos Command para recuperarlos del origen de datos y resolver los cambios a dicho origen.

    Cada proveedor de datos de .NET Framework incluido en .NET Framework cuenta con un objeto DataAdapter:

    Proveedor Descripcin OleDataAdapter Proveedor de datos para OLE DB SqlDataAdapter Proveedor de datos para SQL Server OdbcDataAdapter Proveedor de datos para ODBC OracleDataAdapter Proveedor de datos para Oracle

    2.1 Forma de llenar un DataSet desde un DataAdapter Un DataSet representa un conjunto completo de datos que incluye restricciones y tablas, as como relaciones entre estas ltimas. Dado que DataSet es independiente del origen de datos, puede incluir datos locales de la aplicacin, as como datos de otros muchos orgenes.

    La interaccin con los orgenes de datos existentes se controla mediante el DataAdapter. La propiedad SelectCommand del DataAdapter es un objeto Command que recupera datos del origen de datos.

    El mtodo Fill del DataAdapter se usa para llenar un DataSet con los resultados de la propiedad SelectCommand del DataAdapter. El mtodo Fill acepta como argumentos un DataSet que se debe llenar y un objeto DataTable, o su nombre, que se debe llenar con las filas que devuelve SelectCommand.

    En el siguiente ejemplo de cdigo se muestra cmo crear un objeto SqlDataAdapter para llenar en el DataSet la lista de Clientes (Customers) de la base de datos Northwind de SQL Server.

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 25

    CIBERTEC CARRERAS PROFESIONALES

    3. TRABAJO CON DATAREADERS

    El DataReader de ADO.NET recupera secuencias de datos de slo lectura y slo avance de una base de datos. Los resultados se devuelven a medida que se ejecuta la consulta y se almacenan en el bfer de red del cliente hasta que se solicitan con el mtodo Read del DataReader.

    Con el DataReader puede aumentar el rendimiento de la aplicacin tanto al recuperar datos en cuanto estn disponibles como al almacenar (de forma predeterminada) una fila cada vez en memoria, lo que reduce la sobrecarga del sistema.

    Cada proveedor de datos de .NET Framework incluido en .NET Framework cuenta con un objeto DataReader:

    Proveedor Descripcin OleDataReader Proveedor de datos para OLE DB SqlDataReader Proveedor de datos para SQL Server OdbcDataReader Proveedor de datos para ODBC OracleDataReader Proveedor de datos para Oracle

    3.1 Recuperacin de datos mediante DataReader La recuperacin de datos mediante DataReader implica crear una instancia del objeto Command y de un DataReader, para lo cual se llama a Command.ExecuteReader a fin de recuperar filas de un origen de datos. En el ejemplo se muestra cmo se utiliza unSqlDataReader, donde command representa un objeto SqlCommand vlido.

    El mtodo Read del objeto DataReader permite obtener una fila a partir de los resultados de una consulta.

    Para tener acceso a cada columna de la fila devuelta, puede pasar a DataReader el nombre o referencia numrica de la columna en cuestin.

    'cn sera el Objeto SqlConnection para la Base de Datos BDFactura Dim queryString As String = _ "SELECT CustomerID, CompanyName FROM dbo.Clientes" Dim adapter As New SqlDataAdapter(queryString, cn) Dim customers As DataSet = New DataSet

    'poblar los datos en el DataSet y defina una Tabla Customers adapter.Fill(customers, "Clientes")

    'Definir el Objeto CmdReader Dim CmdReader As New SqlCommand

    'reader cargara los datos al ejecutar el Metodo ExecuteReader Dim reader As SqlDataReader = CmdReader.ExecuteReader()

  • 26262626

    CARRERAS PROFESIONALES CIBERTEC

    Sin embargo, el mejor rendimiento se logra con los mtodos que ofrece el DataReader y que permiten tener acceso a los valores de las columnas en sus tipos de datos nativos (GetDateTime, GetDouble, GetGuid, GetInt32, etc).

    En el ejemplo de cdigo siguiente se repite por un objeto DataReader y se devuelven dos columnas de cada fila.

    3.2 Cerrar el DataReader Siempre debe llamar al mtodo Close cuando haya terminado de utilizar el objeto DataReader. Tenga en cuenta que mientras est abierto un DataReader, ste utiliza de forma exclusiva el objeto Connection.

    4 TRABAJO CON COMMANDOS

    Una vez establecida una conexin a un origen de datos, puede ejecutar: Sentencias SQL, Procedimiento Almacenados, Funciones y devolver resultados desde el mismo mediante un objeto Command.

    Para crear un comando, puede utilizar el constructor Command, que toma argumentos opcionales de una instruccin SQL para ejecutar en el origen de datos, un objeto Connection y un objeto Transaction. Tambin puede crear un comando para una determinada conexin mediante el mtodo CreateCommand del objeto Connection. La instruccin SQL del objeto Command se puede consultar y modificar mediante el uso de la propiedad CommandText. Cada proveedor de datos de .NET Framework incluido en .NET Framework cuenta con un objeto Command:

    Proveedor Descripcin OleDbCommand Proveedor de datos para OLE DB SqlCommand Proveedor de datos para SQL Server OdbcCommand Proveedor de datos para ODBC OracleCommand Proveedor de datos para Oracle

    Dim str As String = "" Dim query As String = _ "SELECT CustomerID, CompanyName FROM dbo.Customers"

    'Definir el Objeto CmdReader Dim CmdReader As New SqlCommand(query, cn) Dim reader As SqlDataReader = CmdReader.ExecuteReader()

    'Preguntamos si el reader tiene filas If reader.HasRows Then 'Bucle que se ejecuta si se puede leer un registro en reader Do While reader.Read str += reader.GetString(0) + vbTab + reader.GetString(1) Loop End If 'Terminado el proceso cerrar el reader reader.Close()

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 27

    CIBERTEC CARRERAS PROFESIONALES

    4.1 Ejecucin de un comando El objeto Command expone varios mtodos Execute que puede utilizar para llevar a cabo la accin deseada.

    Mtodo Descripcin ExecuteReader Los resultados se devuelven en una secuencia

    de datos para devolver un objeto DataReader. ExecuteScalar Retorna valor Singleton. ExecuteNonQuery Se utiliza para ejecutar comandos que no

    retornan filas.

    En el siguiente ejemplo de cdigo, se muestra cmo crear un objeto SqlCommand para ver una lista de categoras de la base de datos Northwind de SQL Server.

    4.2 Ejecucin de una consulta que retorne un conjunto de resultados Los objetos Command de ADO .Net tiene un mtodo ExecuteReader el cual permite ejecutar una consulta que retorna uno o ms conjunto de resultados.

    Al ejecutar el mtodo ExecuteReader podemos pasar un parmetro al mtodo, el cual representa la enumeracin CommandBehavior, que permite controlar al Command como es ejecutado.

    A continuacin, mostramos la descripcin de los enumerables del CommandBehavior.

    Valor del CommandBehavior Descripcin CommandBehavior.CloseConnection Se utiliza para cerrar la

    conexin en forma automtica, tan pronto como el DataReader es cerrado.

    CommandBehavior.SingleResult Retorna un nico conjunto de resultados.

    CommandBehavior.SingleRow Retorna una fila.

    En el siguiente ejemplo, se muestra cmo ejecutar una sentencia SQL que visualice el nombre y precio de los artculos almacenados en la base de datos BDFactura.

    1. La sentencia SQL a Ejecutar en el comando.

    'cn sera el Objeto SqlConnection para la Base de Datos Northwind Dim cmd As New SqlCommand("Select * from dbo.Categories", cn)

    Select art_nombre, art_precio From dbo.Articulos

  • 28282828

    CARRERAS PROFESIONALES CIBERTEC

    2. Programe las siguientes sentencias para ejecutar la sentencia sql. Utilice el bloque Using.

    a. Abra la conexin cn. b. Establecer la estructura Using cmd. c. Defina un DataReader llamado reader. d. Ejecute el Command cmd con el mtodo ExecuteReader e indicar la

    numeracin CommandBehavior.CloseConnection or CommandBehavior.SingleResult.

    e. Preguntamos si tiene filas el reader (HasRows), procedemos a leer los datos, despus de la lectura, cerramos el DataReader.

    4.3 Ejecucin de procedimientos almacenados utilizando Command Los procedimientos almacenados ofrecen numerosas ventajas en el caso de aplicaciones que procesan datos. Mediante los procedimientos almacenados, las operaciones de bases de datos se pueden encapsular en un solo comando, se optimizan para lograr el mejor rendimiento y disfrutan de una seguridad adicional.

    Aunque es cierto que para llamar a un procedimiento almacenado basta con pasar en forma de instruccin SQL su nombre seguido de los argumentos de parmetros, el uso de la coleccin Parameters del objeto Command de ADO.NET permite definir ms explcitamente los parmetros del procedimiento almacenado, as como tener acceso a los parmetros de salida y a los valores devueltos.

    Un objeto Parameter se puede crear mediante el constructor Parameter o al llamar al mtodo Add de la coleccin Parameters de Command. Parameters.Add acepta como entrada argumentos del constructor o cualquier objeto Parameter ya existente. Al establecer como una referencia nula el valor de Value de un objeto Parameter, debe utilizar DBNull.Value. En el caso de parmetros que no sean de entrada (Input), debe asignar a la propiedad ParameterDirection un valor que especifique cul es el tipo de parmetro: InputOutput, Output o ReturnValue.

    'El Command ejecutara un Procedimiento Almacenado Dim cmd As New SqlCommand("usp_Vendedor", cn) 'Establecer la Propiedad CommandType cmd.CommandType = CommandType.StoredProcedure

    cn.Open() Using cmd As New SqlCommand("Select art_nombre, art_precio From dbo.Articulos", cn) Dim reader As SqlDataReader reader = cmd.ExecuteReader( _ CommandBehavior.CloseConnection Or CommandBehavior.SingleResult) If reader.HasRows Then While reader.Read ListBox1.Items.Add(reader.GetString(0) + vbTab + _ reader.GetDecimal(1).ToString) End While End If reader.Close() End Using

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 29

    CIBERTEC CARRERAS PROFESIONALES

    Para llamar a un procedimiento almacenado, establezca el CommandType del objeto Command como StoredProcedure. Al asignar el valor StoredProcedure a CommandType, puede utilizar la coleccin Parameters para definir parmetros.

    4.3.1 Ejecutar un procedimiento almacenado con parmetro. 1. Ejecute un procedimiento llamado usp_facturas_cliente

    2. Defina un objeto SqlCommand llamado cmd el cual ejecutar el procedimiento almacenado usp_facturas_cliente, defina la propiedad CommandType a StoreProcedure. Agregue el valor del parmetro @cli.

    3. Para guardar el resultado del Procedure, se crearn los objetos DataAdapter y DataSet. A continuacin, definido el Command, definiremos los objetos que guardarn los registros.

    CREATE PROCEDURE USP_FACTURAS_CLIENTE @cli char(5) AS Select * from dbo.fac_cabe Where cli_codigo=@cli

    Using cn As New SqlConnection(strcon) Dim cmd As New SqlCommand("usp_facturas_cliente", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("@cli",SqlDbType.Char).Value="C0002" ...........

    ...........

    Dim da As New SqlDataAdapter da.SelectCommand = cmd

    Dim ds As New DataSet da.Fill(ds, "Facturas") End Using

  • 30303030

    CARRERAS PROFESIONALES CIBERTEC

    LABORATORIO 2-1 CONSULTA DE DATOS, UTILIZANDO COMMAND En este escenario, se mostrar los registros almacenados en la tabla clientes de la base de datos BDFactura; para lo cual se har uso del objeto Command, para ejecutar la sentencia SQL, el objeto DataAdapter para recuperar los registros.

    1. Ingrese a Visual Studio 2005. 2. Seleccione en el men Files -> New ->Project. 3. Elija las siguientes opciones de la ventana para crear un nuevo proyecto.

    - En Project Types elija Visual Basic. - En Templates elija WindowsApplication. - En name coloque appFacturacion02. - En Location coloque C:\CursoPOOII.

    2 Disee la siguiente interface de usuario como la siguiente figura:

    3 Utilice el Namespace System.Data.SqlClient dentro de la clase Form1; agregar cdigo en el evento load del Form1 para visualizar los clientes al cargar el Form1. Luego, ejecutar el formulario.

    Objeto Propiedad Valor Label 1 Text Listado de Clientes DataGridView1

    Control Label

    Control DataGridView

    Using cn As New SqlConnection("Server=(local)\SQLEXPRESS; DataBase=DBVentas; integrated security=true") Using cmd As New SqlCommand("Select* from tb_Clientes", cn) Dim da As New SqlDataAdapter da.SelectCommand = cmd Dim ds As New DataSet da.Fill(ds, "Clientes") Me.DataGridView1.DataSource = ds.Tables("Clientes") End Using End Using

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 31

    CIBERTEC CARRERAS PROFESIONALES

    LABORATORIO 2-2 CONSULTA DE DATOS, UTILIZANDO COMANDOS PARAMETRIZADOS En este escenario desarrollaremos una consulta a las facturas por cliente, donde al seleccionar un cliente dentro de un ComboBox, visualizamos las facturas correspondientes al cliente seleccionado.

    1. Agregue un nuevo formulario de Windows al proyecto.

    2. Cuando necesitamos mostrar en un control de seleccin: ComboBox o ListBox, una lista de valores provenientes de un campo de una tabla, debemos configurar sus propiedades:

    3. Declare e inicialice el objeto Connection, a nivel clase Form2

    4. En el evento Load Form2, procedemos a cargar el ComboBox CboCliente.

    Objeto Name Propiedad Valor Label 1 Label1 Text Seleccione un Cliente ComboBox1 CboCliente DataGridView1 DGFactura

    Propiedad Descripcin DataSource Origen de datos del control. DisplayMember Campo a visualizar. ValueMember Valor del campo permanecer oculto.

    Control ComboBox

    Control DataGridView

    Private cn As New SqlConnection("Server=(local)\SQLEXPRESS; DataBase=BDFactura; integrated security=true")

    Dim cmd As New SqlCommand( _ "Select cli_codigo, cli_nombre from tb_clientes", cn) Dim da As New SqlDataAdapter da.SelectCommand = cmd Dim tabla As New DataTable da.Fill(tabla) Me.CboCliente.DataSource = tabla Me.CboCliente.DisplayMember = "NombreCia" Me.CboCliente.ValueMember = "ClienteID" Addhandler CboCliente.SelectedIndexChanged, _

    addressof CboCliente_SelectedIndexChanged

    Addhandler direcciona el evento SelectedIndexChanged del CboCliente al mtodo.

  • 32323232

    CARRERAS PROFESIONALES CIBERTEC

    5. Definir el mtodo de evento CboCliente_SelectedIndexChanged que permite desencadenar el evento SelectedIndexChanged del CboCliente, donde al seleccionar un cliente visualice las facturas.

    6. Ejecute el formulario y ejecute la seleccin en el ComboBox CboCliente.

    Private Sub CboCliente_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)

    Dim cod As String = CboCliente.SelectedValue

    Dim cmd As New SqlCommand( _ "Select * from dbo.fac_cabe Where cli_codigo=@cli", cn)

    cmd.Parameters.Add("@cli", SqlDbType.Char).Value = cod

    Dim da As New SqlDataAdapter da.SelectCommand = cmd

    Dim tabla As New DataTable da.Fill(tabla) Me.DGFactura.DataSource = tabla

    End Sub

    Consulta con parmetro @cli

    Agregar el parmetro @cli en el Command

    Poblar los datos al DataTable tabla

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 33

    CIBERTEC CARRERAS PROFESIONALES

    LABORATORIO 2-3 CONSULTA DE DATOS, UTILIZANDO PROCEDURES Y PARMETROS En este escenario, desarrollaremos una consulta a las facturas por vendedor y ao, donde al seleccionar un vendedor dentro de un ComboBox y un ao dentro de un ComboBox, visualizamos las facturas correspondientes al vendedor y ao seleccionado. 1. Agregue un nuevo formulario de Windows al proyecto.

    2. Definimos el procedimiento almacenado a ejecutar, donde, en su definicin agregamos dos parmetros.

    3. Declaracin e inicializacin del objeto Connection, a nivel clase Form.

    Objeto Name Propiedad Valor Label1 Label1 Text Vendedor Label2 Label2 Text Ao ComboBox1 CboVendedor ComboBox2 CboAo Button BtnConsulta Text Consulta DataGridView1 DGFactura

    Control ComboBox CboVendedor

    Control Button BtnConsulta

    Control ComboBox CboAo

    Control DataGridViewDGFactura

    CREATE PROCEDURE USP_FACTURA_YEAR_VENDEDOR @ven char(5), @y int As Select * from fac_cabe Where ven_codigo=@ven and year(fac_fecha)=@y

    Private cn As New SqlConnection("Server=(local)\SQLEXPRESS; DataBase=BDFactura; integrated security=true")

  • 34343434

    CARRERAS PROFESIONALES CIBERTEC

    4. En el evento Load del Form, procedemos a cargar el ComboBox CboVendedor, para lo cual ejecutamos una consulta que recupera los datos de los vendedores.

    5. En el mismo evento Load del Form, procedemos a cargar el ComboBox CboAo, para lo cual ejecutamos una consulta que recupera los datos de los Aos facturados. Observamos que los objetos se instancian para ser reutilizados.

    6. En el evento Click del botn BtnConsulta se realiza el proceso de seleccin de las facturas por ao y vendedor seleccionado. En este proceso se ejecuta el Procedure y se aade sus parmetros.

    Dim cmd As New SqlCommand( _ "Select Ven_codigo, Ven_nombre from dbo.Vendedor", cn)

    Dim da As New SqlDataAdapter da.SelectCommand = cmd

    Dim tabla As New DataTable da.Fill(tabla)

    Me.CboVendedor.DataSource = tabla Me.CboVendedor.DisplayMember = "Ven_nombre" Me.CboVendedor.ValueMember = "Ven_codigo"

    Enlazar el CboVendedor a tabla, enlazamos los datos en el DisplayMember y ValueMember

    cmd = New SqlCommand("Select distinct + _ Year(fac_fecha) as y from dbo.fac_cabe", cn)

    da = New SqlDataAdapter da.SelectCommand = cmd

    tabla = New DataTable da.Fill(tabla)

    Me.CboAo.DataSource = tabla Me.CboAo.DisplayMember = "y" Me.CboAo.ValueMember = "y"

    Enlazar el CboAo a tabla, enlazamos los datos en el DisplayMember y ValueMember

    Dim cmd As New SqlCommand("USP_FACTURA_YEAR_VENDEDOR", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("@ven", SqlDbType.Char).Value = CboVendedor.SelectedValue cmd.Parameters.Add("@y", SqlDbType.Int).Value = CboAo.SelectedValue

    Dim da As New SqlDataAdapter da.SelectCommand = cmd Dim tabla As New DataTable da.Fill(tabla) Me.DGFactura.DataSource = tabla

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 35

    CIBERTEC CARRERAS PROFESIONALES

    7. Ejecute el formulario y efectuar la seleccin.

    LABORATORIO 2-4 NAVEGACIN DE REGISTROS DE DATOS. En este escenario vamos a navegar por la filas de una tabla de un DataSet, mediante el empleo de la clase CurrencyManager.

    Qu es el objeto CurrencyManager? El objeto CurrencyManager le permite sincronizar controles enlazados a medida que un usuario examina las filas de una tabla. Por ejemplo, CurrencyManager le permite mostrar las propiedades FirstName y LastName correctas en controles TextBox enlazados diferentes a medida que un usuario examina la tabla clientes.

    Puede utilizar estos eventos para hacer un seguimiento de cundo un usuario se mueve por las filas y de cundo modifica valores de controles enlazados. En este laboratorio describe qu acciones se van a realizar para navegacin por los registros de clientes utilizando el objeto CurrencyManager.

    1. Agregar un nuevo formulario de Windows al proyecto.

    Objeto Name Propiedad Valor Label1 Label1 Text Codigo Label2 Label2 Text Nombre Label3 Label3 Text Direccion Label4 Label4 Text Ruc Textbox1 Txtcodigo Text Textbox2 Txtnombre Text Textbox3 Txtdireccion Text Textbox4 Txtruc Text Button1 Btnprimero Text |< Button2 Btnanterior Text < Button3 Btnsiguiente Text > Button4 Btnultimo Text >|

    Controles TextBox

    Controles Button

  • 36363636

    CARRERAS PROFESIONALES CIBERTEC

    2. Definimos la sentencia SQL, donde visualiza los datos de los clientes.

    3. Declaracin e inicializacin del objeto Connection, a nivel clase Form.

    4. Declarar el objeto CurrencyManager a nivel Form.

    5. En el evento Load del Form, cargamos el DataSet ds, que permitir enlazar los datos a los TextBox; luego, especificamos el CurrencyManager de la tabla.

    6. En el proceso de navegacin, a cada botn se le agregar sentencias de navegacin. En el evento del botn btnprimero, el puntero se ubicar en el primer registro.

    7. En el evento del botn btnanterior, el puntero se ubicar al registro anterior.

    8. En el evento del botn btnsiguiente, el puntero se ubicar en el registro siguiente.

    Select cli_codigo, cli_nombre, cli_direccion, cli_ruc from dbo.clientes

    Private cn As New SqlConnection("Server=(local)\SQLEXPRESS; DataBase=BDFactura; integrated security=true")

    Private WithEvents myCurrencyManager As CurrencyManager

    Dim daCust As New SqlDataAdapter( _ "Select * from dbo.clientes", cn)

    Dim ds As New DataSet() daCust.Fill(ds, "Clientes")

    txtcodigo.DataBindings.Add( _ "Text", ds.Tables!Clientes, "cli_codigo")

    txtdireccion.DataBindings.Add( _ "Text", ds.Tables!Clientes, "cli_direccion")

    txtnombre.DataBindings.Add( _ "Text", ds.Tables!Clientes, "cli_nombre")

    txtruc.DataBindings.Add( _ "Text", ds.Tables!Clientes, "cli_ruc")

    'Especificar el CurrencyManager de la tabla Clientes. myCurrencyManager = CType(Me.BindingContext(ds.Tables!Clientes), CurrencyManager)

    myCurrencyManager.Position = 0

    If myCurrencyManager.Position > 0 Then 'retroceder una fila. myCurrencyManager.Position -= 1 End If

    If myCurrencyManager.Position < myCurrencyManager.Count Then 'avanzar una fila. myCurrencyManager.Position += 1 End If

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 37

    CIBERTEC CARRERAS PROFESIONALES

    9. En el evento del botn btnultimo, el puntero se ubicar en el ltimo registro.

    Autoevaluacin

    1. Sobre la base del siguiente formulario, seleccione un mes y ao desde los controles ComboBox, y al hacer click en el botn consulta, visualice las facturas en el DataGridView que coincidan con el mes y ao seleccionado.

    2. Construya un formulario de navegacin que permita desplazarse y mostrar en los textbox los datos de las facturas al seleccionar un determinado ao en un control ComboBox. Debe de enlazar en tiempo de ejecucin.

    myCurrencyManager.Position = myCurrencyManager.Count

  • 38383838

    CARRERAS PROFESIONALES CIBERTEC

    Resumen

    En cualquier lenguaje de programacin, es necesario una conexin de datos.

    El DataAdapter tiene 4 metodos: SelectCommand ejecuta operaciones de Consulta, InsertCommand ejecuta operacin de Insercin, UpdateCommand ejecuta operaciones de Actualizacion y DeleteCommand ejecuta operaciones de eliminacin de registros a la base de datos.

    Despus de configurar el Command, se puede ejecutar. Los Command admiten 4 tipos de mtodos: ExecuteReader ejecuta una instruccin SQL o procedimiento de Consulta retornando un conjunto de registros que sern almacenados en un DataReader, ExecuteNonQuery ejecuta una instruccin SQL o procedimiento de actualizacin retornando el numero de registros afectados, ExecuteScalar ejecuta una instruccin SQL o procedimiento almacenado retornando un valor, ExecuteXMLReader obtiene datos en XML.

    El DataReader de ADO.NET recupera secuencias de datos de slo lectura y slo avance de una base de datos. Los resultados se devuelven a medida que se ejecuta la consulta y se almacenan en el bfer de red del cliente hasta que se solicitan con el mtodo Read del DataReader.

    Los comandos parametrizados y procedimientos almacenados con parmetros utilizan el objeto parameter para definir un parmetro y cargarlo al objeto command en el mtodo Command.Parameters.Add.

    Los controles enlazados a datos utilizan la propiedad DataSource; para los controles de lista de datos, utilizan dos propiedades: DisplayMember, que es el campo a visualizar y el ValueMember, que es el valor del Campo a visualizar

    .

    Si desea consultar mas acerca de estos temas puede consultar las siguientes paginas:

    http://msdn2.microsoft.com/es-es/library/ms254953(VS.80).aspx Pgina que referencia al tema de Trabajo con comandos

    http://support.microsoft.com/kb/311543/es Pgina que referencia al objeto Currency Manager

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 39

    CIBERTEC CARRERAS PROFESIONALES

    MANEJO DEL TABLEADAPTER, USANDO LINQ TO SQL

    LOGRO DE LA UNIDAD DE APRENDIZAJE

    Al trmino de la unidad, los alumnos elaboran aplicaciones Windows .NET que se conectan a un origen de datos utilizando los objetos de ADO.NET para realizar operaciones de consulta y actualizacin de datos.

    TEMARIO

    Arquitectura y componentes de ADO.NET. Administracin almacenamiento de una cadena de conexin a un origen de

    datos. Operaciones de consulta sobre un origen de datos. Recuperacin de datos utilizando DataAdapter, DataReader y Command. Manejo de TableAdapter, Usando LINQ to SQL Modificacin de datos, manejo de transacciones de datos y excepciones.

    ACTIVIDADES PROPUESTAS

    Los alumnos utilizan el asistente del Visual Studio 2005 para crear los objetos de datos enlazados a un origen de datos.

    Los alumnos realizan operaciones de consulta y actualizacin de datos en el TableAdapter.

    Los alumnos utilizan el Mapeo de datos, LINQ, para conectarse a un origen de datos, para realizar operaciones de consulta y filtro de datos.

    UNIDAD DE

    APRENDIZAJE

    1

    SEMANA

    3

  • 40404040

    CARRERAS PROFESIONALES CIBERTEC

    1. TABLEADAPTERS

    Los TableAdapters proporcionan comunicacin entre su aplicacin y una base de datos mediante la ejecucin de instrucciones SQL y procedimientos almacenados.

    Los TableAdapter se crean con el Diseador de DataSet dentro de los conjuntos de datos con establecimiento inflexible de tipos. Se pueden crear con el Asistente para Configuracin de TableAdapter, o arrastrando los objetos de base de datos del Explorador de servidores al Diseador de DataSet.

    Aunque los objetos TableAdapter se disean con el Diseador de DataSet, las clases TableAdapter generadas no se generan como clases anidadas de DataSet. Se encuentran en un espacio de nombres separado y especfico para cada conjunto de datos.

    Para tener acceso a un TableAdapter mediante programacin, debe declarar una nueva instancia del TableAdapter.

    A diferencia de los DataAdapters, los TableAdapter pueden contener varias consultas que rellenan las tablas de datos asociadas. Puede definir tantas consultas para un TableAdapter como requiera la aplicacin, con tal de que cada consulta devuelva datos que cumplan el mismo esquema que la tabla de datos asociada.

    Por ejemplo, si la aplicacin contiene una tabla de artculos, puede crear una consulta para rellenar la tabla con todos los artculos cuyo cdigo sea igual a un parmetro @cod y otra consulta para rellenar la tabla con todos los artculos.

    El nombre asignado a un TableAdapter en el momento de su creacin se basa en el nombre de la tabla con la que est trabajando.

    A continuacin, se muestran los mtodos y propiedades de TableAdapter ms utilizados:

    Dim Ds As New DsFactura Dim ArticuloTableAdapter As New _ DsFacturaTableAdapters.ArticulosTableAdapter() ArticuloTableAdapter.Fill(Ds.Articulos)

    Consulta principal del esquema de la tabla

    Consulta adicionales que retornar diferentes vistas

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 41

    CIBERTEC CARRERAS PROFESIONALES

    Miembro Descripcin

    TableAdapter.Fill Rellena la tabla de datos asociada del TableAdapter con los resultados del comando SELECT del TableAdapter.

    TableAdapter.Update Devuelve los cambios a la base de datos.

    TableAdapter.GetData Devuelve una nueva DataTable con datos.

    TableAdapter.Insert Crea una nueva fila en la tabla de datos.

    TableAdapter.ClearBeforeFill Determina si se vaca una tabla de datos antes de llamar a uno de los mtodos Fill.

    1.1 UTILIZANDO EL ASISTENTE PARA CONFIGURAR CONSULTAS DENTRO DE UN TABLEADAPTER El Asistente para la configuracin de consultas de TableAdapter ayuda a crear y editar las consultas adicionales que se pueden agregar a TableAdapters. Una consulta de TableAdapter es cualquier consulta SQL vlida o cualquier procedimiento almacenado que devuelve datos que satisfacen el mismo esquema que la tabla de datos asociada de TableAdapter o un valor escalar. Para iniciar el Asistente. 1. Abra su conjunto de datos en el Diseador de DataSet.

    2. Si est creando un nuevo TableAdapter: o Se puede Arrastrar del ToolBox al DataSet: DsFactura. o Haciendo click derecho en el DataSet DsFactura, seleccione la opcion

    Add TableAdapter.

    Seleccione el Item DataSet

    Asignarle un Nombre: DsFactura

    Permite agregar un TableAdapter.

  • 42424242

    CARRERAS PROFESIONALES CIBERTEC

    3. En la pgina Elija la conexin de datos, seleccione o cree la conexin que utilizar la consulta, al seleccionar Nueva Conexin, deber indicar el servidor, autenticacin y base de datos, presione el botn OK.

    4. En la pgina Elija un tipo de comando, seleccione entre los mtodos siguientes para obtener datos de la base de datos:

    o Usar instrucciones SQL permite escribir una instruccin SQL para seleccionar los datos de la base de datos.

    o Crear un nuevo procedimiento almacenado - El asistente crea un nuevo procedimiento almacenado (en la base de datos) segn la instruccin SELECT especificada.

    o Usar procedimientos almacenados existentes - Seleccione esta opcin para ejecutar un procedimiento almacenado existente.

    Crear una Nueva Conexin

    Establece la conexin: servidor autenticacin y base de datos

    Al seleccionar SQL Statement, en la siguiente ventana definir Select.

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 43

    CIBERTEC CARRERAS PROFESIONALES

    5. En la pgina Elegir los metodos que se van a generar, proporciona las opciones para seleccionar mtodos genera el asistente para la consulta.

    Rellenar un DataTable.- Crea un mtodo para rellenar la tabla de datos. El usuario pasa el nombre de la tabla de datos como un parmetro al llamar a este mtodo para llenar la tabla de datos con los datos devueltos. Tambin, puede cambiar el nombre predeterminado en el cuadro Nombre de mtodo.

    Devolver un DataTable.- Crea un mtodo para devolver una tabla de datos llena. Tambin puede cambiar el nombre predeterminado en el cuadro Nombre de mtodo.

    6. Al finalizar se crear un TableAdapter, con sus mtodos Fill(), GetData().

    2 ENLACE DE UNA FUENTE DE DATOS EN VISUAL STUDIO

    Visual Studio proporciona herramientas en tiempo de diseo para trabajar con objetos personalizados. El nico requisito para que los objetos personalizados trabajen con las herramientas de diseo de datos de Visual Studio es que deben contar al menos con una propiedad pblica. No se precisa ningn constructor ni atributo concreto para que los objetos personalizados trabajen con herramientas como la ventana Orgenes de datos.

    En este escenario se muestra cmo crear objetos que contengan datos de clientes y facturas, y crear a continuacin un origen de datos de objeto basado en estos objetos.

    Mtodo Fill, para llenar los datos.

    Funcin GetData, retorna los registros.

  • 44444444

    CARRERAS PROFESIONALES CIBERTEC

    2.1 MTODO DE AADIR UN DATASET AL PROJECTO 1. En la opcin Menu Project Add New Item. 2. Selecione la opcin DataSet, asignarle el Nombre Facturacin.xsd, presione

    el botn Add.

    2.2 CREACIN DE UNA CONEXIN A LA BASE DE DATOS BDFACTURA

    1. En la opcin Menu View click en Server Explorer

    2. En el Server Explorer, cree una conexin a la Base de Datos: click derecho a DataConnections, seleccione Add Connection.

    3. Cree la conexin a la base de datos BDFactura de SQL SERVER.

    2.3 CREACIN DE LA TABLA CLIENTES 1. Expanda la Data Connection y expanda el

    Nodo Tables. 2. Arrastre la tabla Clientes del Server Explorer al

    Diseador del DataSet; una tabla clientes y clientesTableAdapter son aadidos al DataSet.

    2.4 CREACIN DE TABLA FACTURAS 1. Arrastre la tabla Fac_ al Diseador del

    DataSet; la tabla fac_cabe y fac_cabeTableAdapter son aadidos.

    2.5 CREACIN DE DATARELATIONS DENTRO DEL DATASET

    1. Arrastre un objeto relation desde el ToolBox del DataSet hacia la tabla hija de la relacin (Fac_cabe).

    2. Seleccione la tabla Parent (clientes), verifique la tabla Chile (fac_cabe), se visualizan las columnas a relacionar. En tipo de relacin a crear es Relation Only, significa que slo es consulta entre ambas tablas; luego, presione el botn OK.

    3. Al presionar el botn OK se crear la relacin, en la cual aparecer en el diseador entre las dos tablas.

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 45

    CIBERTEC CARRERAS PROFESIONALES

    2.6 FORMA DE POBLAR UN DATASET CON DATOS UTILIZANDO UN TABLEADAPTER

    Para poblar un DataTable utilizando un TableAdapter, ejecute el mtodo Fill del TableAdapter para cargarlo hacia la tabla. En el Load del Form, poblar la tabla clientes del DataSet Facturacin, utilizar el mtodo Fill del TableAdapter a la tabla clientes y muestre los datos en el DataGridView.

    3 LINQ PARA .NET

    Se conoce como LINQ a un Lenguaje Integrado de Consultas (Language Integrated Query). Nos va a permitir poder manipular mejor la informacin dentro de nuestras aplicaciones.

    Se basa en varias funcionalidades, tales como colecciones que pueden incluir arreglos, clases, enumerables, XML y base de datos.

    El proyecto LINQ usa caractersticas de la versin 2.0 del .NET Framework, nuevos ensamblados relacionados con LINQ, y extensiones para los lenguajes C# y Visual Basic .NET. Microsoft ha distribuido una versin previa del LINQ, consistente de estas bibliotecas y compiladores para C# 3.0 y Visual Basic 9. Otros lenguajes, como F# y Nemerle, han anunciado brindar soporte preliminar.

    La arquitectura LINQ es el siguiente:

    Dim ds As New Facturacion Dim cli As New FacturacionTableAdapters.ClientesTableAdapter cli.Fill(ds.Clientes) Me.DataGridView1.DataSource = ds.Clientes

  • 46464646

    CARRERAS PROFESIONALES CIBERTEC

    3.1 LINQ to SQL LINQ to SQL es una implementacin de O/RM (object relational mapping, mapeador de objetos relacionales) que viene con la versin 2008 del .NET Framework, y permite modelar bases de datos relacionales con clases de .NET. Podemos consultar bases de datos con LINQ, as como actualizar/aadir/borrar datos de ellas.

    Hay dos herramientas disponibles para generar automticamente un modelo de Visual Basic o C# a partir de los metadatos de una base de datos existente: El Diseador relacional de objetos proporciona una interfaz de usuario

    completa para ayudarle a generar un modelo de objetos LINQ to SQL. Herramienta de lnea de comandos SQLMetal.

    3.1.1 Diseador relacional de objetos El Diseador relacional de objetos proporciona una superficie de diseo visual para crear clases de entidad y asociaciones (relaciones) de LINQ to SQL basadas en los objetos de una base de datos. El Diseador relacional de objetos se usa para crear un modelo de objetos en una aplicacin que se asigna a los objetos de una base de datos. Genera una clase DataContext con establecimiento inflexible de tipos, que se usa para enviar y recibir datos entre las clases de entidad y la base de datos. El Diseador relacional de objetos tambin proporciona la funcionalidad para asignar los procedimientos almacenados y funciones a los mtodos de DataContext con el fin de devolver datos y rellenar las clases de entidad. Por ltimo, el Diseador relacional de objetos permite disear relaciones de herencia entre las clases de entidad.

    3.1.2 Entendiendo la clase DataContext Visual Studio genera clases .NET para representar las entidades y las relaciones de la base de datos que hemos modelado.

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 47

    CIBERTEC CARRERAS PROFESIONALES

    Por cada archivo aadido a nuestra solucin por el diseador LINQ to SQL tambin se generar una clase DataContext. Esta clase es a travs de la cual realizaremos las consultas a las entidades de nuestra base de datos. Tendr propiedades que representarn a cada tabla que hemos modelado, as como mtodos para cada procedimiento almacenado que aadiremos.

    3.1.3 Consultando datos sobre la base de datos LINQ to SQL, admite toda la funcionalidad clave que puede esperar un programador de SQL. Puede consultar, insertar, actualizar y eliminar informacin en las tablas. En la seleccin, basta con que escriba una consulta LINQ en su propio lenguaje de programacin y, despus, la ejecuta para recuperar los resultados. LINQ to SQL convierte todas las operaciones necesarias en las operaciones SQL con las que est familiarizado. Una vez que hemos modelado nuestra base de datos con el diseador de LINQ to SQL, podemos escribir cdigo fcilmente para trabajar con l. Por ejemplo: listar los clientes y visualizarlos en el DataGridView.

    La clase tb_empleados, que representa a la tabla tb_empleados

    Dim db As New DataDBVentasDataContext Dim cliente = From c In db.tb_clientes Me.DataGridView1.DataSource = cliente

  • 48484848

    CARRERAS PROFESIONALES CIBERTEC

    LABORATORIO 3.1 MANEJO DE CONSULTA EN UN TABLEADAPTER

    En este escenario usted crear un TableAdapter, donde crear una consulta sql que permita visualizar los pedidos entre dos fechas, adems visualice la cantidad de facturas resultantes del proceso.

    1. Ingrese a Visual Studio 2005. 2. Seleccione File->New->Project. 3. Elija las siguientes opciones:

    - En Proyect Types elija Visual Basic. - En Templates elija WindowsApplication. - En Name coloque appFacturacion5. - En Location coloque C:\CursoPOOII .

    4. Dentro de la aplicacin aadir un item de tipo DataSet asgnele el nombre DBVentasDataSet.

    5. Agregue un TableAdapter de la tabla tb_pedidoscabe.

    6. A continuacin, aada un procedimiento almacenado: click derecho en el TableAdapter y seleccione Add Query tal como se muestra en la Figura.

    7. En la pgina Elija un tipo de comando seleccione la opcin: Usar instruccin SQL, presione Next.

    8. En la pgina Elija un tipo de Consulta seleccione la primera opcin: SELECT which return rows, esta opcin permite retornar un conjunto de filas, presione el botn Next.

  • PROGRAMACIN ORIENTADA A OBJE TOS I I 49

    CIBERTEC CARRERAS PROFESIONALES

    9. En la pgina Especifique una instruccin Select de SQL, defina la sintaxis del procedimiento almacenado: Select * From tb_pedidoscabe Where fechapedido between @f1 and @f2.

    Luego presione el botn Next.

    10. Asigne un nombre a la instruccin FillbyFechas, luego presione el boton Finish.

    11. A continuacin proceda a disear el formulario:

    12. A nivel Clase Form, defina el objeto DataSet: ds y el objeto TableAdapter fac_Adapter.

    13. Para listar todas las facturas en el evento Load del Formulario se cargar al DataTable fac_cabe a travs del mtodo Fill del TableAdapter y luego visualice los datos.

    Objeto Name Propiedad Valor Label1 Label1 Text Fecha 1 Label2 Label2 Text Fecha 2 DateTimePicker1 DtFecha1 Format Short DateTimePicker2 DtFecha2 Format Shor Button1 BtnConsulta Text Consulta DataGridView1 DGFacturas

    Private Ds As New DBVentaDataSet Private Pedido As New

    DBVentaDataSet.tb_pedidoscabeTableAdapter

    Pedido.Fill(Ds.Fac_cabe) Me.DGFacturas.DataSource = Ds.tb_pedidoscabe

  • 50505050

    CARRERAS PROFESIONALES CIBERTEC

    14. Para listar las facturas entre dos fechas, en el evento click del botn consulta, se ejecutar el mtodo FillBy con sus dos parmetros de fecha, que representa al Procedure creado: usp_facturas_byfechas, para cargarlo al DataTable y, luego, visualizar los datos.

    15. Ejecute y realice las pruebas.

    LABORATORIO 3.2 RELACIONES ENTRE TABLEADAPTER En este escenario, vamos a realizar un consulta entre los clientes y sus pedidos, donde al seleccionar un cliente, visualizamos los pedidos asociada al cliente seleccionado. Para ello creamos un TableAdapter para los clientes y estableceremos la relacin entre las tablas del DataSet.

    1. En el DataSet: DBVentasDataSet Agregue un TableAdapter llamado tb_clientes, el cual contenga todos los campos de dicha tabla.

    2. Creado el Tab