SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
 
 
 
 
 


    Acceso a Datos
    Visual Basic .NET 2005
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Capítulo I
 •   Acceso a datos
 •   Lectura de datos
 •   Inserción
 •   Actualización
 •   Eliminación
                                                                                   Acceso a Datos con VB .NET 2005 



Acceso a datos
En  este  capítulo  realizaremos  una  conexión,  lectura,  inserción,  actualización  y  eliminación  de  datos 
creando aplicaciones en Visual Basic .NET 2005 con el Framework 2.0 a través del SQL Server 2000. 

Crear  un  nuevo  proyecto  denominado  WAccesoDatos,  la  tabla  a  consultar  será  Products  de  la  BD 
NorthWind. 

Después de crear el proyecto agregar las Referencias para poder acceder a los Datos como lo indica en 
la Fig. 01: 




                                                                                                                     
                                    Fig. 01: Agregar Referencias al Proyecto 

Respecto al código del formulario, primero vamos a declarar varios objetos de acceso a datos a nivel de 
la clase para poder tenerlos disponibles en diversos métodos. Veamos el Código fuente en la Fig. 02: 




                                                                                                                 
                      Fig. 02: Variables declaradas con los Objetos para el Acceso a Datos 

Ing. Eduardo Reyes                                                                                                      2
 
                                                                                         Acceso a Datos con VB .NET 2005 



En  el  formulario  del  proyecto  agregamos  un  DataGridView  para  poder  mostrar  los  datos  a  enlazar, 
quedando el Form1 de la siguiente manera como se muestra en la Fig. 03: 




                                                                                                                         
                           Fig. 03: Formulario (Form1) con el DataGridView (dgVer) 

En el siguiente paso escribiremos el código dentro del evento Load del formulario, el cual se ocupa de 
crear  la  conexión  con  la  BD,  crear  el  DataAdapter  con  la  consulta,  cargar  el  DataSet,  y  asignárselo  al 
DataGrid a través de su propiedad DataSource. Ver la Fig. 04 

Una vez escrito el código correctamente como se encuentra en la Fig. 04 se pasa a ejecutar el formulario 
y debe de mostrar los datos consultados tal como se muestran en la Fig. 05 




                                                                                                   
                          Fig. 05: Formulario con los Datos mostrados en el DataGrid 



Ing. Eduardo Reyes                                                                                                          3
 
                                                                              Acceso a Datos con VB .NET 2005 




                                                                                                                  
             Fig. 04: Código para poder Acceder a los Datos de la Tabla Products de Northwind 

No olvidar que en la línea de código de conexión: 

cnx = ("server=Srv01;database=Northwind;Trusted_Connection=True") 

 En la parte donde se encuentra el nombre del server debe de ir el nombre de tu servidor de base de 
datos en este caso el mío es Srv01. 

 

 

 

 

 

 

 

 

 

 

Ing. Eduardo Reyes                                                                                               4
 
                                                                                      Acceso a Datos con VB .NET 2005 



Lectura de datos
DataReader 

En  esta  parte  realizaremos  una  lectura  (consulta  de  datos)  utilizando  objetos  DataReader,  un  objeto 
DataReader  permite  la  navegación  hacia  delante  y  de  sólo  lectura,  de  los  registros  devueltos  por  una 
consulta.  

Ahora  crearemos  dentro  del  proyecto  denominado  WAccesoDatos  un  nuevo  formulario  al  cual  lo 
llamaremos frmLeerDatos, luego agregamos los siguientes controles los cuales nos mostraran el uso de 
objetos DataReader. 

                          Control                            Name
                          Button1                            btnEmpleados
                          Button2                            btnCliProd
                          ListBox1                           lstEmpleados
                          ListBox2                           lstClientes
                          ListBox3                           lstProductos
 

Después de agregar los controles que describimos anteriormente, el formulario frmLeerDatos debe de 
quedar como se muestra en la Fig. 06. 




                                                                                       
                                       Fig. 06: Formulario frmLeerDatos 

Ahora  realizaremos  la  codificación  del  botón  Empleados  creando  a  partir  de  un  comando,  un  objeto 
DataReader  que  recorreremos  para  llenar  un  ListBox  (lstEmpleados)  con  los  valores  de  una  de  las 
columnas de la tabla que internamente contiene el DataReader. Ver la Fig. 07. 

Después realizamos la codificación del botón Clientes/Productos que tendrá un objeto Command el cual 
puede estar basado en múltiples sentencias SQL, separadas por el carácter de punto y coma ( ; ), que se 
ejecuten en lote. Al crear un DataReader desde un comando de este tipo, podemos recorrer el conjunto 
de consultas mediante el método NextResult( ) del DataReader. Un ejemplo de este tipo lo tenemos al 
pulsar el botón Clientes/Productos del formulario, cuya fuente vemos a continuación en la Fig. 08. 

La  Fig.  09  muestra  al  formulario  después  de  haber  rellenado  los  controles  ListBox  usando  objetos 
DataReader. 



Ing. Eduardo Reyes                                                                                                       5
 
                                                                       Acceso a Datos con VB .NET 2005 




                                                                                                       

                          Fig. 07: Código del Botón Empleados. 




                                                                                                       

                      Fig. 08: Código del Botón Clientes/Productos. 

                                             




Ing. Eduardo Reyes                                                                                        6
 
                                                                                    Acceso a Datos con VB .NET 2005 




                                                                                         

                            Fig. 09: ListBox llenados con los objetos DataReader 

DataSet 

DataSet  pertenece  al  conjunto  común  de  clases  de  ADO  .NET,  empleándose  para  todo  tipo  de 
proveedores, por lo que no existe una versión particular para SqlClient u OleDb. 

En  el  formulario  frmLeerDatos  agregar  los  siguientes  controles  el  cual  nos  servirá  para  realizar  un 
sencillo ejemplo de creación de un objeto DataSet que llenaremos con un DataAdapter. Una vez listo el 
DataSet, recorreremos la tabla que contiene y mostraremos valores de sus columnas en un ListBox. 

                          Control                           Name
                          Button1                           btnCustomers
                          ListBox1                          lstCustomers
 

Después de agregar los controles que describimos anteriormente el formulario debe de quedar como se 
muestra en la Fig. 10. 




                                                                                     

                                      Fig. 10: Formulario frmLeerDatos 


Ing. Eduardo Reyes                                                                                                     7
 
                                                                                   Acceso a Datos con VB .NET 2005 



Ahora codificamos del botón Customers creando una consulta a partir de un DataAdapter, una vez listo 
el  DataSet  recorreremos  el  ListBox  (lstCustomers)  para  recorrer  y  mostrar  los  datos  de  una  de  las 
columnas de la tabla Customers. Ver la Fig. 11. 




                                                                                                                       

                                    Fig. 11: Código del Botón Customers 

 

La  Fig.  12  muestra  al  formulario  después  de  haber  rellenado  los  controles  ListBox  usando  objetos 
DataSet. 

 




                                                                                     

                               Fig. 12: ListBox llenados mediante un DataSet 

 

 



Ing. Eduardo Reyes                                                                                                        8
 
                                                                                     Acceso a Datos con VB .NET 2005 



Inserción
DataAdapter 

Los objetos DataAdapter (SqlDataAdapter y OleDbDataAdapter) van a desempeñar el papel de puente 
entre el origen de datos y el DataSet, permitiéndonos cargar el DataSet con la información de la fuente 
de datos, y posteriormente, actualizar el origen de datos con la información del DataSet. 

Un  objeto  DataAdapter  puede  contener  desde  una  sencilla  sentencia  SQL,  como  hemos  visto  en  el 
apartado anterior, hasta varios objetos Command. 

La  clase  DataAdapter  dispone  de  cuatro  propiedades,  que  nos  van  a  permitir  asignar  a  cada  una,  un 
objeto  Command  (SqlCommand  u  OleDbCommand)  con  las  operaciones  estándar  de  manipulación  de 
datos. Estas propiedades son las siguientes. 

     •    InsertCommand. Objeto de la clase Command, que se va a utilizar para realizar una inserción de 
          datos. 
     •    SelectCommand. Objeto de la clase Command que se va a utilizar para ejecutar una sentencia 
          Select de SQL. 
     •    UpdateCommand.  Objeto  de  la  clase  Command  que  se  va  a  utilizar  para  realizar  una 
          modificación de los datos. 
     •    DeleteCommand. Objeto de la clase Command que se va a utilizar para realizar una eliminación 
          de datos. 

Un método destacable de las clases SqlDataAdapter/OleDbDataAdapter es el método Fill( ), que ejecuta 
el comando de selección que se encuentra asociado a la propiedad SelectCommand, los datos obtenidos 
del origen de datos se cargarán en el objeto DataSet que pasamos por parámetro. 

Para  ver  el  uso  de  los  objetos  DataAdapter  vamos  a  crear  un  formulario  y  lo  llamaremos 
frmInsertaDatos luego agregamos los siguientes controles.  

                          Control                            Name
                          DataGridView                       grdDatos
                          TextBox1                           txtPrograma
                          TextBox2                           txtDescripcion
                          Label1                             lblPrograma
                          Label2                             lblDescripcion
                          Button                             btnGrabar
 

En esta aplicación vamos a utilizar el objeto DataAdapter para realizar una consulta en la tabla Region 
de la BD Northwind con la cual venimos trabajando e insertar nuevas filas en esa misma tabla. Después 
de agregar los controles que describimos anteriormente el formulario debe de quedar como se muestra 
en la Fig. 13. 

Respecto al código del formulario, en primer lugar, vamos a declarar varios objetos de acceso a datos a 
nivel de la clase para poder tenerlos disponibles en diversos métodos. Veamos la Fig. 14. 

En el siguiente paso escribiremos el procedimiento del evento Load del formulario frmInsertaDatos, y el 
método  CargaDatos(  ),  que  se  ocupa  de  cargar  el  DataSet,  y  asignárselo  al  DataGrid  a  través  de  su 
propiedad DataSource. Observe el lector que en el método CargarDatos( ) lo primero que hacemos es 
vaciar el DataSet, puesto que este objeto conserva los datos de tablas y registros; en el caso de que no 
limpiáramos el DataSet, se acumularían las sucesivas operaciones de llenado de filas sobre la tabla que 
contiene. Veamos la Fig. 15. 

Ing. Eduardo Reyes                                                                                                      9
 
                                                                              Acceso a Datos con VB .NET 2005 




                                                                           

                                Fig. 13: Formulario frmInsertaDatos 

                                                   




                                                                                                

                      Fig. 14: Variables declaradas dentro del frmInsertaDatos 

                                                   


Private   Sub   frmInsertaDatos_Load(ByVal  sender   As   System.Object,   ByVal  e   As
System.EventArgs) Handles MyBase.Load
        'crear conexión
        oConexion = New SqlConnection
         oConexion.ConnectionString = "Server=Srv01;Database=Northwind;uid=sa;pwd=;"
        'crear adaptador
        oDataAdapter = New SqlDataAdapter
        'crear comandos de insercion
        'consulta con sus parametros y asignarlos al adaptador
        Dim oCmdInsercion As New SqlCommand("INSERT INTO Region" & _
        "(RegionId, RegionDescription) VALUES(@IdRegion,@Region)", oConexion)
        oDataAdapter.InsertCommand = oCmdInsercion
        oDataAdapter.InsertCommand.Parameters.Add(New          SqlParameter("@IdRegion",
SqlDbType.Int))
        oDataAdapter.InsertCommand.Parameters.Add(New            SqlParameter("@Region",
SqlDbType.NVarChar))
        Dim oCmdConsulta As New SqlCommand("SELECT * FROM Region", oConexion)
        oDataAdapter.SelectCommand = oCmdConsulta
        'crear conjunto de datos
        oDataSet = New DataSet
        'llamar procedimiento
        Me.CargaDatos()
End Sub
 
                                                   



Ing. Eduardo Reyes                                                                                               10
 
                                                                                     Acceso a Datos con VB .NET 2005 




Private Sub CargaDatos()
        'limpiamos el conjunto de datos
        oDataSet.Clear()
        'abrir conexion
        oConexion.Open()
        'utilizar el adaptador para llenar el dataset con la tabla
        oDataAdapter.Fill(oDataSet, "Region")
        'cerrar conexion
        oConexion.Close()
        'enlazar el dataset con el datagrid
        'en DataSource se asigna el dataset
        'en DataMember el nombre de la tabla del dataset que mostrará el datagrid
        Me.grdDatos.DataSource = oDataSet
        Me.grdDatos.DataMember = "Region"
End Sub
 
                            Fig. 15: Código del evento Load del frmInsertaDatos 

Finalmente,  en  el  botón  Grabar,  escribiremos  las  instrucciones  para  insertar  un  nuevo  registro  en  la 
tabla Region, el cual se codificara como se ve en la Fig. 16. 


Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnGrabar.Click
        Dim iResultado As Integer
        'asignar los valores a los parametros para el comando insercion
        oDataAdapter.InsertCommand.Parameters("IdRegion").Value = Me.txtRegion.Text
        oDataAdapter.InsertCommand.Parameters("Region").Value = Me.txtRegion.Text
        'abrir conexion
        oConexion.Open()
        'ejecutar comando de insercion del adaptador
        iResultado = oDataAdapter.InsertCommand.ExecuteNonQuery()
        'cerrar conexion
        oConexion.Close()

           Me.CargaDatos()

           MessageBox.Show("Registros Añadidos:" & iResultado)
End Sub
 
                      Fig. 15: Código del Botón Grabar para Insertar nuevas Regiones 

Una vez codificado todos los procedimientos ejecutamos la aplicación la cual vemos en la Fig. 16. 




                                                                                        

                            Fig. 16: Formulario con un Nuevo Registro Insertado 


Ing. Eduardo Reyes                                                                                                      11
 
                                                                                      Acceso a Datos con VB .NET 2005 



Actualización

Para  poder  realizar  una  actualización  de  datos,  crearemos  dentro  del  evento  Load  un  objeto 
CommandBuilder,  pasándole  como  parámetro  el  DataAdapter.  Como  ya  sabemos,  un  DataAdapter 
contiene una serie de objetos Command para las operaciones de consulta, inserción, etc. La misión en 
este  caso  del  objeto  CommandBuilder,  es  la  de  construir  automáticamente  tales  comandos  y 
asignárselos al DataAdapter, ahorrándonos ese trabajo de codificación. 

Para  poder  hacer  uso  de  un  objeto  CommandBuilder  vamos  a  crear  un  formulario  y  lo  llamaremos 
frmActualizaDatos luego agregamos los siguientes controles.  

                          Control                             Name
                          DataGridView                        grdDatos
                          Button                              btnActualizar
 

En esta aplicación vamos a utilizar el objeto DataAdapter para realizar una consulta en la tabla Region 
de  la  BD  Northwind  con  la  cual  venimos  trabajando  y  actualizar  filas  en  esa  misma  tabla.  Después  de 
agregar los controles que describimos anteriormente el formulario debe de quedar como se muestra en 
la Fig. 17. 




                                                                                         
                                     Fig. 17: Formulario frmActualizaDatos 

En el siguiente paso escribiremos el procedimiento del evento Load del formulario frmActualizaDatos, 
cargamos el DataSet, y lo asignamos al DataGrid a través de su propiedad DataSource y DataMember, 
luego codificamos el evento click del btnActualiza. Veamos la Fig. 18. 

Una vez codificado el evento load del frmActualizaDatos y el evento click del btnActualiza ejecutamos la 
aplicación la cual vemos en la Fig. 19. 

 

 

 

 



Ing. Eduardo Reyes                                                                                                       12
 
                                                                                 Acceso a Datos con VB .NET 2005 



      Dim oCn As SqlConnection
      Dim oDs As DataSet
      Dim oDa As SqlDataAdapter


     Private Sub frmActualizaDatos_Load(ByVal sender As Object, ByVal e As
     System.EventArgs) Handles Me.Load
         'crea conexion
         oCn = New SqlConnection
         oCn.ConnectionString = "Server=Srv01;Database=Northwind;uid=sa;pwd=;"
         'crear adaptador y realizar la consulta
         oDa = New SqlDataAdapter("SELECT * FROM Region", oCn)
         'crear command builder
         Dim oCb As SqlCommandBuilder = New SqlCommandBuilder(oDa)
         'crear dataset
         oDs = New DataSet
         oDa.Fill(oDs, "Region")
         'agregar dataset al datagrid
         Me.grdDatos.DataSource = oDs
         Me.grdDatos.DataMember = "Region"
     End Sub

     Private Sub btnActualiza_Click(ByVal sender As Object, ByVal e As System.EventArgs)
     Handles btnActualiza.Click
         oDa.Update(oDs, "Region")
     End Sub

             Fig. 18: Código del evento Load del Formulario  el evento click del Botón Actualizar 

                                                        




                                                                                    

                      Fig. 19: Formulario frmActualizaDatos con un Registro Modificado 

 

 

 

 

 

 

 


 

Ing. Eduardo Reyes                                                                                                  13
 
                                                                                       Acceso a Datos con VB .NET 2005 



Eliminación

Para poder realizar la eliminación de filas es algo diferente a lo que venimos haciendo anteriormente, a 
la hora de obtener la fila a borrar tenemos que hacerlo mediante un objeto DataRow, procediendo a su 
borrado con el método Delete( ).  

Para  actualizar  los  borrados  realizados,  empleamos  el  método  GetChanges(  )  del  objeto  DataTable, 
obteniendo  a  su  vez  un  objeto  table  sólo  con  las  filas  borradas,  dicha  información  que  pasaremos  al 
DataAdapter, para que actualice la información en el origen de datos. 

Para poder hacer uso de un objeto DataRow y DataTable vamos a crear un formulario y lo llamaremos 
frmEliminaDatos luego agregamos los siguientes controles.  

                          Control                             Name
                          DataGridView                        grdDatos
                          Button                              btnEliminar
 

Después de agregar los controles que describimos anteriormente, el formulario debe de quedar como se 
muestra en la Fig. 20. 




                                                                                          
                                      Fig. 20: Formulario frmEliminaDatos 

En el siguiente paso escribiremos el código del evento Load del formulario frmEliminaDatos, cargamos el 
DataSet,  y  lo  asignamos  al  DataGrid  a  través  de  su  propiedad  DataSource  y  DataMember,  luego 
codificamos  el  evento  click  del  btnEliminar,  declarando  una  variable  para  poder  identificar  la  fila  del 
datagrid a eliminar a travez del uso de  sus propiedades. Veamos la Fig. 21. 

Una  vez  codificado  el  evento  load  del  frmEliminaDatos  y  el  evento  click  del  btnElimina  ejecutamos  la 
aplicación la cual vemos en la Fig. 22. 

 

 

 

 


Ing. Eduardo Reyes                                                                                                        14
 
                                                                                 Acceso a Datos con VB .NET 2005 




     Dim oCn As SqlConnection
     Dim oDs As DataSet
     Dim oDa As SqlDataAdapter

    Private Sub frmEliminaDatos_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
        'crea conexion
        oCn = New SqlConnection
        oCn.ConnectionString = "Server=Srv01;Database=Northwind;uid=sa;pwd=;"
        'crear adaptador y realizar la consulta
        oDa = New SqlDataAdapter("SELECT * FROM Region", oCn)
        'crear commandbuilder
        Dim oCb As SqlCommandBuilder = New SqlCommandBuilder(oDa)
        'crear dataset
        oDs = New DataSet
        oDa.Fill(oDs, "Region")
        'agregar dataset al datagrid
        Me.grdDatos.DataSource = oDs
        Me.grdDatos.DataMember = "Region"
    End Sub

    Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnEliminar.Click
        Dim oDataRow As DataRow
        Dim iPosicFilaActual As Integer

         iPosicFilaActual = 0
         iPosicFilaActual = CInt(grdDatos.Item(0, grdDatos.CurrentRow.Index - 1).Value)
         ' obtener el objeto fila, de la tabla del dataset
         ' en el que estamos posicionados
         oDataRow = oDs.Tables("Region").Rows(iPosicFilaActual)
         oDataRow.Delete() ' borrar la fila
         ' mediante el método GetChanges(), obtenemos una tabla
         ' con las filas borradas
         Dim oTablaBorrados As DataTable
         oTablaBorrados = oDs.Tables("Region").GetChanges(DataRowState.Deleted)
         ' actualizar en el almacén de datos las filas borradas
         oDa.Update(oTablaBorrados)
         ' confirmar los cambios realizados
         oDs.Tables("Region").AcceptChanges()
     End Sub 

                                                         

              Fig. 21: Código del evento Load del Formulario  el evento click del Botón Eliminar 




                                                                                                                     

                       Fig. 22: Formulario frmEliminaDatos con un Registro Eliminado



Ing. Eduardo Reyes                                                                                                  15
 
Capítulo II
 •   Navegación de registros
 •   Relacionar tablas
 •   Filtrar tablas
 •   Seleccionar y mostrar registros
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
                                                                                      Acceso a Datos con VB .NET 2005 



                                                          

Navegación de registros
Para realizar la navegación a través de los registros de una tabla, debemos de saber que la arquitectura 
de  ADO  .NET está  orientada  a  un  modelo de  trabajo  desconectado  sobre  el  almacén de  datos,  al  que 
recurriremos sólo cuando necesitemos obtener los datos para su consulta y manipulación. 

El  objeto  DataSet,  combinado  con  un  grupo  de  objetos  enfocados  al  mantenimiento  de  datos 
desconectados, como son DataAdapter, DataTable, DataRow, etc., nos va a permitir realizar la tarea de 
navegar entre los registros de una tabla del DataSet. 

El proyecto se denominara WAccesoDatos, la tabla a consultar será Customers de la BD NorthWind. Una 
vez creado el nuevo proyecto en VB.NET, importaremos el espacio de nombres System.Data.SqlClient, y 
declararemos  a  nivel  de  clase  un  conjunto  de  variables  para  la  manipulación  de  los  datos.  Veamos  la 
figura 23. 

                          Imports System.Data.SqlClient

                          Public Class frmNavegaRegistros
                              Inherits System.Windows.Forms.Form
                              'Variables a nivel de clase
                              'para la manipulación de los datos
                              Private oDa As SqlDataAdapter
                              Private oDs As DataSet
                              Private iPosFilaActual As Integer

                          End Class 
                           
                                                          

                                          Fig. 23: Variables declaradas 

Ahora diseñaremos el formulario denominado frmNavegaRegistros, para eso agregamos los siguientes 
controles, los cuales nos permitirá realizar las operaciones mencionadas. 

 

                          Control                            Name
                          Label1                             lblIDCliente
                          Label2                             lblCliente
                          Label3                             lblContacto
                          Label4                             lblDireccion
                          Label5                             lblFono
                          TextBox1                           txtIDCliente
                          TextBox2                           txtCliente
                          TextBox3                           txtContacto
                          TextBox4                           txtDireccion
                          TextBox5                           txtFono
                          Button1                            btnPrimero
                          Button2                            btnAvanza
                          Button3                            btnRetrocede
                          Button4                            btnUltimo
                          GroupBox1                          gbxClientes
                          GroupBox2                          gbxNavegar
                                                                            

Después de agregar los controles que describimos anteriormente, el formulario debe de quedar como se 
muestra en la Fig. 24. 


Ing. Eduardo Reyes                                                                                                       17
 
                                                                                  Acceso a Datos con VB .NET 2005 




                                                                                            
                                  Fig. 24: Formulario frmNavegaRegistros 

Como  siguiente  paso,  escribiremos  el  manipulador  del  evento  Load  del  formulario  y  un  método  para 
cargar los datos del registro actual en los controles del formulario, el Código se muestra en la figura  25. 


      Private Sub frmNavegaRegistros_Load(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles MyBase.Load
          ' crear conexión
          Dim oConexion As SqlConnection
          oConexion = New SqlConnection()
          oConexion.ConnectionString = "Server=Srv01;" & _
          "Database=Northwind;uid=sa;pwd=;"
          ' crear adaptador
          Me.oDa = New SqlDataAdapter("SELECT * FROM Customers", oConexion)
          ' crear commandbuilder
          Dim oCommBuild As SqlCommandBuilder = New SqlCommandBuilder(oDa)
          ' crear dataset
          Me.oDs = New DataSet()
          oConexion.Open()
          ' llenar con el adaptador el dataset
          Me.oDa.Fill(oDs, "Customers")
          oConexion.Close()
          ' establecer el indicador del registro a mostrar de la tabla
          Me.iPosFilaActual = 0
          ' cargar columnas del registro en los controles del formulario
          Me.CargarDatos()
      End Sub
      Private Sub CargarDatos()
          ' obtener un objeto con la fila actual
          Dim oDataRow As DataRow
          oDataRow = Me.oDs.Tables("Customers").Rows(Me.iPosFilaActual)
          ' cargar los controles del formulario con
          ' los valores de los campos del registro
          Me.txtIDCliente.Text = oDataRow("CustomerID")
          Me.txtCliente.Text = oDataRow("CompanyName")
          Me.txtContacto.Text = oDataRow("ContactName")
          Me.txtDireccion.Text = oDataRow("Address")
          Me.txtFono.Text = oDataRow("Phone")
          ' mostrar la posición actual del registro y el número total del registros
          Me.lblRegistro.Text = "Cliente: " & _
          Me.iPosFilaActual + 1 & " de " & _
          Me.oDs.Tables("Customers").Rows.Count
      End Sub

                                                        

                      Fig. 25: Código del Evento Load y el Procedimiento Cargar Datos 


Ing. Eduardo Reyes                                                                                                   18
 
                                                                                      Acceso a Datos con VB .NET 2005 



Observar que en el evento Load se ha creado un objeto CommandBuilder, pasándole como parámetro el 
DataAdapter.  Como  ya  sabemos,  un  DataAdapter  contiene  una  serie  de  objetos  Command  para  las 
operaciones  de  consulta,  inserción,  etc.  La  misión  en  este  caso  del  objeto  CommandBuilder,  es  la  de 
construir automáticamente tales comandos y asignárselos al DataAdapter, ahorrándonos ese trabajo de 
codificación. En cuanto a las operaciones de navegación por la tabla, no hay un objeto, como ocurría con 
el  Recordset  de  ADO,  que  disponga  de  métodos  específicos  de  movimiento  como  MoveNext(  ), 
MoveLast( ), etc. Lo que debemos hacer en ADO .NET, tal y como muestra el método CargarDatos(), es 
obtener del DataSet, la tabla que necesitemos mediante su colección Tables, y a su vez, a la colección 
Rows de esa tabla, pasarle el número de fila/registro al que vamos a desplazarnos. En nuestro ejemplo 
utilizaremos la variable iPosFilaActual, definida a nivel de clase, para saber en todo momento, la fila de 
la  tabla  en  la  que  nos  encontramos.  El  Código  fuente  de  cada  botón  de  navegación  se  muestra  en  la 
figura 26. 


      Private Sub btnPrimero_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles btnPrimero.Click
          ' establecer el marcador de registro en el primero
          Me.iPosFilaActual = 0
          Me.CargarDatos()
      End Sub

      Private Sub btnAvanza_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles btnAvanza.Click
          ' si estamos en el primer registro,
          ' no hacer movimiento
          If Me.iPosFilaActual = 0 Then
               MessageBox.Show("Primer registro")
          Else
               ' disminuir el marcador de registro
               ' y actualizar los controles con los
               ' datos del registro actual
               Me.iPosFilaActual -= 1
               Me.CargarDatos()
          End If
      End Sub

      Private Sub btnRetrocede_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles btnRetrocede.Click
          ' si estamos en el último registro,
          ' no hacer movimiento
          If Me.iPosFilaActual = _
          (Me.oDs.Tables("Customers").Rows.Count - 1) Then
               MessageBox.Show("Último registro")
          Else
               ' incrementar el marcador de registro
               ' y actualizar los controles con los
               ' datos del registro actual
               Me.iPosFilaActual += 1
               Me.CargarDatos()
          End If

      End Sub

      Private Sub btnUltimo_Click(ByVal sender As Object, _
      ByVal e As System.EventArgs) Handles btnUltimo.Click
          ' establecer el marcador de registro en el primero
          ' obteniendo el número de filas que contiene la tabla menos uno
          Me.iPosFilaActual = (Me.oDs.Tables("Customers").Rows.Count - 1)
          Me.CargarDatos()
      End Sub

                                                          

                                Fig. 26: Código de los botones de navegación 

Una vez codificado el evento load del frmNavegaRegistros, el procedimiento Cargar Datos y los eventos 
click de los botones de navegación ejecutamos la aplicación la cual vemos en la Fig. 27. 


Ing. Eduardo Reyes                                                                                                       19
 
                                                                Acceso a Datos con VB .NET 2005 




                                                                           

                      Fig. 27: Formulario frmNavegaRegistros 
                                            




Ing. Eduardo Reyes                                                                                 20
 
                                                                               Acceso a Datos con VB .NET 2005 



Relacionar tablas
Para llevar a cabo la relación entre dos tablas, ambas tablas deben de tener un campo en común para 
realizar la relación, en esta oportunidad realizaremos la relación entre las tablas Customers y Orders por 
su campo clave (CustomerID) (ambas se encuentran dentro de la BD Northwind). Después llenamos un 
ComboBox con datos de la tabla Customers. Al seleccionar un valor del ComboBox, se tomarán las filas 
relacionadas de la tabla Orders y se llenará con ellas un ListBox. 

Una  vez  conocido  lo  que  se  desea  hacer  lo  primero  es  crear  un  proyecto  al  cual  llamaremos 
WAccesoDatos, las tablas a consultar seran Customers y Orders de la BD NorthWind. Una vez creado el 
nuevo proyecto en VB.NET, importaremos el espacio de nombres System.Data.SqlClient, y declararemos 
a nivel de clase un conjunto de variables para la manipulación de los datos. Veamos la figura 28. 

                          Imports System.Data
                          Imports System.Data.SqlClient

                          Public Class frmNavegaRegistros
                              'Variables a nivel de clase
                              'para la manipulación de los datos
                              Dim Cn As SqlConnection
                              Private DaC As SqlDataAdapter
                              Private DaO As SqlDataAdapter
                              Private Ds As DataSet
                              Dim str As String
                          End Class




                                      Fig. 28: Variables declaradas 

Ahora diseñaremos el formulario denominado frmRelacionaTablas, para eso agregamos los siguientes 
controles, los cuales nos permitirá realizar las operaciones mencionadas. 

                        Control                          Name
                        GroupBox                         gbxClientes
                        ComboBox                         cboClientes
                        ListBox                          lstOrdenes
                                                                        

Después de agregar los controles que describimos anteriormente, el formulario debe de quedar como se 
muestra en la Fig. 29. 




                                                                            
                                 Fig. 29: Formulario frmRelacionaTablas 


Ing. Eduardo Reyes                                                                                                21
 
                                                                                   Acceso a Datos con VB .NET 2005 



Como  siguiente  paso,  escribiremos  el  código  del  evento  Load  del  frmRelacionaTablas  y  el  evento 
SelectedIndexChanged del cboClientes, el Código se muestra en la figura  30. 

 
Private Sub frmRelacionaTablas_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        'crear conexion
        Cn = New SqlConnection()
        str = "Server=EDUARD;database=Northwind;uid=sa;password=master"
        Cn.ConnectionString = str
        'creamos los dos data adapter
        Me.DaC = New SqlDataAdapter("Select * from Customers", Cn)
        Me.DaO = New SqlDataAdapter("Select * from Orders", Cn)
        'instaciar dataset
        Me.Ds = New DataSet
        'abrir la conexion
        Cn.Open()
        'utilizamos los DataAdapters para llenar los DataSets
        Me.DaC.Fill(Me.Ds, "Customers")
        Me.DaO.Fill(Me.Ds, "Orders")
        'cerramos la conexion
        Cn.Close()
        'relacionamos las tablas del DataSet por campo común
        Me.Ds.Relations.Add("Customers Orders", Ds.Tables _
        ("Customers").Columns("CustomerID"), _
        Ds.Tables("Orders").Columns("CustomerID"))
        'llenar el combobox con los nombres del cliente
        Dim Dr As DataRow
        For Each Dr In Ds.Tables("Customers").Rows
             Me.cboClientes.Items.Add(Dr("CustomerID") & _
             " - " & Dr("CompanyName"))
        Next
    End Sub

    Private Sub cboClientes_SelectedIndexChanged(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles cboClientes.SelectedIndexChanged
        'limpiar los valores del combo
        Me.lstOrdenes.Items.Clear()
        Dim DrC As DataRow
        'obtener la fila de tabla Customers
        DrC = Ds.Tables("Customers").Rows(Me.cboClientes.SelectedIndex)
        Dim DrO() As DataRow
        'obtener las filas de la tabla Orders
        DrO = DrC.GetChildRows("Customers Orders")
        Dim DrFila As DataRow
        'rellenar el listbox con los valores de la tabla Orders
        For Each DrFila In DrO
             Me.lstOrdenes.Items.Add(DrFila("CustomerID") & _
             " - " & DrFila("OrderID") & " - " & DrFila("OrderDate"))
        Next
    End Sub
End Class 
 
                                                         

                                   Fig. 30: Código del frmRelacionaTablas 

Una  vez  codificado  el  evento  load  del  frmRelacionaTablas  y  el  evento  del  cboClientes  ejecutamos  la 
aplicación la cual vemos en la Fig. 31. 




Ing. Eduardo Reyes                                                                                                    22
 
                                                                    Acceso a Datos con VB .NET 2005 




                                                                 

                      Fig. 31: Formulario frmRelacionaTablas 
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           


Ing. Eduardo Reyes                                                                                     23
 
                                                                                Acceso a Datos con VB .NET 2005 



Filtrar tablas
Para realizar el filtrado a través de los registros de una tabla, utilizaremos la clase DataView la cual nos 
permite la aplicación de vistas personalizadas a partir de una tabla contenida en un DataSet, así como la 
ordenación y búsqueda de filas. 

En ADO clásico, para disponer de varias vistas de una misma tabla, debíamos crear diferentes objetos 
Recordset, lo cual provocaba el consumo de una gran cantidad de recursos. Este aspecto ha cambiado 
profundamente en ADO .NET, ya que partiendo de un objeto DataTable situado en un DataSet, vamos a 
definir varias vistas simultáneamente, ordenar y buscar registros, con la ventaja de que el consumo de 
recursos es menor, puesto que los objetos DataView se alimentan del mismo DataTable.  

El proyecto se denominara WAccesoDatos, la tabla a consultar será Customers de la BD NorthWind. Una 
vez creado el nuevo proyecto en VB .NET, importaremos los espacio de nombres y declararemos a nivel 
de clase un conjunto de variables para la manipulación de los datos. Veamos la figura 32. 

                                 Imports System.Data
                                 Imports System.Data.SqlClient

                                 Public Class frmFiltroClientes

                                       Dim Cn As SqlConnection
                                       Private Da As SqlDataAdapter
                                       Private Ds As DataSet
                                       Dim Str As String

                                 End Class 
                                  
                                         Fig. 32: Variables declaradas 

Ahora  diseñaremos  el  formulario  denominado  frmFiltroClientes,  para  eso  agregamos  los  siguientes 
controles, los cuales nos permitirá realizar las operaciones mencionadas. 

                        Control                            Name
                        Label1                             lblContacto
                        GroupBox1                          gbxClientes
                        TextBox1                           txtContacto
                        DataGridView                       dgFiltro
                                                                           

Después de agregar los controles que describimos anteriormente, el formulario debe de quedar como se 
muestra en la Fig. 33. 




                                                                                       

                                     Fig. 33: Formulario frmFiltroClientes 

Ing. Eduardo Reyes                                                                                                 24
 
                                                                                        Acceso a Datos con VB .NET 2005 



La  propiedad  RowFilter  de  la  clase  DataView  nos  permite  asignar  a  este  objeto,  una  cadena  con  la 
expresión  de  filtro,  que  en  una  consulta  en  lenguaje  SQL  sería  la  parte  correspondiente  a  la  cláusula 
Where. 

Como  hemos  comentado  anteriormente,  a  partir  de  un  DataTable  podemos  obtener  varios  filtros 
mediante distintos objetos DataView, sin que ello suponga una penalización en el consumo de recursos. 
Para  demostrar  este  punto,  en  el  frmFiltroClientes,  se  crea  una  vista  basada  en  un  filtro  y  una  vista 
normal.  A  continuación  escribiremos  el  código  del  evento  Load  del  frmFiltroClientes  y  el  evento 
Keypress del txtContacto, el Código se muestra en la figura  34. 

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

         'creamos la conexion
         Cn = New SqlConnection
         Str = "Server=Srv01;DataBase=Northwind;UID=sa"
         Cn.ConnectionString = Str
         'crear el adaptador (consulta)
         Me.Da = New SqlDataAdapter("Select * From Customers", Cn)
         'agregar consulta al dataset
         Me.Ds = New DataSet()
         Me.Da.Fill(Ds, "Customers")
         Me.Da = Nothing
     End Sub

     Private Sub txtContacto_KeyPress(ByVal sender As Object, _
     ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtContacto.KeyPress
         Dim Dv As DataView

           If Asc(e.KeyChar) = 13 Then
               Dv = New DataView
               'filtrar por el campo y llenar el datagridview
               Dv.Table = Ds.Tables("Customers")
               Dv.RowFilter = "ContactName LIKE '%" & txtContacto.Text & "%'"
               'agregar el filtro para mostrar en el Grid
               dgFiltro.DataSource = Dv
           End If
End Sub 
 
                                                            

                                       Fig. 34: Código del frmFiltroClientes 

Una  vez  codificado  el  evento  load  del  frmFiltroClientes  y  el  evento  del  txtContacto  ejecutamos  la 
aplicación la cual vemos en la Fig. 35. 




                                                                                               

                                      Fig. 35: Formulario frmFiltroClientes 

Ing. Eduardo Reyes                                                                                                         25
 

Contenu connexe

Tendances

visual basic .net
visual basic .netvisual basic .net
visual basic .netvhaguilar
 
SQL Visual Basic 6.0
SQL Visual Basic 6.0SQL Visual Basic 6.0
SQL Visual Basic 6.0odairfunez
 
P vinculacion de td access con excel
P vinculacion de td access con excelP vinculacion de td access con excel
P vinculacion de td access con excelKenneth Herrera
 
Manual acceso a datos vb.net
Manual acceso a datos vb.netManual acceso a datos vb.net
Manual acceso a datos vb.netcedido
 
Entrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NETEntrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NETHaaron Gonzalez
 
PresentacióN De Access
PresentacióN De AccessPresentacióN De Access
PresentacióN De Accessveronica
 
Conexion bases de datos a visual basic 6.0
Conexion  bases de datos a visual basic 6.0Conexion  bases de datos a visual basic 6.0
Conexion bases de datos a visual basic 6.0bigdog10
 
Bases de datos módulo 3 el lenguaje sql
Bases de datos módulo 3 el lenguaje sqlBases de datos módulo 3 el lenguaje sql
Bases de datos módulo 3 el lenguaje sqlFreddyRomana
 

Tendances (15)

visual basic .net
visual basic .netvisual basic .net
visual basic .net
 
Access
AccessAccess
Access
 
SQL Visual Basic 6.0
SQL Visual Basic 6.0SQL Visual Basic 6.0
SQL Visual Basic 6.0
 
P vinculacion de td access con excel
P vinculacion de td access con excelP vinculacion de td access con excel
P vinculacion de td access con excel
 
Manual acceso a datos vb.net
Manual acceso a datos vb.netManual acceso a datos vb.net
Manual acceso a datos vb.net
 
Entrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NETEntrenamiento en Acceso a Datos con ASP.NET
Entrenamiento en Acceso a Datos con ASP.NET
 
Camilo ;d
Camilo ;dCamilo ;d
Camilo ;d
 
Lenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-proLenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-pro
 
PresentacióN De Access
PresentacióN De AccessPresentacióN De Access
PresentacióN De Access
 
Leo
LeoLeo
Leo
 
informe
informeinforme
informe
 
Conexion bases de datos a visual basic 6.0
Conexion  bases de datos a visual basic 6.0Conexion  bases de datos a visual basic 6.0
Conexion bases de datos a visual basic 6.0
 
Bases de datos módulo 3 el lenguaje sql
Bases de datos módulo 3 el lenguaje sqlBases de datos módulo 3 el lenguaje sql
Bases de datos módulo 3 el lenguaje sql
 
ADO
ADOADO
ADO
 
Base de datos moviles
Base de datos movilesBase de datos moviles
Base de datos moviles
 

En vedette

Programación visual con VB.NET
Programación visual con VB.NETProgramación visual con VB.NET
Programación visual con VB.NETYamil Lambert
 
Guía entregable software parte i
Guía entregable software parte iGuía entregable software parte i
Guía entregable software parte iColegioUpb
 
Expo 2[2]!!!
Expo 2[2]!!!Expo 2[2]!!!
Expo 2[2]!!!msv3
 
Guia trabajo visual basic (parte I)
Guia trabajo   visual basic (parte I)Guia trabajo   visual basic (parte I)
Guia trabajo visual basic (parte I)ColegioUpb
 
Manual gui net_beans
Manual gui net_beansManual gui net_beans
Manual gui net_beansYefry Coz
 
Guia trabajo visual basic (parte II)
Guia trabajo  visual basic (parte II)Guia trabajo  visual basic (parte II)
Guia trabajo visual basic (parte II)ColegioUpb
 
Ficha esquematica de auditoria
Ficha esquematica de auditoriaFicha esquematica de auditoria
Ficha esquematica de auditoriarafael_isaac
 
Presentac..[1]
Presentac..[1]Presentac..[1]
Presentac..[1]msv3
 
VS2010 como herramienta de desarrollo
VS2010 como herramienta de desarrolloVS2010 como herramienta de desarrollo
VS2010 como herramienta de desarrolloJersson Dongo
 
NetBeans
NetBeansNetBeans
NetBeans1da4
 
2. Uso De Microsoft Visual Studio .Net
2.  Uso De Microsoft Visual Studio .Net2.  Uso De Microsoft Visual Studio .Net
2. Uso De Microsoft Visual Studio .Netguest3cf6ff
 
2. introduccion a vs .net
2.  introduccion a vs .net2.  introduccion a vs .net
2. introduccion a vs .netmhormech
 
Aplicaciones web y escritorio
Aplicaciones web y escritorioAplicaciones web y escritorio
Aplicaciones web y escritorioLuMorena11
 
CUADERNILLO DE NETBEANS.
CUADERNILLO DE NETBEANS.CUADERNILLO DE NETBEANS.
CUADERNILLO DE NETBEANS.p_nelly
 
Funciones trigonometricas
Funciones trigonometricasFunciones trigonometricas
Funciones trigonometricasAndres Calsina
 
Manual De Netbeans Y Postgres
Manual De Netbeans Y PostgresManual De Netbeans Y Postgres
Manual De Netbeans Y PostgresCiber Conexion
 
Ejercicio de PHP, MySQL y Apache
Ejercicio de PHP, MySQL y ApacheEjercicio de PHP, MySQL y Apache
Ejercicio de PHP, MySQL y ApacheVictor Escamilla
 
Software Final
Software FinalSoftware Final
Software Finalmakoto10
 

En vedette (20)

Programación visual con VB.NET
Programación visual con VB.NETProgramación visual con VB.NET
Programación visual con VB.NET
 
PRESENTACIÓN DE DATAGRIDVIEW
PRESENTACIÓN DE DATAGRIDVIEWPRESENTACIÓN DE DATAGRIDVIEW
PRESENTACIÓN DE DATAGRIDVIEW
 
Guía entregable software parte i
Guía entregable software parte iGuía entregable software parte i
Guía entregable software parte i
 
Expo 2[2]!!!
Expo 2[2]!!!Expo 2[2]!!!
Expo 2[2]!!!
 
Guia trabajo visual basic (parte I)
Guia trabajo   visual basic (parte I)Guia trabajo   visual basic (parte I)
Guia trabajo visual basic (parte I)
 
Manual gui net_beans
Manual gui net_beansManual gui net_beans
Manual gui net_beans
 
Guia trabajo visual basic (parte II)
Guia trabajo  visual basic (parte II)Guia trabajo  visual basic (parte II)
Guia trabajo visual basic (parte II)
 
Ficha esquematica de auditoria
Ficha esquematica de auditoriaFicha esquematica de auditoria
Ficha esquematica de auditoria
 
Presentac..[1]
Presentac..[1]Presentac..[1]
Presentac..[1]
 
Netbeans ide
Netbeans ideNetbeans ide
Netbeans ide
 
VS2010 como herramienta de desarrollo
VS2010 como herramienta de desarrolloVS2010 como herramienta de desarrollo
VS2010 como herramienta de desarrollo
 
NetBeans
NetBeansNetBeans
NetBeans
 
2. Uso De Microsoft Visual Studio .Net
2.  Uso De Microsoft Visual Studio .Net2.  Uso De Microsoft Visual Studio .Net
2. Uso De Microsoft Visual Studio .Net
 
2. introduccion a vs .net
2.  introduccion a vs .net2.  introduccion a vs .net
2. introduccion a vs .net
 
Aplicaciones web y escritorio
Aplicaciones web y escritorioAplicaciones web y escritorio
Aplicaciones web y escritorio
 
CUADERNILLO DE NETBEANS.
CUADERNILLO DE NETBEANS.CUADERNILLO DE NETBEANS.
CUADERNILLO DE NETBEANS.
 
Funciones trigonometricas
Funciones trigonometricasFunciones trigonometricas
Funciones trigonometricas
 
Manual De Netbeans Y Postgres
Manual De Netbeans Y PostgresManual De Netbeans Y Postgres
Manual De Netbeans Y Postgres
 
Ejercicio de PHP, MySQL y Apache
Ejercicio de PHP, MySQL y ApacheEjercicio de PHP, MySQL y Apache
Ejercicio de PHP, MySQL y Apache
 
Software Final
Software FinalSoftware Final
Software Final
 

Similaire à Vb net

Practica Siete Delphi
Practica Siete  DelphiPractica Siete  Delphi
Practica Siete DelphiJose Ponce
 
Visual basic conexion base de datos
Visual basic conexion base de datos Visual basic conexion base de datos
Visual basic conexion base de datos luilly xavier
 
Vb net bd_2005_02
Vb net bd_2005_02Vb net bd_2005_02
Vb net bd_2005_02Paul Taco
 
ConexióN De Base De Datos
ConexióN De Base De DatosConexióN De Base De Datos
ConexióN De Base De DatosVerenice Corea
 
Como conectar visual basic 6.0 a una base de datos microsoft sql server
Como conectar visual basic 6.0 a una base de datos microsoft sql serverComo conectar visual basic 6.0 a una base de datos microsoft sql server
Como conectar visual basic 6.0 a una base de datos microsoft sql serverKarolaynCardozo1
 
Informe de enlace de Visual Basic a bases de datos por Elysaul Yoris
Informe de enlace de Visual Basic a bases de datos por Elysaul YorisInforme de enlace de Visual Basic a bases de datos por Elysaul Yoris
Informe de enlace de Visual Basic a bases de datos por Elysaul Yoriskleidynelliz
 
Conexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraConexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraMariaphlb
 
Informe 20% actividad 1 visual basic 6.0
Informe 20% actividad 1 visual basic 6.0Informe 20% actividad 1 visual basic 6.0
Informe 20% actividad 1 visual basic 6.0EudoroSulbaran
 
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAcceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicgerardd98
 
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAcceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAlfredo Joya
 
Dayismel cervantes 3_er corte 1er 20%
Dayismel cervantes 3_er corte 1er 20%Dayismel cervantes 3_er corte 1er 20%
Dayismel cervantes 3_er corte 1er 20%Dayismel Cervantes
 
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0 CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0 Ambar Larrazabal
 
Conectar con bases de datos
Conectar con bases de datosConectar con bases de datos
Conectar con bases de datosRafael Quintero
 
bases de datos desde visual basic
bases de datos desde visual basicbases de datos desde visual basic
bases de datos desde visual basicsantiagomario8
 

Similaire à Vb net (20)

ADO NET.ppt
ADO NET.pptADO NET.ppt
ADO NET.ppt
 
Practica Siete Delphi
Practica Siete  DelphiPractica Siete  Delphi
Practica Siete Delphi
 
Visual basic conexion base de datos
Visual basic conexion base de datos Visual basic conexion base de datos
Visual basic conexion base de datos
 
Vb net bd_2005_02
Vb net bd_2005_02Vb net bd_2005_02
Vb net bd_2005_02
 
ConexióN De Base De Datos
ConexióN De Base De DatosConexióN De Base De Datos
ConexióN De Base De Datos
 
Como conectar visual basic 6.0 a una base de datos microsoft sql server
Como conectar visual basic 6.0 a una base de datos microsoft sql serverComo conectar visual basic 6.0 a una base de datos microsoft sql server
Como conectar visual basic 6.0 a una base de datos microsoft sql server
 
Informe de enlace de Visual Basic a bases de datos por Elysaul Yoris
Informe de enlace de Visual Basic a bases de datos por Elysaul YorisInforme de enlace de Visual Basic a bases de datos por Elysaul Yoris
Informe de enlace de Visual Basic a bases de datos por Elysaul Yoris
 
Base de datos
Base de datosBase de datos
Base de datos
 
Conexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraConexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María Parra
 
Guia no1 ado.net
Guia no1 ado.netGuia no1 ado.net
Guia no1 ado.net
 
Informe 20% actividad 1 visual basic 6.0
Informe 20% actividad 1 visual basic 6.0Informe 20% actividad 1 visual basic 6.0
Informe 20% actividad 1 visual basic 6.0
 
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAcceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basic
 
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAcceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basic
 
Lazarus
LazarusLazarus
Lazarus
 
Dayismel cervantes 3_er corte 1er 20%
Dayismel cervantes 3_er corte 1er 20%Dayismel cervantes 3_er corte 1er 20%
Dayismel cervantes 3_er corte 1er 20%
 
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0 CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
 
Conectar con bases de datos
Conectar con bases de datosConectar con bases de datos
Conectar con bases de datos
 
bases de datos desde visual basic
bases de datos desde visual basicbases de datos desde visual basic
bases de datos desde visual basic
 
Vb access
Vb accessVb access
Vb access
 
Vb access
Vb accessVb access
Vb access
 

Plus de Soluciones Sostenibles SRL (8)

Procesoea 1
Procesoea 1Procesoea 1
Procesoea 1
 
Lalectura 150611033225-lva1-app6892
Lalectura 150611033225-lva1-app6892Lalectura 150611033225-lva1-app6892
Lalectura 150611033225-lva1-app6892
 
Maslow 120331150143-phpapp01
Maslow 120331150143-phpapp01Maslow 120331150143-phpapp01
Maslow 120331150143-phpapp01
 
Manual
ManualManual
Manual
 
Ejercicios resueltos
Ejercicios resueltosEjercicios resueltos
Ejercicios resueltos
 
Diagrama de flujo
Diagrama de flujoDiagrama de flujo
Diagrama de flujo
 
C lpii
C lpiiC lpii
C lpii
 
Algoritmos y-diagramacion
Algoritmos y-diagramacionAlgoritmos y-diagramacion
Algoritmos y-diagramacion
 

Dernier

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 

Dernier (20)

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 

Vb net

  • 1.           Acceso a Datos Visual Basic .NET 2005                            
  • 2. Capítulo I • Acceso a datos • Lectura de datos • Inserción • Actualización • Eliminación
  • 3.     Acceso a Datos con VB .NET 2005  Acceso a datos En  este  capítulo  realizaremos  una  conexión,  lectura,  inserción,  actualización  y  eliminación  de  datos  creando aplicaciones en Visual Basic .NET 2005 con el Framework 2.0 a través del SQL Server 2000.  Crear  un  nuevo  proyecto  denominado  WAccesoDatos,  la  tabla  a  consultar  será  Products  de  la  BD  NorthWind.  Después de crear el proyecto agregar las Referencias para poder acceder a los Datos como lo indica en  la Fig. 01:    Fig. 01: Agregar Referencias al Proyecto  Respecto al código del formulario, primero vamos a declarar varios objetos de acceso a datos a nivel de  la clase para poder tenerlos disponibles en diversos métodos. Veamos el Código fuente en la Fig. 02:    Fig. 02: Variables declaradas con los Objetos para el Acceso a Datos  Ing. Eduardo Reyes  2  
  • 4.     Acceso a Datos con VB .NET 2005  En  el  formulario  del  proyecto  agregamos  un  DataGridView  para  poder  mostrar  los  datos  a  enlazar,  quedando el Form1 de la siguiente manera como se muestra en la Fig. 03:    Fig. 03: Formulario (Form1) con el DataGridView (dgVer)  En el siguiente paso escribiremos el código dentro del evento Load del formulario, el cual se ocupa de  crear  la  conexión  con  la  BD,  crear  el  DataAdapter  con  la  consulta,  cargar  el  DataSet,  y  asignárselo  al  DataGrid a través de su propiedad DataSource. Ver la Fig. 04  Una vez escrito el código correctamente como se encuentra en la Fig. 04 se pasa a ejecutar el formulario  y debe de mostrar los datos consultados tal como se muestran en la Fig. 05    Fig. 05: Formulario con los Datos mostrados en el DataGrid  Ing. Eduardo Reyes  3  
  • 5.     Acceso a Datos con VB .NET 2005    Fig. 04: Código para poder Acceder a los Datos de la Tabla Products de Northwind  No olvidar que en la línea de código de conexión:  cnx = ("server=Srv01;database=Northwind;Trusted_Connection=True")   En la parte donde se encuentra el nombre del server debe de ir el nombre de tu servidor de base de  datos en este caso el mío es Srv01.                      Ing. Eduardo Reyes  4  
  • 6.     Acceso a Datos con VB .NET 2005  Lectura de datos DataReader  En  esta  parte  realizaremos  una  lectura  (consulta  de  datos)  utilizando  objetos  DataReader,  un  objeto  DataReader  permite  la  navegación  hacia  delante  y  de  sólo  lectura,  de  los  registros  devueltos  por  una  consulta.   Ahora  crearemos  dentro  del  proyecto  denominado  WAccesoDatos  un  nuevo  formulario  al  cual  lo  llamaremos frmLeerDatos, luego agregamos los siguientes controles los cuales nos mostraran el uso de  objetos DataReader.  Control  Name Button1  btnEmpleados Button2  btnCliProd ListBox1  lstEmpleados ListBox2  lstClientes ListBox3  lstProductos   Después de agregar los controles que describimos anteriormente, el formulario frmLeerDatos debe de  quedar como se muestra en la Fig. 06.    Fig. 06: Formulario frmLeerDatos  Ahora  realizaremos  la  codificación  del  botón  Empleados  creando  a  partir  de  un  comando,  un  objeto  DataReader  que  recorreremos  para  llenar  un  ListBox  (lstEmpleados)  con  los  valores  de  una  de  las  columnas de la tabla que internamente contiene el DataReader. Ver la Fig. 07.  Después realizamos la codificación del botón Clientes/Productos que tendrá un objeto Command el cual  puede estar basado en múltiples sentencias SQL, separadas por el carácter de punto y coma ( ; ), que se  ejecuten en lote. Al crear un DataReader desde un comando de este tipo, podemos recorrer el conjunto  de consultas mediante el método NextResult( ) del DataReader. Un ejemplo de este tipo lo tenemos al  pulsar el botón Clientes/Productos del formulario, cuya fuente vemos a continuación en la Fig. 08.  La  Fig.  09  muestra  al  formulario  después  de  haber  rellenado  los  controles  ListBox  usando  objetos  DataReader.  Ing. Eduardo Reyes  5  
  • 7.     Acceso a Datos con VB .NET 2005    Fig. 07: Código del Botón Empleados.    Fig. 08: Código del Botón Clientes/Productos.    Ing. Eduardo Reyes  6  
  • 8.     Acceso a Datos con VB .NET 2005    Fig. 09: ListBox llenados con los objetos DataReader  DataSet  DataSet  pertenece  al  conjunto  común  de  clases  de  ADO  .NET,  empleándose  para  todo  tipo  de  proveedores, por lo que no existe una versión particular para SqlClient u OleDb.  En  el  formulario  frmLeerDatos  agregar  los  siguientes  controles  el  cual  nos  servirá  para  realizar  un  sencillo ejemplo de creación de un objeto DataSet que llenaremos con un DataAdapter. Una vez listo el  DataSet, recorreremos la tabla que contiene y mostraremos valores de sus columnas en un ListBox.  Control  Name Button1  btnCustomers ListBox1  lstCustomers   Después de agregar los controles que describimos anteriormente el formulario debe de quedar como se  muestra en la Fig. 10.    Fig. 10: Formulario frmLeerDatos  Ing. Eduardo Reyes  7  
  • 9.     Acceso a Datos con VB .NET 2005  Ahora codificamos del botón Customers creando una consulta a partir de un DataAdapter, una vez listo  el  DataSet  recorreremos  el  ListBox  (lstCustomers)  para  recorrer  y  mostrar  los  datos  de  una  de  las  columnas de la tabla Customers. Ver la Fig. 11.    Fig. 11: Código del Botón Customers    La  Fig.  12  muestra  al  formulario  después  de  haber  rellenado  los  controles  ListBox  usando  objetos  DataSet.      Fig. 12: ListBox llenados mediante un DataSet      Ing. Eduardo Reyes  8  
  • 10.     Acceso a Datos con VB .NET 2005  Inserción DataAdapter  Los objetos DataAdapter (SqlDataAdapter y OleDbDataAdapter) van a desempeñar el papel de puente  entre el origen de datos y el DataSet, permitiéndonos cargar el DataSet con la información de la fuente  de datos, y posteriormente, actualizar el origen de datos con la información del DataSet.  Un  objeto  DataAdapter  puede  contener  desde  una  sencilla  sentencia  SQL,  como  hemos  visto  en  el  apartado anterior, hasta varios objetos Command.  La  clase  DataAdapter  dispone  de  cuatro  propiedades,  que  nos  van  a  permitir  asignar  a  cada  una,  un  objeto  Command  (SqlCommand  u  OleDbCommand)  con  las  operaciones  estándar  de  manipulación  de  datos. Estas propiedades son las siguientes.  • InsertCommand. Objeto de la clase Command, que se va a utilizar para realizar una inserción de  datos.  • SelectCommand. Objeto de la clase Command que se va a utilizar para ejecutar una sentencia  Select de SQL.  • UpdateCommand.  Objeto  de  la  clase  Command  que  se  va  a  utilizar  para  realizar  una  modificación de los datos.  • DeleteCommand. Objeto de la clase Command que se va a utilizar para realizar una eliminación  de datos.  Un método destacable de las clases SqlDataAdapter/OleDbDataAdapter es el método Fill( ), que ejecuta  el comando de selección que se encuentra asociado a la propiedad SelectCommand, los datos obtenidos  del origen de datos se cargarán en el objeto DataSet que pasamos por parámetro.  Para  ver  el  uso  de  los  objetos  DataAdapter  vamos  a  crear  un  formulario  y  lo  llamaremos  frmInsertaDatos luego agregamos los siguientes controles.   Control  Name DataGridView  grdDatos TextBox1  txtPrograma TextBox2  txtDescripcion Label1  lblPrograma Label2  lblDescripcion Button  btnGrabar   En esta aplicación vamos a utilizar el objeto DataAdapter para realizar una consulta en la tabla Region  de la BD Northwind con la cual venimos trabajando e insertar nuevas filas en esa misma tabla. Después  de agregar los controles que describimos anteriormente el formulario debe de quedar como se muestra  en la Fig. 13.  Respecto al código del formulario, en primer lugar, vamos a declarar varios objetos de acceso a datos a  nivel de la clase para poder tenerlos disponibles en diversos métodos. Veamos la Fig. 14.  En el siguiente paso escribiremos el procedimiento del evento Load del formulario frmInsertaDatos, y el  método  CargaDatos(  ),  que  se  ocupa  de  cargar  el  DataSet,  y  asignárselo  al  DataGrid  a  través  de  su  propiedad DataSource. Observe el lector que en el método CargarDatos( ) lo primero que hacemos es  vaciar el DataSet, puesto que este objeto conserva los datos de tablas y registros; en el caso de que no  limpiáramos el DataSet, se acumularían las sucesivas operaciones de llenado de filas sobre la tabla que  contiene. Veamos la Fig. 15.  Ing. Eduardo Reyes  9  
  • 11.     Acceso a Datos con VB .NET 2005    Fig. 13: Formulario frmInsertaDatos      Fig. 14: Variables declaradas dentro del frmInsertaDatos    Private Sub frmInsertaDatos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'crear conexión oConexion = New SqlConnection oConexion.ConnectionString = "Server=Srv01;Database=Northwind;uid=sa;pwd=;" 'crear adaptador oDataAdapter = New SqlDataAdapter 'crear comandos de insercion 'consulta con sus parametros y asignarlos al adaptador Dim oCmdInsercion As New SqlCommand("INSERT INTO Region" & _ "(RegionId, RegionDescription) VALUES(@IdRegion,@Region)", oConexion) oDataAdapter.InsertCommand = oCmdInsercion oDataAdapter.InsertCommand.Parameters.Add(New SqlParameter("@IdRegion", SqlDbType.Int)) oDataAdapter.InsertCommand.Parameters.Add(New SqlParameter("@Region", SqlDbType.NVarChar)) Dim oCmdConsulta As New SqlCommand("SELECT * FROM Region", oConexion) oDataAdapter.SelectCommand = oCmdConsulta 'crear conjunto de datos oDataSet = New DataSet 'llamar procedimiento Me.CargaDatos() End Sub     Ing. Eduardo Reyes  10  
  • 12.     Acceso a Datos con VB .NET 2005  Private Sub CargaDatos() 'limpiamos el conjunto de datos oDataSet.Clear() 'abrir conexion oConexion.Open() 'utilizar el adaptador para llenar el dataset con la tabla oDataAdapter.Fill(oDataSet, "Region") 'cerrar conexion oConexion.Close() 'enlazar el dataset con el datagrid 'en DataSource se asigna el dataset 'en DataMember el nombre de la tabla del dataset que mostrará el datagrid Me.grdDatos.DataSource = oDataSet Me.grdDatos.DataMember = "Region" End Sub   Fig. 15: Código del evento Load del frmInsertaDatos  Finalmente,  en  el  botón  Grabar,  escribiremos  las  instrucciones  para  insertar  un  nuevo  registro  en  la  tabla Region, el cual se codificara como se ve en la Fig. 16.  Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGrabar.Click Dim iResultado As Integer 'asignar los valores a los parametros para el comando insercion oDataAdapter.InsertCommand.Parameters("IdRegion").Value = Me.txtRegion.Text oDataAdapter.InsertCommand.Parameters("Region").Value = Me.txtRegion.Text 'abrir conexion oConexion.Open() 'ejecutar comando de insercion del adaptador iResultado = oDataAdapter.InsertCommand.ExecuteNonQuery() 'cerrar conexion oConexion.Close() Me.CargaDatos() MessageBox.Show("Registros Añadidos:" & iResultado) End Sub   Fig. 15: Código del Botón Grabar para Insertar nuevas Regiones  Una vez codificado todos los procedimientos ejecutamos la aplicación la cual vemos en la Fig. 16.    Fig. 16: Formulario con un Nuevo Registro Insertado  Ing. Eduardo Reyes  11  
  • 13.     Acceso a Datos con VB .NET 2005  Actualización Para  poder  realizar  una  actualización  de  datos,  crearemos  dentro  del  evento  Load  un  objeto  CommandBuilder,  pasándole  como  parámetro  el  DataAdapter.  Como  ya  sabemos,  un  DataAdapter  contiene una serie de objetos Command para las operaciones de consulta, inserción, etc. La misión en  este  caso  del  objeto  CommandBuilder,  es  la  de  construir  automáticamente  tales  comandos  y  asignárselos al DataAdapter, ahorrándonos ese trabajo de codificación.  Para  poder  hacer  uso  de  un  objeto  CommandBuilder  vamos  a  crear  un  formulario  y  lo  llamaremos  frmActualizaDatos luego agregamos los siguientes controles.   Control  Name DataGridView  grdDatos Button  btnActualizar   En esta aplicación vamos a utilizar el objeto DataAdapter para realizar una consulta en la tabla Region  de  la  BD  Northwind  con  la  cual  venimos  trabajando  y  actualizar  filas  en  esa  misma  tabla.  Después  de  agregar los controles que describimos anteriormente el formulario debe de quedar como se muestra en  la Fig. 17.    Fig. 17: Formulario frmActualizaDatos  En el siguiente paso escribiremos el procedimiento del evento Load del formulario frmActualizaDatos,  cargamos el DataSet, y lo asignamos al DataGrid a través de su propiedad DataSource y DataMember,  luego codificamos el evento click del btnActualiza. Veamos la Fig. 18.  Una vez codificado el evento load del frmActualizaDatos y el evento click del btnActualiza ejecutamos la  aplicación la cual vemos en la Fig. 19.          Ing. Eduardo Reyes  12  
  • 14.     Acceso a Datos con VB .NET 2005  Dim oCn As SqlConnection Dim oDs As DataSet Dim oDa As SqlDataAdapter Private Sub frmActualizaDatos_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'crea conexion oCn = New SqlConnection oCn.ConnectionString = "Server=Srv01;Database=Northwind;uid=sa;pwd=;" 'crear adaptador y realizar la consulta oDa = New SqlDataAdapter("SELECT * FROM Region", oCn) 'crear command builder Dim oCb As SqlCommandBuilder = New SqlCommandBuilder(oDa) 'crear dataset oDs = New DataSet oDa.Fill(oDs, "Region") 'agregar dataset al datagrid Me.grdDatos.DataSource = oDs Me.grdDatos.DataMember = "Region" End Sub Private Sub btnActualiza_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnActualiza.Click oDa.Update(oDs, "Region") End Sub Fig. 18: Código del evento Load del Formulario  el evento click del Botón Actualizar      Fig. 19: Formulario frmActualizaDatos con un Registro Modificado                  Ing. Eduardo Reyes  13  
  • 15.     Acceso a Datos con VB .NET 2005  Eliminación Para poder realizar la eliminación de filas es algo diferente a lo que venimos haciendo anteriormente, a  la hora de obtener la fila a borrar tenemos que hacerlo mediante un objeto DataRow, procediendo a su  borrado con el método Delete( ).   Para  actualizar  los  borrados  realizados,  empleamos  el  método  GetChanges(  )  del  objeto  DataTable,  obteniendo  a  su  vez  un  objeto  table  sólo  con  las  filas  borradas,  dicha  información  que  pasaremos  al  DataAdapter, para que actualice la información en el origen de datos.  Para poder hacer uso de un objeto DataRow y DataTable vamos a crear un formulario y lo llamaremos  frmEliminaDatos luego agregamos los siguientes controles.   Control  Name DataGridView  grdDatos Button  btnEliminar   Después de agregar los controles que describimos anteriormente, el formulario debe de quedar como se  muestra en la Fig. 20.    Fig. 20: Formulario frmEliminaDatos  En el siguiente paso escribiremos el código del evento Load del formulario frmEliminaDatos, cargamos el  DataSet,  y  lo  asignamos  al  DataGrid  a  través  de  su  propiedad  DataSource  y  DataMember,  luego  codificamos  el  evento  click  del  btnEliminar,  declarando  una  variable  para  poder  identificar  la  fila  del  datagrid a eliminar a travez del uso de  sus propiedades. Veamos la Fig. 21.  Una  vez  codificado  el  evento  load  del  frmEliminaDatos  y  el  evento  click  del  btnElimina  ejecutamos  la  aplicación la cual vemos en la Fig. 22.          Ing. Eduardo Reyes  14  
  • 16.     Acceso a Datos con VB .NET 2005  Dim oCn As SqlConnection Dim oDs As DataSet Dim oDa As SqlDataAdapter Private Sub frmEliminaDatos_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'crea conexion oCn = New SqlConnection oCn.ConnectionString = "Server=Srv01;Database=Northwind;uid=sa;pwd=;" 'crear adaptador y realizar la consulta oDa = New SqlDataAdapter("SELECT * FROM Region", oCn) 'crear commandbuilder Dim oCb As SqlCommandBuilder = New SqlCommandBuilder(oDa) 'crear dataset oDs = New DataSet oDa.Fill(oDs, "Region") 'agregar dataset al datagrid Me.grdDatos.DataSource = oDs Me.grdDatos.DataMember = "Region" End Sub Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click Dim oDataRow As DataRow Dim iPosicFilaActual As Integer iPosicFilaActual = 0 iPosicFilaActual = CInt(grdDatos.Item(0, grdDatos.CurrentRow.Index - 1).Value) ' obtener el objeto fila, de la tabla del dataset ' en el que estamos posicionados oDataRow = oDs.Tables("Region").Rows(iPosicFilaActual) oDataRow.Delete() ' borrar la fila ' mediante el método GetChanges(), obtenemos una tabla ' con las filas borradas Dim oTablaBorrados As DataTable oTablaBorrados = oDs.Tables("Region").GetChanges(DataRowState.Deleted) ' actualizar en el almacén de datos las filas borradas oDa.Update(oTablaBorrados) ' confirmar los cambios realizados oDs.Tables("Region").AcceptChanges() End Sub     Fig. 21: Código del evento Load del Formulario  el evento click del Botón Eliminar         Fig. 22: Formulario frmEliminaDatos con un Registro Eliminado Ing. Eduardo Reyes  15  
  • 17. Capítulo II • Navegación de registros • Relacionar tablas • Filtrar tablas • Seleccionar y mostrar registros                                                      
  • 18.     Acceso a Datos con VB .NET 2005    Navegación de registros Para realizar la navegación a través de los registros de una tabla, debemos de saber que la arquitectura  de  ADO  .NET está  orientada  a  un  modelo de  trabajo  desconectado  sobre  el  almacén de  datos,  al  que  recurriremos sólo cuando necesitemos obtener los datos para su consulta y manipulación.  El  objeto  DataSet,  combinado  con  un  grupo  de  objetos  enfocados  al  mantenimiento  de  datos  desconectados, como son DataAdapter, DataTable, DataRow, etc., nos va a permitir realizar la tarea de  navegar entre los registros de una tabla del DataSet.  El proyecto se denominara WAccesoDatos, la tabla a consultar será Customers de la BD NorthWind. Una  vez creado el nuevo proyecto en VB.NET, importaremos el espacio de nombres System.Data.SqlClient, y  declararemos  a  nivel  de  clase  un  conjunto  de  variables  para  la  manipulación  de  los  datos.  Veamos  la  figura 23.  Imports System.Data.SqlClient Public Class frmNavegaRegistros Inherits System.Windows.Forms.Form 'Variables a nivel de clase 'para la manipulación de los datos Private oDa As SqlDataAdapter Private oDs As DataSet Private iPosFilaActual As Integer End Class      Fig. 23: Variables declaradas  Ahora diseñaremos el formulario denominado frmNavegaRegistros, para eso agregamos los siguientes  controles, los cuales nos permitirá realizar las operaciones mencionadas.    Control  Name Label1  lblIDCliente Label2  lblCliente Label3  lblContacto Label4  lblDireccion Label5  lblFono TextBox1  txtIDCliente TextBox2  txtCliente TextBox3  txtContacto TextBox4  txtDireccion TextBox5  txtFono Button1  btnPrimero Button2  btnAvanza Button3  btnRetrocede Button4  btnUltimo GroupBox1  gbxClientes GroupBox2  gbxNavegar     Después de agregar los controles que describimos anteriormente, el formulario debe de quedar como se  muestra en la Fig. 24.  Ing. Eduardo Reyes  17  
  • 19.     Acceso a Datos con VB .NET 2005    Fig. 24: Formulario frmNavegaRegistros  Como  siguiente  paso,  escribiremos  el  manipulador  del  evento  Load  del  formulario  y  un  método  para  cargar los datos del registro actual en los controles del formulario, el Código se muestra en la figura  25.  Private Sub frmNavegaRegistros_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' crear conexión Dim oConexion As SqlConnection oConexion = New SqlConnection() oConexion.ConnectionString = "Server=Srv01;" & _ "Database=Northwind;uid=sa;pwd=;" ' crear adaptador Me.oDa = New SqlDataAdapter("SELECT * FROM Customers", oConexion) ' crear commandbuilder Dim oCommBuild As SqlCommandBuilder = New SqlCommandBuilder(oDa) ' crear dataset Me.oDs = New DataSet() oConexion.Open() ' llenar con el adaptador el dataset Me.oDa.Fill(oDs, "Customers") oConexion.Close() ' establecer el indicador del registro a mostrar de la tabla Me.iPosFilaActual = 0 ' cargar columnas del registro en los controles del formulario Me.CargarDatos() End Sub Private Sub CargarDatos() ' obtener un objeto con la fila actual Dim oDataRow As DataRow oDataRow = Me.oDs.Tables("Customers").Rows(Me.iPosFilaActual) ' cargar los controles del formulario con ' los valores de los campos del registro Me.txtIDCliente.Text = oDataRow("CustomerID") Me.txtCliente.Text = oDataRow("CompanyName") Me.txtContacto.Text = oDataRow("ContactName") Me.txtDireccion.Text = oDataRow("Address") Me.txtFono.Text = oDataRow("Phone") ' mostrar la posición actual del registro y el número total del registros Me.lblRegistro.Text = "Cliente: " & _ Me.iPosFilaActual + 1 & " de " & _ Me.oDs.Tables("Customers").Rows.Count End Sub   Fig. 25: Código del Evento Load y el Procedimiento Cargar Datos  Ing. Eduardo Reyes  18  
  • 20.     Acceso a Datos con VB .NET 2005  Observar que en el evento Load se ha creado un objeto CommandBuilder, pasándole como parámetro el  DataAdapter.  Como  ya  sabemos,  un  DataAdapter  contiene  una  serie  de  objetos  Command  para  las  operaciones  de  consulta,  inserción,  etc.  La  misión  en  este  caso  del  objeto  CommandBuilder,  es  la  de  construir automáticamente tales comandos y asignárselos al DataAdapter, ahorrándonos ese trabajo de  codificación. En cuanto a las operaciones de navegación por la tabla, no hay un objeto, como ocurría con  el  Recordset  de  ADO,  que  disponga  de  métodos  específicos  de  movimiento  como  MoveNext(  ),  MoveLast( ), etc. Lo que debemos hacer en ADO .NET, tal y como muestra el método CargarDatos(), es  obtener del DataSet, la tabla que necesitemos mediante su colección Tables, y a su vez, a la colección  Rows de esa tabla, pasarle el número de fila/registro al que vamos a desplazarnos. En nuestro ejemplo  utilizaremos la variable iPosFilaActual, definida a nivel de clase, para saber en todo momento, la fila de  la  tabla  en  la  que  nos  encontramos.  El  Código  fuente  de  cada  botón  de  navegación  se  muestra  en  la  figura 26.  Private Sub btnPrimero_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnPrimero.Click ' establecer el marcador de registro en el primero Me.iPosFilaActual = 0 Me.CargarDatos() End Sub Private Sub btnAvanza_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnAvanza.Click ' si estamos en el primer registro, ' no hacer movimiento If Me.iPosFilaActual = 0 Then MessageBox.Show("Primer registro") Else ' disminuir el marcador de registro ' y actualizar los controles con los ' datos del registro actual Me.iPosFilaActual -= 1 Me.CargarDatos() End If End Sub Private Sub btnRetrocede_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnRetrocede.Click ' si estamos en el último registro, ' no hacer movimiento If Me.iPosFilaActual = _ (Me.oDs.Tables("Customers").Rows.Count - 1) Then MessageBox.Show("Último registro") Else ' incrementar el marcador de registro ' y actualizar los controles con los ' datos del registro actual Me.iPosFilaActual += 1 Me.CargarDatos() End If End Sub Private Sub btnUltimo_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles btnUltimo.Click ' establecer el marcador de registro en el primero ' obteniendo el número de filas que contiene la tabla menos uno Me.iPosFilaActual = (Me.oDs.Tables("Customers").Rows.Count - 1) Me.CargarDatos() End Sub   Fig. 26: Código de los botones de navegación  Una vez codificado el evento load del frmNavegaRegistros, el procedimiento Cargar Datos y los eventos  click de los botones de navegación ejecutamos la aplicación la cual vemos en la Fig. 27.  Ing. Eduardo Reyes  19  
  • 21.     Acceso a Datos con VB .NET 2005    Fig. 27: Formulario frmNavegaRegistros    Ing. Eduardo Reyes  20  
  • 22.     Acceso a Datos con VB .NET 2005  Relacionar tablas Para llevar a cabo la relación entre dos tablas, ambas tablas deben de tener un campo en común para  realizar la relación, en esta oportunidad realizaremos la relación entre las tablas Customers y Orders por  su campo clave (CustomerID) (ambas se encuentran dentro de la BD Northwind). Después llenamos un  ComboBox con datos de la tabla Customers. Al seleccionar un valor del ComboBox, se tomarán las filas  relacionadas de la tabla Orders y se llenará con ellas un ListBox.  Una  vez  conocido  lo  que  se  desea  hacer  lo  primero  es  crear  un  proyecto  al  cual  llamaremos  WAccesoDatos, las tablas a consultar seran Customers y Orders de la BD NorthWind. Una vez creado el  nuevo proyecto en VB.NET, importaremos el espacio de nombres System.Data.SqlClient, y declararemos  a nivel de clase un conjunto de variables para la manipulación de los datos. Veamos la figura 28.  Imports System.Data Imports System.Data.SqlClient Public Class frmNavegaRegistros 'Variables a nivel de clase 'para la manipulación de los datos Dim Cn As SqlConnection Private DaC As SqlDataAdapter Private DaO As SqlDataAdapter Private Ds As DataSet Dim str As String End Class Fig. 28: Variables declaradas  Ahora diseñaremos el formulario denominado frmRelacionaTablas, para eso agregamos los siguientes  controles, los cuales nos permitirá realizar las operaciones mencionadas.  Control  Name GroupBox  gbxClientes ComboBox  cboClientes ListBox  lstOrdenes     Después de agregar los controles que describimos anteriormente, el formulario debe de quedar como se  muestra en la Fig. 29.    Fig. 29: Formulario frmRelacionaTablas  Ing. Eduardo Reyes  21  
  • 23.     Acceso a Datos con VB .NET 2005  Como  siguiente  paso,  escribiremos  el  código  del  evento  Load  del  frmRelacionaTablas  y  el  evento  SelectedIndexChanged del cboClientes, el Código se muestra en la figura  30.    Private Sub frmRelacionaTablas_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load 'crear conexion Cn = New SqlConnection() str = "Server=EDUARD;database=Northwind;uid=sa;password=master" Cn.ConnectionString = str 'creamos los dos data adapter Me.DaC = New SqlDataAdapter("Select * from Customers", Cn) Me.DaO = New SqlDataAdapter("Select * from Orders", Cn) 'instaciar dataset Me.Ds = New DataSet 'abrir la conexion Cn.Open() 'utilizamos los DataAdapters para llenar los DataSets Me.DaC.Fill(Me.Ds, "Customers") Me.DaO.Fill(Me.Ds, "Orders") 'cerramos la conexion Cn.Close() 'relacionamos las tablas del DataSet por campo común Me.Ds.Relations.Add("Customers Orders", Ds.Tables _ ("Customers").Columns("CustomerID"), _ Ds.Tables("Orders").Columns("CustomerID")) 'llenar el combobox con los nombres del cliente Dim Dr As DataRow For Each Dr In Ds.Tables("Customers").Rows Me.cboClientes.Items.Add(Dr("CustomerID") & _ " - " & Dr("CompanyName")) Next End Sub Private Sub cboClientes_SelectedIndexChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cboClientes.SelectedIndexChanged 'limpiar los valores del combo Me.lstOrdenes.Items.Clear() Dim DrC As DataRow 'obtener la fila de tabla Customers DrC = Ds.Tables("Customers").Rows(Me.cboClientes.SelectedIndex) Dim DrO() As DataRow 'obtener las filas de la tabla Orders DrO = DrC.GetChildRows("Customers Orders") Dim DrFila As DataRow 'rellenar el listbox con los valores de la tabla Orders For Each DrFila In DrO Me.lstOrdenes.Items.Add(DrFila("CustomerID") & _ " - " & DrFila("OrderID") & " - " & DrFila("OrderDate")) Next End Sub End Class      Fig. 30: Código del frmRelacionaTablas  Una  vez  codificado  el  evento  load  del  frmRelacionaTablas  y  el  evento  del  cboClientes  ejecutamos  la  aplicación la cual vemos en la Fig. 31.  Ing. Eduardo Reyes  22  
  • 24.     Acceso a Datos con VB .NET 2005    Fig. 31: Formulario frmRelacionaTablas                                                                                Ing. Eduardo Reyes  23  
  • 25.     Acceso a Datos con VB .NET 2005  Filtrar tablas Para realizar el filtrado a través de los registros de una tabla, utilizaremos la clase DataView la cual nos  permite la aplicación de vistas personalizadas a partir de una tabla contenida en un DataSet, así como la  ordenación y búsqueda de filas.  En ADO clásico, para disponer de varias vistas de una misma tabla, debíamos crear diferentes objetos  Recordset, lo cual provocaba el consumo de una gran cantidad de recursos. Este aspecto ha cambiado  profundamente en ADO .NET, ya que partiendo de un objeto DataTable situado en un DataSet, vamos a  definir varias vistas simultáneamente, ordenar y buscar registros, con la ventaja de que el consumo de  recursos es menor, puesto que los objetos DataView se alimentan del mismo DataTable.   El proyecto se denominara WAccesoDatos, la tabla a consultar será Customers de la BD NorthWind. Una  vez creado el nuevo proyecto en VB .NET, importaremos los espacio de nombres y declararemos a nivel  de clase un conjunto de variables para la manipulación de los datos. Veamos la figura 32.  Imports System.Data Imports System.Data.SqlClient Public Class frmFiltroClientes Dim Cn As SqlConnection Private Da As SqlDataAdapter Private Ds As DataSet Dim Str As String End Class    Fig. 32: Variables declaradas  Ahora  diseñaremos  el  formulario  denominado  frmFiltroClientes,  para  eso  agregamos  los  siguientes  controles, los cuales nos permitirá realizar las operaciones mencionadas.  Control  Name Label1  lblContacto GroupBox1  gbxClientes TextBox1  txtContacto DataGridView  dgFiltro     Después de agregar los controles que describimos anteriormente, el formulario debe de quedar como se  muestra en la Fig. 33.    Fig. 33: Formulario frmFiltroClientes  Ing. Eduardo Reyes  24  
  • 26.     Acceso a Datos con VB .NET 2005  La  propiedad  RowFilter  de  la  clase  DataView  nos  permite  asignar  a  este  objeto,  una  cadena  con  la  expresión  de  filtro,  que  en  una  consulta  en  lenguaje  SQL  sería  la  parte  correspondiente  a  la  cláusula  Where.  Como  hemos  comentado  anteriormente,  a  partir  de  un  DataTable  podemos  obtener  varios  filtros  mediante distintos objetos DataView, sin que ello suponga una penalización en el consumo de recursos.  Para  demostrar  este  punto,  en  el  frmFiltroClientes,  se  crea  una  vista  basada  en  un  filtro  y  una  vista  normal.  A  continuación  escribiremos  el  código  del  evento  Load  del  frmFiltroClientes  y  el  evento  Keypress del txtContacto, el Código se muestra en la figura  34.    Private Sub frmFiltroClientes_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load 'creamos la conexion Cn = New SqlConnection Str = "Server=Srv01;DataBase=Northwind;UID=sa" Cn.ConnectionString = Str 'crear el adaptador (consulta) Me.Da = New SqlDataAdapter("Select * From Customers", Cn) 'agregar consulta al dataset Me.Ds = New DataSet() Me.Da.Fill(Ds, "Customers") Me.Da = Nothing End Sub Private Sub txtContacto_KeyPress(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtContacto.KeyPress Dim Dv As DataView If Asc(e.KeyChar) = 13 Then Dv = New DataView 'filtrar por el campo y llenar el datagridview Dv.Table = Ds.Tables("Customers") Dv.RowFilter = "ContactName LIKE '%" & txtContacto.Text & "%'" 'agregar el filtro para mostrar en el Grid dgFiltro.DataSource = Dv End If End Sub      Fig. 34: Código del frmFiltroClientes  Una  vez  codificado  el  evento  load  del  frmFiltroClientes  y  el  evento  del  txtContacto  ejecutamos  la  aplicación la cual vemos en la Fig. 35.    Fig. 35: Formulario frmFiltroClientes  Ing. Eduardo Reyes  25