PRACTICA A: ACCESO A DATOS CON ADO.NET 1. LLENANDO UNA TABLA DEL DATA SET MEDIANTE EL DATADAPTER 1.1. Crear una aplicación Windows en Visual en Visual Basic.NET llamada Demo45 1.2. En la ventana del explorador de soluciones seleccionar el archivo y en la ventana de propiedades cambiar la propiedad File frmlistacategoria 1.3. En el diseñador de formularios Windows, arrastrar un ControlData Gris, luego configurar las propiedades, tal como se muestra en el siguiente cuadro. DataGrid Dock frmllistacategorias Lista de Categorías Northwind dgdcategoria Fill 1.4. En la ventana del explorador de soluciones seleccionar el archivo frmlistacategorias, hacer clic derecho y seleccionar Ver código 1.5. En la parte superior del código (antes de la clase) definir el Space del proveedor de SQL: Import System.Data.SqlClient 1.6. Codificamos el procedimiento en el evento Load del formulario. Así debe quedar el código Private Sub _Load(ByVal sender As Object, ByVal e As System.EventArgs) les MyBase.Load 'Declaramos un variable del tipo SqlConnection pasando como parametro 'la cadena de conexion Dim con As New SqlConnection("uid=sa;server=IDAT10;database=NorthWind") 'Declaramos una variable del tipo SqlDataAdapter pasando como parametros 'instrucción sql y la conexion usada Dim dap As New SqlDataAdapter("Select CategoryID, Category From Categories", con) 'Declaramos una variable tipo DataSet Dim dst As New DataSet 'Ejecutamos la instrucción Select mediante el métdo Fill del SqlAdapterpasando como 'parametros el DataSet y el nombre de la tabal del DataSet dap.fill(dst, "Categories") dgdcategoria.datasource = dst.tables(0) 1.7. Configuramos frmlistacategoria como el formulario de inicio 1.8. Grabar y ejecutar la aplicación pulsando F5 1.9. Investigar. 1.9.1. Investigue propiedades de la clase DataSet 1.9.2. Clase SqlDataAdapter. Propiedades y métodos
2. CREANDO Y AGREGANDO UNA RELACIÓN EN EL DATASET: Esta demostración tiene por objeto enseñar a crear dos tablas en un DataSet, luego veremos como crear una relación entre dichas tablas y agregar la relación al DataSet 2.1. Crear una aplicación Windows en Visual Basic.NET llamada Demo46 2.2. En la ventana del exploradro de soluciones seleccionar el archivo y en la ventana de propiedades cambiar la propiedad File a frmlistadetallesorden 2.3. En el diseñador de formularios Windows, arrastrar un control DataGrid, luego configurar las propiedades, tal como se muestra en el siguiente cuadro DataGrid Dock frmllistadetallesorden Lista de Categorías Northwind dgdcategoria Fill 2.4. En la ventana del explorador de soluciones seleccionar el archivo frmlistadetallesorden, hacer clic derecho y seleccionar Ver código 2.5. En la parte superior del código (antes de la clase) definir el Space del proveedor de SQL: Import System.Data.SqlClient 2.6. Codificamos el procedimiento en el evento Load del formulario. Así debe quedar el código. Private Sub frmlistadetallesorden_load(byval sender As Object, ByVal e As System.EventArgs) les MyBase.Load Dim con As New SqlConnection("uid=sa;pwd=123456;server=INFO1;database=Northwind") 'Declaramos una variable del tipo SqlDataAdapter pasando como parametros 'instrucción sql y la conexion usada Dim dap As New SqlDataAdapter("", con) 'Declaramos una variable tipo DataSet Dim dst As New DataSet 'Modifica la propiedad Comman del objeto SelectCommand del SqlDataAdapter 'para escribir el primer comando dap.selectcommand.command = "Select OrderID, OrderDate,EmployeeID From Orders" 'Ejecuta la instrucción Select mediante el método Fill del SqlDataAdapter pasando como 'parametros el Data Set y el nombre de la primera tabla dap.fill(dst, "Ordenes") 'Modifica la propiedad Comman del objeto SelectCommand del SqlDataAdapter 'para escribir el primer comando dap.selectcommand.command = "Select OrderID, ProductID,UnitPrice From [Order Details]" 'Ejecuta la instrucción Select mediante el método Fill del SqlDataAdapter pasando como 'parametros el Data Set y el nombre de la segunda tabla dap.fill(dst, "Detalles") 'Declara una variable del tipo DataRelation pasando 3 parametros, primero el nombre de la relacion, 'segundo la columna en la tabla padre y tercero la columna hija Dim drn As New DataRelation("Detalles_Orden", dst.tables(0).columns(0), dst.tables(1).columns(0)) 'Agrega la realación creada al DataSet, mediante el método Add de la colección Relations dst.relations.add(drn) 'Enlaza la tabla padre al DataGrid dgddetallesorden.datasource = dst.tables(0)
'El método Expand permite expander el nodo con el índice de la fila especificada dgddetallesorden.expand(0) 2.7. Investigue: 2.7.1. Clase DataRelacion, Propiedades 3. MANTENIMIENTO DE UNA TABLA DEL DATASET: Esta demostración tiene por objetivo enseñar a realizar mantenimiento en una tabla del DataSet y luego enviar los cambios realizados por lotes (Batch) 3.1. Crear un Aplicación Windows en Visual Basic.Net llamada Demo47 3.2. En la ventana del exploradro de soluciones seleccionar el archivo y en la ventana de propiedades cambiar la propiedad File a frmlistaempleados 3.3. En el diseñador de forumularios Windows, arrastrar un control DataGrid y 4 Buttons, luego configurar las propiedades, tal como se muestra en el siguiente cuadro. FormBorderStyle MaximizeBox MinimizeBox DataGrid Button1 ReadOnly frmllistaempleados FixedSigle Lista de Empleados Nortwind dgdempleado X=16, Y =12 Width=290, Height=214 btnnuevo X=15, Y=238 Width=290, Height=214
Tag 1 Nuevo Button2 Tag btneditar X=78, Y=238 Width=60, Height=23 1 Nuevo Button3 Tag btneliminar X=14, Y=238 Width=60, Heght=23 3 Eliminar Button4 btnenviarcambios X=202, Y=238 Width=100, Height=23 Enviar Cambios 3.4. Agregar un segundo formulario al proyecto Project seleccionar AddWindowsForm y escribir como nombre frmmanteempleado, luego clic en Open 3.5. En el diseñador de formularios Windows, arrastrar un control GroupBox y 2 Buttons, luego configurar las propiedades, tal como se muestra en el siguiente cuadro. GroupBox1 Button1 Button2 FormBorderStyle MaximizeBox MinimizeBox DialogResult DialogResult frmmanteempleado FixedSigle grpempleado X=16, Y =12 Width=290, Height=214 Datos del Empleado btnaceptar Ok X=16, Y=170 Width=75, Height=23 Aceptar btncancelar Cancel X=196, Y=170 Width=75, Height=23 Cancelar 3.6. Sobre el grpempleado arrastrar 3 controles Label y 3 Box, configurando sus propiedades, tal como se muestra en el siguiente cuadro:
Label1 Box1 Label2 Box2 Label3 Box3 Auto ReadOnly Auto ReadOnly Auto Auto lblcodigo X=20, Y=28 Código: txtcodigo X=80, Y=28 Width=40, Height=20 lblapellido X=20, Y=64 Apellido: txtapellido X=80, Y=60 Width=150, Height=20 lblnombre X=20, Y=100 Nombre: txtnombre X=80, Y=96 Width=90, Height=20 3.7. Como la aplicación usa dos formularios donde se desea mantener datos, insertamos un módulo para declarar variables. Del menú Project seleccionar AddModule, escribir como nombre modempleado y clic en Open 3.8. Definir en el módulo las siguientes enumeraciones y variables públicas: Module modempleado Public dst As New DataSet() Public pos As Integer Public opera As Operacion Public Enum Operacion Nuevo = 1 Editar = 2 Eliminar = 3 End Enum End Module 3.9. Regresar al primer formulario frmlistaempleados y en ventana explorador de soluciones dar clic en el boton View Code 3.10. En la parte superior del código (antes de la clase) definir el Space del provedor de SQL: Imports System.Data.SqlClient 3.11. Definir la variables a nivel de la clase
Private con As New SqlConnection("uid=sa;pwd=123456;server=INFO1;database=Northwind") Dim dap As New SqlDataAdapter("Select EmployeeID, Last, First From Employees", con) 3.12. Crear el procedimiento ListarEmpleados, que ocurran en el evento Load del formulario y escribir el siguiente codigo Private Sub ListarEmpleados(ByVal sender As System.Object, ByVal e As System.EventArgs) les MyBase.Load dap.fill(dst, "Empleados") dgdempleado.datasource = dst.tables(0) 3.13. Crear un procedimiento de evento llamado MostrarDetalle que muestre el segundo formulario al ocurrir el evento Click sobre los botones btnnuevo, btneditar, btneliminar Private Sub MostrarDetalle(ByVal sender As System.Object, ByVal e As System.EventArgs) les btnnuevo.click, btneditar.click, btneliminar.click pos = dgdempleado.currentrowindex opera = sender.tag Dim objmanteempleado As New frmmanteempleado() objmanteempleado.showdialog() 3.14. Crear un procedimiento de evento llamado EnviarCambios que envie todos los cambios desde la tabla hacia la base de datos, este debe ocurrir en el evento Clic del botón btnenviarcambios Private Sub EnviarCambios(ByVal sender As System.Object, ByVal e As System.EventArgs) les btnenviarcambios.click Try Dim cbd As New SqlCommandBuilder(dap) dap.update(dst, "Empleados") MessageBox.Show("Operacion Realizada", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information) Catch ex As Exception MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally dst.tables(0).clear() dap.fill(dst, "Empleados") dgdempleado.datasource = dst.tables(0) End Try 3.15. Regresar al segundo formulario frmmanteempleado y en la ventana explorador de soluciones dar clic en el botón View Code 3.16. Crear un procedimiento llamado Limpiaros que permita borrar los cuadros de texto para realizar un nuevo ingreso. Private Sub Limpiaros() txtcodigo.clear() txtapellido.clear() txtnombre.clear()
3.17. Crear otro procedimiento general llamado MostrarEmpleado que permita mostrar en los cuadros de texto los datos de los empleados en el primer formulario, de acuerdo a la posición pos Private Sub MostrarEmpleado() With dst.tables(0).rows(pos) txtcodigo. =.Item(0) txtapellido. =.Item(1) txtnombre. =.Item(2) End With 3.18. Crear el procedimiento de evento MostrarDatos, que ocurran en el evento Load del formulario que permita representar un dialogo distinto dependiendo de la operación elegida (opera) Private Sub MostrarDatos(ByVal sender As System.Object, ByVal e As System.EventArgs) les MyBase.Load If opera = modempleado.operacion.nuevo Then Me. = "Adicionar un Empleado" grpempleado.enabled = Limpiaros() ElseIf opera = modempleado.operacion.editar Then Me. = "Actualizar un Empleado" grpempleado.enabled = MostrarEmpleado() ElseIf opera = modempleado.operacion.eliminar Then Me. = "Eliminar un Empleado" grpempleado.enabled = MostrarEmpleado() End If 3.19. Crear un evento llamado RealizarOpeacion que de acuerdo a la operación seleccionada en el primer formulario realice una Adicion o una Actualizacion, Eliminación, esto en el evento btnaceptar, tal como sigue: Private Sub Aceptar(ByVal sender As System.Object, ByVal e As System.EventArgs) les btnaceptar.click With dst.tables(0) Dim fila As DataRow If opera = modempleado.operacion.nuevo Then fila =.NewRow fila(0) =.Rows(.Rows.Count - 1)(0) + 1 fila(1) = txtapellido. fila(2) = txtnombre..rows.add(fila) ElseIf opera = modempleado.operacion.editar Then.BeginInit() fila =.Rows(pos) fila(1) = txtapellido. fila(2) = txtnombre..endinit() ElseIf opera = modempleado.operacion.eliminar Then fila =.Rows(pos) fila.delete() End If End With 3.20. Configurar frmlistaempleado como el formulario de Inicio 3.21. Grabar y ejecutar la aplicación con F5 TAREA: Realice las mismas operaciones sobre la tabla Employees