manual vbnet adonet

18
LPI: SQL SERVER 2008 /Visual Basic 2008 GESTION CON BASES DE DATOS ActiveX® Data Objects (ADO.NET) ADO.NET es una tecnología de acceso a datos que se basa en los objetos ADO (Objetos de Datos ActiveX) anteriores. Es una manera nueva de acceder a los datos construida sobre ADO. ADO.NET utiliza un modelo de acceso pensado para entornos desconectados. Esto quiere decir que la aplicación se conecta al origen de datos, hace lo que tiene que hacer, por ejemplo seleccionar registros, los carga en memoria y se desconecta del origen de datos. ADO.NET es un conjunto de clases que el usuario utiliza para acceder y manipular orígenes de datos como por ejemplo, una base de datos en SQL Server o una planilla Excel. El modelo de objetos ADO.NET tiene dos componentes centrales: una capa conectada, con clases compuestas por el proveedor de datos .NET y una capa desconectada, cuya raíz es DataSet. EL NUEVO MODELO DE DATOS DE MICROSOFT ES ADO.NET ESTE MODELO DESCANSA EN UNA SERIE DE OBJETOS ESPECIALIZADOS QUE FACILITAN EL PROCESAMIENTO DE UNA BASE DE DATOS. Fuente microsoft.net El problema es comunicar un programa o aplicación con una base de datos y más que comunicar se pretende que el programa o aplicación realice una serie de Profesor: Bayona Ramos Página 1

Upload: jesushughes

Post on 26-Jul-2015

124 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

GESTION CON BASES DE DATOSActiveX® Data Objects (ADO.NET)

ADO.NET es una tecnología de acceso a datos que se basa en los objetos ADO (Objetos de Datos ActiveX) anteriores. Es una manera nueva de acceder a los datos construida sobre ADO.

ADO.NET utiliza un modelo de acceso pensado para entornos desconectados. Esto quiere decir que la aplicación se conecta al origen de datos, hace lo que tiene que hacer, por ejemplo seleccionar registros, los carga en memoria y se desconecta del origen de datos.

ADO.NET es un conjunto de clases que el usuario utiliza para acceder y manipular orígenes de datos como por ejemplo, una base de datos en SQL Server o una planilla Excel.

El modelo de objetos ADO.NET tiene dos componentes centrales: una capa conectada, con clases compuestas por el proveedor de datos .NET y una capa desconectada, cuya raíz es DataSet. 

EL NUEVO MODELO DE DATOS DE MICROSOFT ES ADO.NET ESTE MODELO DESCANSA EN UNA SERIE DE OBJETOS ESPECIALIZADOS QUE FACILITAN EL PROCESAMIENTO DE UNA BASE DE DATOS.

Fuente microsoft.net

El problema es comunicar un programa o aplicación con una base de datos y más que comunicar se pretende que el programa o aplicación realice una serie de procesos y operaciones con la base de datos o mejor aun con el conjunto de tablas que contiene una base de datos.

ADO.NET se encuentra en la biblioteca System.Data.dll, y ofrece clases en espacios de nombres bien diferenciados que se explica a continuación: System.Data: es el espacio de nombres primario. Dentro de este espacio de nombres tenemos un conjunto de clases que representan, digamos, una base de datos virtual, tablas, filas, columnas, relaciones, etc. Sin embargo, ninguna de estas clases ofrece conexión alguna con un origen de datos, sino que simplemente representan los datos en sí mismos. 

Profesor: Bayona Ramos Página 1

Page 2: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

System.Data.OleDb: contiene una serie de clases que nos permiten conectarnos con cualquier origen de datos e interactuar con él al tiempo que sirven de "intermediarios" entre el origen de datos y las clases del espacio de nombres System.Data que, según decíamos, no tienen conexión alguna con dicho origen de datos. Las clases de System.Data.OleDb usan OLEDB como tecnología subyacente. System.Data.SqlClient: contiene clases que permiten interactuar con orígenes de datos SQL Server de un modo mucho más directo que OLEDB, mejorando el rendimiento para este tipo de origen de datos. Por lo tanto, solamente se pueden utilizar para acceder a bases de datos de SQL Server. El uso de sus clases es prácticamente equivalente al de las que se encuentran en System.Data.OleDb. 

 LAS CLASES BÁSICAS DE ADO.NET

 Las he llamado básicas porque, realmente, serán el pilar fundamental para casi cualquier aplicación que tenga que acceder a un origen de datos con unos mínimos requisitos de eficiencia y escalabilidad. Las clases más importantes del espacio de nombres System.Data son: DataSet: Es la piedra angular del modelo de objetos: Esta clase permite tener en memoria una auténtica "base de datos virtual", con sus tablas, relaciones, etc. Un hecho importante es que esta base de datos virtual está total y absolutamente desconectada de cualquier origen de datos físico y, en consecuencia, siempre se aloja toda entera en la memoria. En otras palabras, puede contener uno o varios conjuntos de filas distintos, que pueden estar o no estar relacionados entre sí, pero siempre en la memoria y siempre desconectados del origen de datos. La clase DataSet está dentro del espacio de nombres System.Data.

 DataTable: un DataTable representa un conjunto de filas y columnas también en memoria y desconectado del origen de datos, como el DataSet. Pertenece al espacio de nombres System.Data. La propiedad Tables de un objeto DataSet contiene una colección de objetos DataTable, y dicha colección es de la clase DataTableCollection. Por otra parte, cada objeto DataTable representa sus filas en la propiedad Rows (de la clase DataRowCollection), siendo cada fila, a su vez, un objeto de la clase DataRow, y sus columnas en la propiedad Columns (de la clase DataColumnCollection), siendo cada columna un objeto de la clase DataColumn. DataRelation: representa una relación entre dos objetos DataTable. También pertenece al espacio de nombres System.Data. Todas las relaciones que haya en un DataSet se encuentran en la colección Relations, de la clase DataRelationCollection. Las clases más importantes del espacio de nombres System.Data.SqlClient, y sus equivalentes en el espacio de nombres System.Data.OleDb:

Profesor: Bayona Ramos Página 2

Hay 3 espacios de nombres que usted va a importar en un formulario Web si esta usando ADO.NET:• System.Data. • System.Data.SqlClient. • System.Data.OleDb.

Recuerde la sentencia que usa VB.NET para importar el espacio de nombres:

Imports System.Data                    'Siempre lo va a utilizarImports System.Data.SqlClient     'Para acceder a SQL ServerImports System.Data.OleDb.         'Para cualquier origen de datos

Page 3: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

SqlConnection: su equivalente en OleDb es OleDbConnection. Proporcionan la conexión con el origen de datos y mantiene algunas de sus antiguas propiedades y métodos, como son ConnectionString, Open y Close.

SqlCommand: su equivalente en OleDb es OleDbCommand. Representan procedimientos almacenados o instrucciones SQL que se ejecutan en el origen de datos.

SqlParameter: su equivalente en OleDb es OleDbParameter. Representan un parámetro dentro de la colección Parameters del objeto SqlCommand u OleDbCommand, según el caso. La colección Parameters de un objeto SqlCommand es de la clase SqlParameterCollection (OleDbParameterCollection en OleDb).

 SqlDataAdapter: su equivalente en OleDb es OleDbDataAdapter. Es el encargado de llevar a la conexión establecida en el objeto Connection, el comando con los requerimientos deseados y depositar los resultados obtenidos en otro objeto llamado DataSet(conjunto de datos) para poder utilizarlos y/o manipularlos en una aplicación.Contiene un conjunto de objetos SqlCommand (ú OleDbCommand, según proceda) en sus propiedades SelectCommand, InsertCommand, UpdateCommand y DeleteCommand. Cuando se invoca el método Fill, el DataAdapter rellena un objeto DataSet o DataTable con el conjunto de filas resultante de ejecutar el comando establecido en su propiedad SelectCommand. Cuando se invoca el método Update, el DataAdapter ejecuta el comando establecido en su propiedad InsertCommand para añadir al origen de datos las filas nuevas añadidas a un DataTable, el comando UpdateCommand para modificar las filas que hayan sido modificadas en el DataTable y el comando DeleteCommand para eliminar las filas que hayan sido eliminadas en el DataTable. Por lo tanto, el DataAdapter es el nexo que une los objetos DataSet y DataTable, totalmente desconectados, con el origen de datos físico. Si la conexión estaba cerrada antes de ejecutar los métodos Fill o Update, el DataAdapter se ocupa de abrir dicha conexión para efectuar la operación requerida, cerrando de nuevo la conexión una vez que ha terminado. Si la conexión estaba abierta, el DataAdapter deja que dicha conexión siga abierta después de haber terminado.

Resumiendo Objetos de Proveedores de

Datos .NETPropósito Objeto SQL Server

7.0 o 2000Objeto para un origen

OLEDB

ConnectionProvee conectividad a un Origen de Datos

SqlConnection OleDBConnection

CommandProvee acceso a comandos de Base de Datos como Select, Delete, Insert y Update

SqlCommand OleDBCommand

DataReaderProvee acceso a datos de solo lectura

SqlDataReader OleDBDataReader

DataAdapter

Utiliza el objeto Connection para enlazar un objeto DataSet con un Proveedor de Datos. También permite actualizar los Datos en el origen a partir de las modificaciones hechas en el DataSet.

SqlDataAdapterOleDBDataAdapter

Profesor: Bayona Ramos Página 3

Page 4: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

Los datos siempre viajan en formato XML ASP.NET y ADO.NET transforman en forma automática XML en un DataSet.

Aplicaciones.- Conexión a la BDD NEPTUNO, en consulta de registros.

Profesor: Bayona Ramos Página 4

Un DataSet guarda información en un entorno desconectado. Después de que usted establece una conexión con una Base de Datos entonces puede acceder a sus datos.El DataSet es la principal forma de guardar datos cuando usted utiliza ADO.NET

El DataSet permite a usted guardar datos que se obtuvieron de un origen de datos. Los datos en un DataSet pueden ser manipulados sin necesidad que el formulario Web mantenga la conexión con el origen de datos. La conexión se reestablece recién cuando usted necesita actualizar los cambios

Page 5: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

Propiedades de los controles del formularioFormulario Text: COMPONENTES ADO NET Position:CenterScreenButton1: Name : btnConectar Text : &ConectarButton2: Name : btnSalir Text : &SalirLabel2: Name : LBLTOT BorderStyle : Fixed3D Imports System.DataImports System.Data.sqlclientPublic Class Form1 'Cadena de Conexión Dim Cn As New SqlConnection _ ("Server=(Local);DataBase=Neptuno;Integrated Security=True")Private Sub btnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConectar.Click Dim Mensaje As String Try Dim Dt As New DataTable 'Tabla en memoria Dim CadSql$ = "Select * From Clientes" 'Cadena SQL

'Abrir el Adaptador de datos con la cadena SQL Dim Da As New SqlDataAdapter(CadSql, Cn) 'LLenar en la Tabla en Memoria con los registros Da.Fill(Dt)

Profesor: Bayona Ramos Página 5

RadioButton1 Name: RBN1 Text: Mostrar todos los pedidosRadioButton1 Name: RBN2 Text: Clientes con PedidosRadioButton3Name: RBN2 Text: Clientes con Pedidos

Page 6: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

Me.DataGridView1.DataSource = Dt 'Mostrar en el Grid Da.Dispose() : Dt.Dispose() 'Liberar los objetos Catch ex As SqlException Select Case ex.Number Case 4060 : Mensaje = "No Existe la Base Datos" Case 17 : Mensaje = "No Tiene Acceso al Servidor" Case 156, 170 : Mensaje = "Error!!!de Sintaxis" Case 208 : Mensaje = "Nombre de Objeto Invalido" Case Else Mensaje = ex.Message End Select MessageBox.Show(Mensaje, " ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub'PROCEDIMIENTO QUE MUESTRA REGISTROS SQL Public Sub Mostrar(ByVal SqlCad As String) Dim Dt As New DataTable Dim Da As New SqlDataAdapter(SqlCad, Cn) Da.Fill(Dt) Me.DataGridView1.DataSource = Dt Me.LBLTOT.Text = Dt.rows.countEnd SubPrivate Sub RBN1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RBN1.CheckedChanged Dim Cadena$ = "Select * from PEDIDOS" Call Mostrar(Cadena)End Sub

Private Sub RBN2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RBN2.CheckedChanged Dim Cadena$ Cadena = "SELECT * FROM PEDIDOS " _ & "WHERE IdCliente IN (SELECT IdCliente FROM CLIENTES) " _ & "ORDER BY IdCliente" Call Mostrar(Cadena)End Sub

Private Sub RBN3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RBN3.CheckedChanged Dim STRSQL As String 'Mostrar Facturas por Fechas STRSQL = "SELECT * FROM PEDIDOS " _ & "WHERE FechaPedido BETWEEN '1994/01/01' AND '1995/12/31' " _ & "ORDER BY FechaPedido" Call Mostrar(STRSQL) End SubEnd Class

EJERCICIO #2: Desarrolle una aplicación donde se ingrese el Código de un Producto y Muestre el registro del producto ingresado.

Profesor: Bayona Ramos Página 6

Page 7: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

Imports System.DataImports System.Data.sqlclientPublic Class Form2 'Cadena de Conexión Dim Cn As New SqlConnection ("Server=(Local);DataBase=Neptuno;Integrated Security=True")

Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click 'Buscar el Código del Producto Dim Dt As New DataTable Dim Criterio As String= "" Criterio = "Select IdProducto,NombreProducto,PrecioUnidad, " _ & "UnidadesEnExistencia,IdCategoria FROM productos " _ & "where IdProducto='" & Me.TXTCOD.Text & "'" Dim Da As New SqlDataAdapter(Criterio, Cn) Da.Fill(Dt) Dim Nr As Integer = Dt.Rows.Count 'cANTIDAD DE REGISTROS If Nr > 0 Then ‘Si HAY REGISTROS Me.TXTDES.Text = Dt.Rows(0)(1) ' FILA COL Me.TXTPRE.Text = Dt.Rows(0)(2) Me.TXTSTK.Text = Dt.Rows(0)(3) Me.TXTCAT.Text = Dt.Rows(0)(4) Me.DataGridView1.DataSource = Dt FORMATO_GRID() Else MessageBox.Show("ERROR!!!CODIGO NO EXISTE") End If End Sub 'PERSONALIZAR EL DATAGRIDVIEW Public Sub FORMATO_GRID() With Me.DataGridView1 .Columns(0).HeaderText = "CODIGO" .Columns(0).Width = 30 .Columns(0).ReadOnly = True 'SOLO LECTURA .Columns(0).Frozen = True 'INMOVILIZAR COLUMNAS

.Columns(1).HeaderText = "PRODUCTO" .Columns(1).Width = 200 .Columns(1).ReadOnly = True 'SOLO LECTURA

.Columns(2).HeaderText = "PRECIO" .Columns(2).Width = 80 .Columns(2).ReadOnly = True 'SOLO LECTURA

.Columns(3).HeaderText = "STOCK" .Columns(3).Width = 60 .Columns(3).ReadOnly = True 'SOLO LECTURA

.Columns(4).HeaderText = "IDCAT" .Columns(4).Width = 50 .Columns(4).ReadOnly = True 'SOLO LECTURA End With End Sub

APLICACION # 3:

Profesor: Bayona Ramos Página 7

Page 8: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

Realizar una consulta que nos permita visualizar los PEDIDOS de un cliente Seleccionado, al Seleccionar un PEDIDO mostrará en un DataGridView el detalle de los pedidos registrados, el total del detalle se mostrará en una etiqueta.

En el ComboBox1 mostrará todos clientes, operar con los campos (IdCliente,NombreCompañia) Al Dar Clic en el ComboBox1 mostrará en el listBox1 los pedidos emitidos por el cliente Seleccionado. Al Dar clic en el ListBox1 mostrará en el DataGridView1 el detalle de los pedidos Seleccionados.

Propiedades de los controles del formularioComboBox1: Name : CBOCLIENTESListBox1: Name : LSTPEDIDOSDataGridView1: Name : DGVDETALLEImports System.DataImports System.Data.sqlclientPublic Class Frm3_Clientes Dim Cn As New SqlConnection _ ("Server=(local); DataBase=Neptuno; Integrated Security=True")Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try 'Mostrar el nombre de la Categoría al cargarse el Form Dim TabCli As New DataTable Dim Sql$ = "Select IdCliente,NombreCompañia from Clientes" Dim Da As New SqlDataAdapter(Sql, Cn) Da.Fill(TabCli) Me.CBOCLIENTES.DataSource = TabCli Me.CBOCLIENTES.DisplayMember = "NombreCompañia" 'CAMPO A DISPLAYAR Me.CBOCLIENTES.ValueMember = "IdCliente" 'CODIGO KEY Da.Dispose() 'LIBERAR OBJETO Catch ex As Exception Messagebox.Show(ex.Message) End Try End Sub

Private Sub CBOCLIENTES_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBOCLIENTES.SelectedIndexChanged Try

Profesor: Bayona Ramos Página 8

Page 9: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

Dim CadSql$ = "Select IdPedido,IdCliente From Pedidos " _ & "Where IdCliente='" & Me.CBOCLIENTES.SelectedValue & "'" Dim Da As New SqlDataAdapter(CadSql, Cn) Dim TabPEDIDOS As New DataTable Da.Fill(TabPEDIDOS) Me.LSTPEDIDOS.DataSource = TabPEDIDOS Me.LSTPEDIDOS.DisplayMember = "IDPEDIDO" Me.LSTPEDIDOS.ValueMember = "IDPEDIDO" Me.LBLCAN.Text = TabPEDIDOS.Rows.Count 'CANTIDAD DE PEDIDOS Da.Dispose() 'LIBERAR OBJETO Catch ex As Exception End Try End SubPrivate Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LSTPEDIDOS.SelectedIndexChanged Try

Dim Sql$ = "Select IdPedido,IdProducto,PrecioUnidad,Cantidad,PrecioUnidad*Cantidad as Importe from [Detalles de Pedidos] " _

& "Where Idpedido='" & Me.LSTPEDIDOS.SelectedValue & "'" Dim Da As New SqlDataAdapter(Sql, Cn) Dim TABDETALLE As New DataTable Da.Fill(TABDETALLE) Me.DGVDETALLE.DataSource = TABDETALLE Me.LBLTOT.Text = TABDETALLE.Compute("SUM(IMPORTE)", "") Da.Dispose() TABDETALLE.Dispose() Catch ex As Exception End TryEnd Sub Private Sub BtnSig_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSig.Click Dim FRM As New Frm4_Empleados 'INSTANCIAR AL FORMULARIO EMPLEADOS Me.Hide() 'OCULTAR EL FORMULARIO ACTUAL FRM.Show() 'MOSTRAR EL FORMULARIO EMPLEADOS End SubEnd Class

EJERCICIO #4: Realice una Consulta consulta donde seleccione todos los PROVEEDORES en una DataGridView1, luego al seleccionar un Proveedor muestre todos los productos registrados en otro DataGridView2

Imports System.DataImports System.Data.sqlclientPublic Class Frm2_Proveedores

Profesor: Bayona Ramos Página 9

DGVPROV

DGVPROD

Page 10: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

Dim Cn As New SqlConnection _ ("Server=(local);DataBase=NEPTUNO;Integrated Security=True") Private Sub Frm2_Proveedores_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try Dim CadSql$ = "SELECT IdProveedor, NombreCompañia, Pais " _ & " FROM PROVEEDORES" Dim TabProv As New DataTable Dim Da As New SqlDataAdapter(CadSql, Cn) Da.Fill(TabProv) Me.DGVPROV.DataSource = TabProv Da.Dispose() Catch ex As Exception MessageBox.Show("Error!!!" & ex.Message) End Try End SubPrivate Sub DGVPROV_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DGVPROV.CurrentCellChanged Try Dim IdCodigo As Integer = Me.DGVPROV(0, Me.DGVPROV.CurrentCell.RowIndex).Value Dim Sql$ = "SELECT IdProducto,NombreProducto,IdProveedor,PrecioUnidad FROM PRODUCTOS " _ & " WHERE IdProveedor='" & IdCodigo & "'" Dim TabProd As New DataTable Dim Da As New SqlDataAdapter(Sql, Cn) Da.Fill(TabProd) Me.DGVPROD.DataSource = TabProd Me.LBLCAN.Text = TabProd.Rows.Count Catch ex As Exception End Try End Sub

Private Sub BtnSig_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSig.Click Dim FRM As New Frm3_Clientes 'INSTANCIAR AL FORMULARIO PROVEEDORES Me.Hide() 'OCULTAR EL FORMULARIO CATEGORIAS FRM.Show() 'MOSTRAR EL FORMULARIO PROVEEDORES End SubEnd Class

MANEJO DEL SqlDataAdapter y DataSet

Profesor: Bayona Ramos Página 10

Page 11: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

5.- Realice una Consulta que permita mostrar en un ComboBox1, el nombre del empleado de la tabla EMPLEADOS, al seleccionar un empleado en el comboBox1 mostrará todos los pedidos del empleado seleccionado, así como la foto del empleado.

Imports System.DataImports System.Data.SqlClientImports System.ioPublic Class Frm4_Empleados Dim DS As New DataSet 'CREACION DEL OBJETO DE LA CLASE DATASET Private Sub Frm5_Empleados_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try Dim SQL$ = "Select IdEmpleado, Apellidos from Empleados" Dim Da As New SqlDataAdapter(SQL, CN) Da.Fill(DS, "TabEmp") Me.CBOEMP.DataSource = DS.Tables("TabEmp") Me.CBOEMP.DisplayMember = "Apellidos" Me.CBOEMP.ValueMember = "IdEmpleado" Catch ex As Exception End Try End SubPrivate Sub CBOEMP_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBOEMP.SelectedIndexChanged Try Dim SQl$ = "Select * from pedidos " _ & "Where IdEmpleado='" & Me.CBOEMP.SelectedValue & "'" DS = New DataSet 'Instanciar el dataset Dim Da As New SqlDataAdapter(SQl, CN) Da.Fill(DS, "TabPedidos") Me.DataGridView1.DataSource = DS.Tables("TabPedidos") Me.LBLTOT.Text = DS.Tables("TabPedidos").Rows.Count 'cantidad 'Mostrar la Imagen Gráfica Dim Cad$ = "Select Foto from Empleados where IdEmpleado='" & _ Me.CBOEMP.SelectedValue & "'" Dim TblG As New DataTable Dim dat As New SqlDataAdapter(Cad, CN) dat.Fill(TblG) Dim Bits As Byte() = CType(TblG.Rows(0)("foto"), Byte()) Dim Offset As Integer = 78 Dim Ms As New MemoryStream Ms.Write(Bits, Offset, Bits.Length - Offset) 'Grabar el Picture Dim Bitmap As New Bitmap(Ms) Ms.Close() Me.PicImagen.SizeMode = PictureBoxSizeMode.StretchImage Me.PicImagen.Image = Bitmap Catch ex As Exception End Try End SubEnd ClassDataView (Clase): Representa una vista personalizada que puede enlazar datos de un DataTable para ordenación, filtrado, búsqueda, edición y exploración.

Espacio de nombres: System.Data

Profesor: Bayona Ramos Página 11

Page 12: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

Imports System.DataImports System.Data.SqlClientPublic Class FrmClientes Dim Cn As New SqlConnection("Server=(local)\sqlExpress;DataBase=Neptuno;Integrated Security=True") Public Function TablaClientes() As DataTable Dim MiTabla As New DataTable Dim Sql$ = "SELECT IdCliente,NombreCompañia,NombreContacto,Ciudad,Pais FROM CLIENTES" Dim Da As New SqlDataAdapter(Sql, Cn) Da.Fill(MiTabla) Return MiTabla End Function Private Sub FrmClientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Cuando se carga el formulario a la memoria Try Dim Dt As DataTable = TablaClientes() Me.DGVCLIENTES.DataSource = Dt Catch ex As Exception End Try End Sub

Private Sub RBNCOD_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RBNCOD.CheckedChanged Dim MiDataview1 As New DataView 'Crear el objeto que hace referencia al dataview Dim Dt1 As DataTable = Me.TablaClientes() MiDataview1 = Dt1.DefaultView 'Pasar de la tabla a la vista MiDataview1.Sort = "IdCliente" 'Ordenarlo por Código del cliente Me.DGVCLIENTES.DataSource = MiDataview1 'Origen de datos es la Vista Me.LBLTOT.Text = MiDataview1.Count 'CANTIDAD DE REGISTROS End Sub

Private Sub RBNClIENTE_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RBNClIENTE.CheckedChanged Dim MiDataview2 As New DataView 'Crear el objeto que hace referencia al dataview

Profesor: Bayona Ramos Página 12

Page 13: Manual Vbnet Adonet

LPI: SQL SERVER 2008 /Visual Basic 2008

Dim Dt1 As DataTable = Me.TablaClientes() MiDataview2 = Dt1.DefaultView MiDataview2.Sort = "NombreCompañia DESC" Me.DGVCLIENTES.DataSource = MiDataview2 Me.LBLTOT.Text = MiDataview2.Count 'CANTIDAD DE REGISTROS End Sub Private Sub RBNPAIS_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RBNPAIS.CheckedChanged Dim MiDataview3 As New DataView 'Crear el objeto que hace referencia al dataview Dim Dt1 As DataTable = Me.TablaClientes() MiDataview3 = Dt1.DefaultView MiDataview3.Sort = "Pais" Me.DGVCLIENTES.DataSource = MiDataview3 End Sub

Private Sub txtCli_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCli.TextChanged Try Dim DV As New DataView Dim Criterio = "NombreCompañia LIKE '" & Me.txtCli.Text & "%'" DV = TablaClientes().DefaultView DV.RowFilter = Criterio 'FILTRAR SEGUN CRITERIO Me.DGVCLIENTES.DataSource = DV Formato_Grid() Catch ex As Exception End Try End Sub Public Sub Formato_Grid() Me.DGVCLIENTES.Columns(0).HeaderText = "CODIGO" Me.DGVCLIENTES.Columns(0).Width = 60 Me.DGVCLIENTES.Columns(0).ReadOnly = True

Me.DGVCLIENTES.Columns(1).HeaderText = "COMPAÑIA" Me.DGVCLIENTES.Columns(1).Width = 120 Me.DGVCLIENTES.Columns(1).ReadOnly = True

Me.DGVCLIENTES.Columns(2).HeaderText = "CONTACTO" Me.DGVCLIENTES.Columns(2).Width = 120 Me.DGVCLIENTES.Columns(2).ReadOnly = True

Me.DGVCLIENTES.Columns(3).HeaderText = "CIUDAD" Me.DGVCLIENTES.Columns(3).Width = 100 Me.DGVCLIENTES.Columns(3).ReadOnly = True

Me.DGVCLIENTES.Columns(4).HeaderText = "PAIS" Me.DGVCLIENTES.Columns(4).Width = 100 Me.DGVCLIENTES.Columns(4).ReadOnly = True End SubEnd Class

Profesor: Bayona Ramos Página 13