Universidad Nacional de CajamarcaFacultad de Ingeniería Escuela Académico Profesional de Ingeniería de Sistemas CURSO : PROGAMACION APLICADA I TEMA : MANUAL VISUAL ESTUDIO 2010 ALUMNO : NAVA ALARCON, Gian Franco CICLO : VI Cajamarca, diciembre del 2011 1.1PROGAMACION LINEAL Y PROGAMACION HORIENTADA A OBJETOS: Existen distintos tipos de programas. En los primeros tiempos de los ordenadores los programas eran de tipo secuencial (también llamados tipo batch) Un programa secuencial es un programa que se arranca, lee los datos que necesita, realiza los cálculos e imprime o guarda en el disco los resultados. De ordinario, mientras un programa secuencial está ejecutándose no necesita ninguna intervención del usuario. A este tipo de programas se les llama también programas basados u orientados a procedimientos o a algoritmos (procedural languages). Este tipo de programas siguen Utilizándose ampliamente en la actualidad, pero la difusión de los PCs ha puesto de actualidad otros tipos de programación. Los programas interactivos exigen la intervención del usuario en tiempo de ejecución, bien para suministrar datos, bien para indicar al programa lo que debe hacer por medio de menús. Los programas interactivos limitan y orientan la acción del usuario. Un ejemplo de programa interactivo podría ser Matlab. Por su parte los programas orientados a eventos son los programas típicos de Windows, tales como Netscape, Word, Excel y PowerPoint. Cuando uno de estos programas ha arrancado, lo único que hace es quedarse a la espera de las acciones del usuario, que en este caso son llamadas eventos. El usuario dice si quiere abrir y modificar un fichero existente, o bien comenzar a crear un fichero desde el principio. Estos programas pasan la mayor parte de su tiempo esperando las acciones del usuario (eventos) y respondiendo a ellas. Las acciones que el usuario puede realizar en un momento determinado son variadísimas, y exigen un tipo especial de programación: la programación orientada a eventos. Este tipo de programación es sensiblemente más complicada que la secuencial y la interactiva, pero Visual Basic 6.0 la hace especialmente sencilla y agradable. 1.2 FORMULARIOS Y CONTROLES: Cada uno de los elementos gráficos que pueden formar parte de una aplicación típica de Windows es un tipo de control: los botones, las cajas de diálogo y de texto, las cajas de selección desplegables, los botones de opción y de selección, las barras de desplazamiento horizontales y verticales, los gráficos, los menús, y muchos otros tipos de elementos son controles para Visual Basic. Cada control debe tener un nombre a través del cual se puede hacer referencia a él en el programa. Visual Basic proporciona nombres por defecto que el usuario puede modificar. En la terminología de Visual Basic se llama formulario (form) a una ventana. Un formulario puede ser considerado como una especie de contenedor para los controles. Una aplicación puede tener varios formularios, pero un único formulario puede ser suficiente para las aplicaciones más sencillas. Los formularios deben también tener un nombre, que puede crearse siguiendo las mismas reglas que para los controles. 1.3OBJETOS Y PROPIEDADES: Los formularios y los distintos tipos de controles son entidades genéricas de las que puede haber varios ejemplares concretos en cada programa. En programación orientada a objetos (más bien basada en objetos, habría que decir) se llama clase a estas entidades genéricas, mientras que se llama objeto a cada ejemplar de una clase determinada. Por ejemplo, en un programa puede haber varios botones, cada uno de los cuales es un objeto del tipo de control command button, que sería la clase. Cada formulario y cada tipo de control tienen un conjunto de propiedades que definen su aspecto gráfico (tamaño, color, posición en la ventana, tipo y tamaño de letra, etc.) y su forma de responder a las acciones del usuario (si está activo o no, por ejemplo). Cada propiedad tiene un nombre que viene ya definido por el lenguaje. Por lo general, las propiedades de un objeto son datos que tienen valores lógicos (True, False) o numéricos concretos, propios de ese objeto y distintos de las de otros objetos de su clase. Así pues, cada clase, tipo de objeto o control tiene su conjunto de propiedades, y cada objeto o control concreto tiene unos valores determinados para las propiedades de su clase. 1.4 EVENTOS: Ya se ha dicho que las acciones del usuario sobre el programa se llaman eventos. Son eventos típicos el clicar sobre un botón, el hacer doble clic sobre el nombre de un fichero para abrirlo, el arrastrar un icono, el pulsar una tecla o combinación de teclas, el elegir una opción de un menú, el escribir en una caja de texto, o simplemente mover el ratón. Cada vez que se produce un evento sobre un determinado tipo de control, Visual Basic arranca una determinada función o procedimiento que realiza la acción programada por el usuario para ese evento concreto. Estos procedimientos se llaman con un nombre que se forma a partir del nombre del objeto y el nombre del evento, separados por el carácter (_), como por ejemplo txtBox_click, que es el nombre del procedimiento que se ocupará de responder al evento click en el objeto txtBox. 1.5 METODOS: Los métodos son funciones que también son llamadas desde programa, pero a diferencia de los procedimientos no son programadas por el usuario, sino que vienen ya pre-programadas con el lenguaje. Los métodos realizan tareas típicas, previsibles y comunes para todas las aplicaciones. De ahí que vengan con el lenguaje y que se libere al usuario de la tarea de programarlos. Cada tipo de objeto o de control tiene sus propios métodos. Por ejemplo, los controles gráficos tienen un método llamado Line que se encarga de dibujar líneas rectas. De la misma forma existe un método llamado Circle que dibuja circunferencias y arcos de circunferencia Es obvio que el dibujar líneas rectas o circunferencias es una tarea común para todos los programadores y que Visual Basic 6.0 da ya resuelta. 1.5ENTORNO VISUAL DE VISUAL BASIC: 1.6EJEMPLOS: 1. Escribir un programa que nos permita ingresar el valor de 3 variables(X,Y,Z) y colocar un botón que nos permita calcular el resultado de la siguiente formula matemática. R= 2x^2+3x^2y^2\(y+sqrt(4xyz^2)-2z) SOLUCION 2. EJERCICIO 2: Hallar el máximo y el mínimo de 4 números: 3. EJERCICIO 3: PARA PODER VALIDAR LOS VALORES INGRESADOS EN EL TEXBOX SOLO SE INGRESEN NUMEROS: Private Sub sueld_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles sueld.KeyPress If Char.IsDigit(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub NO SE DEJE EL TEXBOX EN BLANCO NI ESPACIOS: If Not String.IsNullOrEmpty(sueld.Text) And Not String.IsNullOrWhiteSpace(sueld.Text) Then MOSTRAR EL CODIGO ASCCI DE UNA TECLA: Tx1.txt=asc(e.keychar) 4. EJERCICO 4: 5. EJERCICIO5: Compara los 2 últimos números ejecutados al azar para dar el máximo y el mínimo. 6. EJERCICIO 6: Calcular series en función a un número ingresado. 7. EJERCICIO 7: 8. EJERCICIO 8: LISTBOX Ejercicio 1: CODIGO: EJERCICIO 2: CODIGO: MODIFICACION DE EJERCICIO: CODIGO: Ejercicio 3: Código: Ejercicio con imágenes: Código: = PICTURE BOX 1. Ejercicio 1: ARRASTRE DE IMÁGENES Eventos: Keydown: cuando se mantiene pulsada una tecla. Keyup: cuando se suelta la tecla pulsada. Keypress: cuando se presiona una tecla. MOVIMIENTO DE OBJETOS POR MEDIO DEL KEYPRESS PRIMERA FORMA PARA ARRASTRAR UNA IMAGNE CON LA TECLA A O D: SEGUNDA FORMA: LA PROPIEDAD KEYPREVICE (propiedad del formulario) : Determina si los eventos del teclado para los controles del formulario se registran junto con el formulario. MOVER IMÁGENES POR MEDIO DEL KEYDOWN MOVER UNA IMAGEN CON EL MOVIMIENTO DEL MOUSE ARRASTRARE Eventos: Allowdrop: Obtiene o establece un valor que indica si el control puede aceptar los datos que el usuario arrastra al mismo Dodragdrop: inicia la operación de arrastrar y colocar. Dragenter: determina el tipo de dato que se arrastra al formulario EJERCICIO1: Arrastrar texto EJERCICIO2: EJERCICIO3: EJERCICIO 4: OBJETO TIMER Objeto no visual lo que permite que el usuario no pueda ser visto por el usuario ya que este evento trabaja con tiempo sin que el usuario intervenga el proceso. Timer1.start: empieza a generar el evento Timer.stop: detiene el evento Ejercicio: Simular un semáforo: Código: MOVIMIENTO DE IMÁGENES Ancho de imagen width Largo es heigth CODIGO PROGAMACION APLICADA CON CONEXIÓN A BASE DE DATOS Código para exportar datos de exel a Sql: use Northwind bulk insert estudiantes from 'D:\alumnos.csv' with ( fieldterminator = ',', rowterminator= '\n' ) Menus: Private Sub Consulta1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Consulta1ToolStripMenuItem.Click consulta2.Parent = Me.Parent consulta2.Show() End Sub Establecer la conexión: Es recomendable establecer una variable global mediante un modulo para poder crear una conexión general para todo el proyecto. DataAdapter: Representa un conjunto de comandos SQL y una conexión de base de datos que se utilizan para rellenar el objeto DataSet y actualizar el origen de datos. Actúa como puente entre DataSet y un origen de datos para la recuperación y el almacenamiento de datos. Para poder actuar como un puente, DataAdapter asigna el método Fill, que modifica los datos de DataSet de forma que coincidan con los del origen de datos, y asigna el método Update, que modifica los datos del origen de datos para hacerlos coincidir con los de DataSet. Dataset: DataSet, que es una caché de memoria interna de datos recuperados de un origen de datos, representa un componente fundamental de la arquitectura de ADO.NET. DataSet está compuesto por una colección de objetos DataTable que se pueden relacionar entre ellos mediante objetos DataRelation. Datagridview: El control DataGridView proporciona una tabla personalizable para mostrar datos. Puede utilizar un control DataGridView para mostrar datos con o sin un origen de datos subyacente. Sin especificar un origen de datos, puede crear las columnas y filas que contendrán los datos y agregarlas directamente a DataGridView. Como alternativa, puede establecer las propiedades DataSource y DataMember para enlazar el control DataGridView a un origen de datos y llenarlo de datos automáticamente. 1. VISION DE DATOS: Llenado automático del Datagridview: Llenado manual del Datagridview: Creamos un Procedimiento almacenado en SQL: Luego se coloca el código creando el dataset, dataadapter y el fill con su respectivo origen de datos. NOTA Siempre en todo formulario se deberá colocar la importación de datos. EJERCICIOS DE APLICACIÓN: 1. Ejercicio 1: 2. EJERCICIO 2: 3. Ejercicio 3: 4. Ejercicio 4: 5. Ejercicio 5: 6. Ejercicio 5: AHORA CON EL CODIGO DE BARRAS Para esto se tendría que dar enter cada vez que se teclee o de un valor ( se usa el keypress) EL TABINDEX nos indica donde parece primero el cursor 2. FORMULARIO HEREDADO: El hijo tiene el mismo diseño que el formulario padre 3. PERMISOS Y USUARIOS: Crear una tabla usuario en sql luego: Esa flecha desaparec la venana si es correcto el usuario Cambiar clave antigua: 4. INSERCION DE DATOS: ExecuteNonQuery: Se lo utiliza cuando el comando sql no es una consulta. ExecuteReader: Cuando se utiliza una consulta. Ejemplo: CON VALIDACION: Imports System.Data.SqlClient Public Class Form1 Sub limpiar_ingreso() TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox7.Text = "" End Sub Dim resp As Integer Dim cnt, cnt2 As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim insert_perso As New SqlCommand("insert_perso", conex) 'en el parentesis se puede colocar tambine el codigo de la consulta sin crear el procedimiento alamacenado insert_perso.CommandType = CommandType.StoredProcedure insert_perso.Parameters.Add("@id", SqlDbType.Char, 8).Value = TextBox1.Text insert_perso.Parameters.Add("@n", SqlDbType.VarChar, 30).Value = TextBox2.Text insert_perso.Parameters.Add("@a", SqlDbType.VarChar, 40).Value = TextBox3.Text insert_perso.Parameters.Add("@e", SqlDbType.VarChar, 50).Value = TextBox4.Text insert_perso.Parameters.Add("@g", SqlDbType.VarChar, 50).Value = cnt insert_perso.Parameters.Add("@ec", SqlDbType.Char, 1).Value = ListBox1.SelectedItem insert_perso.Parameters.Add("@fn", SqlDbType.DateTime).Value = MaskedTextBox1 conex.Open() resp = insert_perso.ExecuteNonQuery conex.Close() If resp = 1 Then MsgBox("SE GRAVO EL REGISTRO") limpiar_ingreso() End If End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged If RadioButton1.Checked Then cnt = "F" Else cnt = "M" End If End Sub End Class Hacienda que el id persona se genere sola 4.1. EJERCICIOS: Ejercicio1: Ejercicio2: En un ListBox o ComboBox, colocar el siguiente texto (Son los tipos de Busqueda): Comienza con Termina con Contiene a No contiene a Exactamente igual a El proceso es seleccionar un tipo de búsqueda en la Lista, luego escribir un texto en el TextBox y al darle <ENTER> al TextBox, se debe filtrar el DatagridView por el nombre del producto, respetando el tipo de búsqueda seleccionado. Los datos que deben salir en el DatagridView son: ProductId ProductName, UnitPrice, UnitsInStock, Categoryname, Companyname (Suppliers). Imports System.Data.SqlClient Public Class Form1 Dim a As String Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged If ListBox1.SelectedIndex = 0 a = 0 ElseIf ListBox1.SelectedIndex a = 1 ElseIf ListBox1.SelectedIndex a = 2 ElseIf ListBox1.SelectedIndex a = 3 ElseIf ListBox1.SelectedIndex a = 4 End If End Sub Then = 1 Then = 2 Then = 3 Then = 4 Then Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If Asc(e.KeyChar) = 13 Then If a = 0 Then Dim datos As New SqlDataAdapter("empcon", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@a", SqlDbType.VarChar, 20).Value = TextBox1.Text Dim ds As New Data.DataSet datos.Fill(ds, "empcon") DataGridView1.DataSource = ds.Tables("empcon") TextBox1.Text = "" ElseIf a = 1 Then Dim datos As New SqlDataAdapter("termcon", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@b", SqlDbType.VarChar, 20).Value = TextBox1.Text Dim ds As New Data.DataSet datos.Fill(ds, "termcon") DataGridView1.DataSource = ds.Tables("termcon") TextBox1.Text = "" ElseIf a = 2 Then Dim datos As New SqlDataAdapter("cont", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@b", SqlDbType.VarChar, 20).Value = TextBox1.Text Dim ds As New Data.DataSet datos.Fill(ds, "cont") DataGridView1.DataSource = ds.Tables("cont") TextBox1.Text = "" ElseIf a = 3 Then Dim datos As New SqlDataAdapter("nocont", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@b", SqlDbType.VarChar, 20).Value = TextBox1.Text Dim ds As New Data.DataSet datos.Fill(ds, "nocont") DataGridView1.DataSource = ds.Tables("nocont") TextBox1.Text = "" ElseIf a = 4 Then Dim datos As New SqlDataAdapter("igual", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@b", SqlDbType.VarChar, 20).Value = TextBox1.Text Dim ds As New Data.DataSet datos.Fill(ds, "igual") DataGridView1.DataSource = ds.Tables("igual") TextBox1.Text = "" End If End If End Sub End Class NOTA: EL EJRCICIO 1 SE PUEDE HACER UN YUN SOLO SOTRE PROCIDIUM : SE AGREGARIA 1 PARAMETRO MAS QUE NOS PERMITA GUARDAR 4 ENTEROS : Y LA CONSULTA SERIA: select .... FROM .... IF @T=0 WHERE PRODUCTNAME LIKE @NOM+'%' ELSE IF @T=1 WHERE PRODUCTNAME LIKE '%'+@NOM ...... Ejercicio 3: En un grupo de RadioButton, colocar los filtros como se muestra en la pantalla. El procedimiento es seleccionar un filtro, luego darle un click en el botón, para que aparezcan los datos de los Productos en el DataGridView. Los campos a mostrar en el DataGridView son: ProductName, UnitPrice, UnitsinStock, CategoryID, Discontinued. Nota: Optimizar el código escrito para no redundar. Ejericio4: Implementar la interface del ejercicio 2, esta vez sin el CommandButton, la búsqueda se hará al seleccionar el RadioButton (en el caso del filtro de categoría, se hará con el enter del TextBox). Nota: Optimizar el código escrito para no redundar. CODIGO Imports System.Data.SqlClient Public Class ejercicio2 Dim cnt As Integer Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged Dim datos As New SqlDataAdapter("stock", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure Dim ds As New Data.DataSet datos.Fill(ds, "stock") DataGridView1.DataSource = ds.Tables("stock") End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged Dim datos As New SqlDataAdapter("vigentes", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure Dim ds As New Data.DataSet datos.Fill(ds, "vigentes") DataGridView1.DataSource = ds.Tables("vigentes") End Sub Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged Dim datos As New SqlDataAdapter("sinfiltro", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure Dim ds As New Data.DataSet datos.Fill(ds, "sinfiltro") DataGridView1.DataSource = ds.Tables("sinfiltro") End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If Asc(e.KeyChar) = 13 Then Dim datos As New SqlDataAdapter("categoria", conex) datos.SelectCommand.CommandType = CommandType.StoredProcedure datos.SelectCommand.Parameters.Add("@cat", SqlDbType.Int).Value = CInt(TextBox1.Text) Dim ds As New Data.DataSet datos.Fill(ds, "categoria") DataGridView1.DataSource = ds.Tables("categoria") End If End Sub End Class Ejercicio 5: Colocar un Objeto MonthCalendar, un DatagridView y un TextBox (Sera Temporal, una vez se implemente el formulario, se eliminara) El GridView debe mostrar: OrderId, OrderDate, ProductName, UnitPrice, Quantity. Al seleccionar una fecha, automáticamente se debe filtrar el DatGridView por el campo OrderDate, se debe configurar el MonthCalendar, para que la fecha inicie el 01/01/1996 y finalice el 31/12/1997 (fechas del campo OrderDate de la Tabla Orders) TIPS para probar y analizar: Cuando o como se activa el evento DateChanged, del objeto MonthCalendar? Que se almacena en la propiedad SelectionStart, del objeto MonthCalendar? Que se almacena en la propiedad MinDate, del objeto MonthCalendar? Que se almacena en la propiedad MaxDate, del objeto MonthCalendar? 5. REPORTES: PARA FILTRAR DATOS TABCONTROL: Imágenes en cada pagina: