UNJBG ITEL CARRERA Técnico Analista Programador de Sistemas
¡¡LÍDER EN CAPACITACIÓN INFORMÁTICA!! Garantía del proceso Enseñanza-Aprendizaje con las últimas tecnologías, con computadoras de última generación, impresoras, escáner, multimedia, redes, Internet, material didáctico paso a paso, biblioteca y aula virtual con docentes del más alto nivel.
CURSO Programación Visual .NET II
GUÍA DE LABORATORIO N° 02 OBJETIVOS: • Creación por código de objetos: Command, DataReader (Escenario Conectado) • Uso de Plantillas de Formulario de Inicio de Sesión, y Pantalla de Bienvenida, Cuadro Acerca de, Formulario Primario MDI (Componentes utilizados: MenuStrip, ToolStrip, StatusStrip) • Creación y uso de objetos DataView. 1.
ENTORNO INTEGRADO DE DESARROLLO • Proceda a ingresar Visual Studio .NET y realice lo siguiente: • Deberá Abrir la solución realizada en la práctica anterior (SisVentas)
2.
CREACION DE FORMULARIO DE ACCESO Y ACTUALIZACIÓN DE DATOS EN MODO CONECTADO (FRMMODOCONECTADO.VB) 2.1. Agregue un nuevo formulario a su proyecto y guárdelo con el nombre de frmModoConectado.vb 2.2. Proceda a agregar los siguientes objetos según se observa a continuación:
2.3. Establezca los nombres (NAME) a los objetos según lo siguiente: • Para los RadioButton: rbtnSeleccion, rbtnModificar, rbtnInsertar, rbtnEliminar respectivcamente • Para los TextBox: txtCodigo, txtDescripcion, txtPrecio, txtStock respectivamente • Para el Button, será btnEjecutar • Para el Label, será lblMensaje
Así también establezca las otras propiedades para obtener la apariencia deseada
Bimestre Académico Ciclo
: 2009: V
(1 de 7)
Docente Fecha
: José L. Ponce Segura. : Tacna, Mayo del 2009
Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas.
Curso: Programación Visual .Net II
2.4. Ahora procederemos a escribir el código correspondiente: Option Compare Text Imports System.Data.SqlClient Imports System.Data
En la Sección de Declaraciones escriba: Dim codi As String, contar As Boolean Private Sub vergrupos(ByVal x1 As Boolean) GroupBox1.Enabled = x1 GroupBox2.Enabled = Not x1 End Sub Private Sub CargarDataReader() Try If Conexion.State = ConnectionState.Closed Then Conexion.Open() ' Crear una orden de recuperación Dim miOrden As SqlCommand = New SqlCommand("SELECT * FROM Articulo", Conexion) ' Crear el DataReader Dim drArticulos As SqlDataReader ' Crear el DataTable Dim tabla As New DataTable ' Ejec.la consulta y cargamos los datos devueltos en un DataReader "DrArticulos" drArticulos = miOrden.ExecuteReader 'Cargamos los datos desde el DataReader "drArticulos" en el DataTable "Tabla" tabla.Load(drArticulos, LoadOption.OverwriteChanges) ' Enlazamos/Mostramos los datos en la grilla DataGridView1.DataSource = tabla drArticulos.Close() Conexion.Close() Catch exc As Exception MessageBox.Show(exc.Message) End Try End Sub Private Sub verDetalle(ByVal fila As Integer) txtCodigo.Text = DataGridView1.Item(0, fila).Value.ToString txtDescripcion.Text = DataGridView1.Item(1, fila).Value.ToString txtPrecio.Text = DataGridView1.Item(2, fila).Value.ToString txtStock.Text = DataGridView1.Item(3, fila).Value.ToString End Sub Private Function noseleccion(ByVal cc As String) As Boolean If cc = Nothing Then MessageBox.Show("Debe seleccionar un registro") rbtnSeleccion.PerformClick() Return True End If End Function Private Sub LimpiarCajas() Dim micontrol As Control For Each micontrol In Me.GroupBox2.Controls If TypeOf (micontrol) Is TextBox Then micontrol.Text = "" End If Next End Sub
Docente: José Luis Ponce Segura Cel.: 952636911
Prac02 (2 de 7)
e-mail:
[email protected] www.redtacna.net
Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas.
Curso: Programación Visual .Net II
Private Sub FrmModoConectado_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load CargarDataReader() DataGridView1.ReadOnly = True verDetalle(0) : vergrupos(True) End Sub Private Sub btnEjecutar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEjecutar.Click Try Dim rpta As Windows.Forms.DialogResult Dim n As Integer, strsql As String = "" Dim mensaje As String = "", op As Boolean If contar = False Then rpta = MessageBox.Show("Ejecutar Instrucción SQL=SI ó Desea Cancelar=NO", _ "Operacion", MessageBoxButtons.YesNo, MessageBoxIcon.Question, _ MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign, False) If rpta = Windows.Forms.DialogResult.No Then verDetalle(0) CargarDataReader() lblMensaje.Text = "Seleccione una opcion" vergrupos(True) Exit Sub End If End If If Conexion.State = ConnectionState.Closed Then Conexion.Open() If rbtnSeleccion.Checked = True Then strsql = "SELECT COUNT(*) FROM Articulo" mensaje = "Número de filas/registros: " op = True ElseIf rbtnModificar.Checked = True Then strsql = "UPDATE Articulo SET CODART='" & txtCodigo.Text & "', " & _ "DESART='" & txtDescripcion.Text & "', " & "PREART=" & txtPrecio.Text & ", " & _ "STOART=" & txtStock.Text & " WHERE CODART='" & codi & "'" mensaje = "Número de filas/registros Modificadas: " op = False ElseIf rbtnInsertar.Checked = True Then strsql = "INSERT INTO Articulo (codart,desart,preart,stoart) VALUES ('" & _ txtCodigo.Text & "','" & txtDescripcion.Text & "','" & _ txtPrecio.Text & "','" & txtStock.Text & "')" mensaje = "Número de filas/registros Insertados: " op = False ElseIf rbtnEliminar.Checked = True Then strsql = "DELETE FROM Articulo WHERE CodArt='" & codi & "'" mensaje = "Número de filas/registros Eliminados: " op = False End If Dim miOrden As SqlCommand = New SqlCommand(strsql, Conexion) If op = True Then n = miOrden.ExecuteScalar Else n = miOrden.ExecuteNonQuery() End If vergrupos(True) CargarDataReader() : verDetalle(0) lblMensaje.Text = mensaje & CStr(n) Conexion.Close() Catch exc As Exception MessageBox.Show(exc.Message) End Try End Sub Docente: José Luis Ponce Segura Cel.: 952636911
Prac02 (3 de 7)
e-mail:
[email protected] www.redtacna.net
Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas.
Curso: Programación Visual .Net II
Private Sub DataGridView1_CellMouseClick(ByVal sender As Object, ByVal e As System. . . . ) Handles DataGridView1.CellMouseClick Dim f As Integer = DataGridView1.CurrentRow.Index codi = DataGridView1.Item(0, f).Value.ToString verDetalle(f) lblMensaje.Text = "Artículo de codigo Nro. :" & codi End Sub Private Sub rbtnSeleccion_Click(ByVal sender . . . System.EventArgs) Handles rbtnSeleccion.Click, rbtnModificar.Click, rbtnInsertar.Click, rbtnEliminar.Click Select Case sender.name Case "rbtnSeleccion" contar = True DataGridView1.Enabled = True vergrupos(True) Exit Sub Case "rbtnModificar" If noseleccion(codi) = True Then Exit Sub txtCodigo.Enabled = False DataGridView1.Enabled = True vergrupos(False) Case "rbtnInsertar" txtCodigo.Enabled = True LimpiarCajas() txtCodigo.Text = GeneraCodigo() DataGridView1.Enabled = False vergrupos(False) Case "rbtnEliminar" If noseleccion(codi) = True Then Exit Sub vergrupos(False) End Select contar = False End Sub 3.
CREACIÓN DE FORMULARIO DE INICIO DE SESIÓN(FrmInicio.vb) 3.1. Desde el Menú [Proyecto], seleccione [Agregar Nuevo Elemento], luego nos visualizará la siguiente ventana: Æ 3.2. En ésta ventana seleccione la Plantilla [Formulario de inicio de sesión]. 3.3. Luego deberá escribir el nombre para nuestro formulario: FrmInicioSesion.vb 3.4. Luego para finalizar haga clic en [Agregar]. 3.5. Luego tendremos el siguiente formulario con todos los objetos necesarios para su uso:
Docente: José Luis Ponce Segura Cel.: 952636911
Prac02 (4 de 7)
e-mail:
[email protected] www.redtacna.net
Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas.
Curso: Programación Visual .Net II
3.6. Luego sólo nos queda agregar el código necesario para darle funcionalidad al mismo: ' Antes de Public Class FrmInicioSesion Imports System.Data Imports System.Data.SqlClient ' Esto va en la sección declaraciones, después de Public Class FrmInicioSesion Dim objDataAdapter As SqlDataAdapter 'objeto Adaptador de datos Dim objDataSet As DataSet 'objeto Conjunto de datos Private Sub frmInicioSesion_Load(ByVal sender As System......) Handles MyBase.Load ' Abriendo la conexion al origen de datos Conexion.Open() 'Creando objeto DataAdapter objDataAdapter = New SqlDataAdapter("select * from usuario", Conexion) 'Creando objeto DataSet objDataSet = New DataSet() objDataAdapter.Fill(objDataSet, "usuario") ' Cerrando la conexión Conexion.Close() End Sub Private Sub OK_Click(ByVal sender As System.Object, .......) Handles OK.Click Static cuenta As Integer Dim objDataView As New DataView() objDataView.Table = objDataSet.Tables("usuario") objDataView.RowFilter = "usuario='" & Trim(Me.UsernameTextBox.Text) & "'" & _ " and " & "clave='" & Trim(Me.PasswordTextBox.Text) & "'" If objDataView.Count > 0 Then Dim oDr As DataRow oDr = objDataView.Item(0).Row ‘ Declara la variable sesion en el módulo de tipo string sesion = oDr("nombre") & “, “ & oDr("apellido") ‘ el contenido la variable usuario podras utilizarla en cualquier form del ‘ sistema, para que veas el usuario que ingreso al sistema, por citar un ‘ ejemplo u otros usos que se le puede dar MsgBox("Esta Usted ingresando como Operador") Me.Hide Dim frm As New FrmVisArticulos ' luego deberá ser FrmPrincipal frm.Show() Else cuenta = cuenta + 1 If cuenta = 3 Then MsgBox("PARA OTRA VEZ SERÁ", MsgBoxStyle.Critical, "LO SIENTO") End End If MsgBox("Te queda: " + Str(3 - cuenta) + " oportunidad(es)", 16, "Error") UsernameTextBox.Clear() : PasswordTextBox.Clear() : UsernameTextBox.Focus() End If End Sub 3.7. LUEGO DEBE ESTABLECER COMO OBJETO INICIAL AL FORMULARIO FrmInicioSesion. 4.
CREACIÓN DE EL FORMULARIO PRINCIPAL MDI (INTERFAZ DE MÚLTIPLES DOCUMENTOS) (FrmPrincipal.VB) Para ello utilizaremos una plantilla como en los casos de Inicio de Sesión, Pantalla de Bienvenida, etc. Pero haciendo los cambios necesarios para poder acceder a todos los formularios, reportes, Ayuda, etc. Para ello siga los siguientes pasos: 4.1. Desde el Menú [Proyecto], seleccione [Agregar Nuevo Elemento], luego en la ventana deberá elegir la Plantilla [Formulario Primario MDI]. 4.2. Luego deberá escribir el nombre para nuestro formulario: FrmPrincipal.vb 4.3. Luego para finalizar haga clic en [Agregar].
Docente: José Luis Ponce Segura Cel.: 952636911
Prac02 (5 de 7)
e-mail:
[email protected] www.redtacna.net
Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas.
Curso: Programación Visual .Net II
4.4. Luego tendremos el siguiente formulario con un Menú, Barra de Herramientas y Barra de Estado:
PERSONALIZANDO EL MENÚ: 4.5. Como se puede apreciar ya disponemos de un formulario “esqueleto/estructura” de un Formulario Principal, con ello hemos ahorrado tiempo en el diseño del mismo, pero debemos hacerle las siguientes modificaciones: 4.6. Para nuestro caso no utilizaremos los Menús Archivo y Editar, entonces podemos borrarlo o NO hacerlos visibles en tiempo de ejecución, optaremos por el segundo caso. 4.7. Haga clic en el menú Archivo (FileMenu), luego ubíquese en la propiedad Visible = False. Haga lo mismo para el menú Editar (EditMenu). 4.8. Ahora proceda a agregar los Menús necesarios según la siguiente estructura: Actualizar Clientes Empleados Artículos Cargo Salir
Visualizar Clientes Empleados Artículos Cargo Factura
Consultas Clientes Empleados Artículos Cargo Facturas
Transacción Venta con Factura Visualiza Factura
Reportes Clientes Empleado Artículo Facturas x Mes
4.9. Las opciones de Menú sólo son referenciales, pudiendo Usted agregar otras si así lo requieran.
Docente: José Luis Ponce Segura Cel.: 952636911
Prac02 (6 de 7)
e-mail:
[email protected] www.redtacna.net
Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas.
Curso: Programación Visual .Net II
PERSONALIZANDO LA BARRA DE HERRAMIENTAS: 4.10. Ahora procederemos a personalizar la barra de herramientas, es decir el componente ToolStrip, para ello empiece seleccionando éste, luego seleccione la propiedad Ítems y haga clic en Colección: , luego nos visualizará la siguiente ventana
4.11. Deberá Usted agregar botones para Artículos, Factura, Reportes, Calculadora, Ayuda, Salir, etc. Debe tener en cuenta que estos botones son como accesos directos hacia las tareas que frecuentemente se utilizarán, por ello deberá agregar otros botones según su criterio. 4.12. Como ejemplo agregaremos el Botón Salir, para ello haga clic en [Agregar], observará que se agregar un nuevo miembro o botón con el nombre ToolStripButton1. 4.13. A continuación procederemos a establecer algunas propiedades a éste nuevo botón, para ello seleccione el nuevo botón ToolStripButton1: • (Name) = SalirToolStripButton • Text = Salir • ToolTipText = Salir • Image = Deberá buscar el icono adecuado para cambiar el orden o eliminar los botones que no se utilizarán. 4.14. Utilice los botones 4.15. Para finalizar haga clic en Aceptar.
TAREA ENCARGADA: •
• •
Proceda a crear un Formulario de Bienvenida (Pantalla de Bienvenida), para ello deberá seguir los pasos del Formulario de Inicio de Sesión, pero esta vez deberá seleccionar Pantalla de Bienvenida y el nombre de éste deberá ser FrmBienvenida.vb. Luego Observe Usted en Propiedades del Proyecto en la opción Pantalla de Bienvenida. De forma similar al punto anterior, pero en esta ocasión deberá seleccionar otra plantilla, ésta será Cuadro Acerca de y el nombre de éste deberá ser FrmAcercade.vb., luego deberá enlazarlo al menú correspondiente. Realice los procedimientos necesarios para mejorar el formulario frmModoConectado, principalmente referente a validación: ejemplo, no se puede eliminar algunos artículos si éstos están relacionados con otra tabla, etc.
Docente: José Luis Ponce Segura Cel.: 952636911
Prac02 (7 de 7)
e-mail:
[email protected] www.redtacna.net