A continuación la solución del Examen de Programación II (Segundo Parcial). Básicamente la idea era desarrollar un formulario con un ComboBox, un ListBox, un TextBox y dos Buttons, uno para mostrar la información y otro para salir del programa.
El formulario podría haber lucido de esta forma
El código se muestra a continuación y el proyecto completo se puede bajar haciendo click
aqui. Recuerden cambiar el nombre del servidor en la cadena de conexión.-
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
'Declarar el objeto conexión a este nivel permite que funcione en cualquier procedimiento
'del formulario
Dim cn As SqlConnection
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Inicializar el objeto conexión
cn = New SqlConnection()
'Crear la cadena de conexión asignarla al objeto conexión y abrir la conexión
Dim sConexion As String
sConexion = "Data Source=D7PPS31\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=true"
cn.ConnectionString = sConexion
cn.Open()
'Cargar el combo con los Id de los Empleados
Dim cmd As SqlCommand = New SqlCommand("SELECT EmployeeID FROM Employees ORDER BY EmployeeID", cn)
'Crear un datareader y llenarlo con el método executereader del objeto command
Dim drd As SqlDataReader = cmd.ExecuteReader()
'Con un ciclo cargar los datos en el combo
While drd.Read()
ComboBox1.Items.Add(drd("EmployeeID"))
End While
'Cerrar el datareader
drd.Close()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Mostrar los datos
'Una vez seleccionado un dato del ComboBox, se muestran los datos
'Se puede validar que se haya seleccionado algo en el ComboBox
If ComboBox1.Text = "" Then
MessageBox.Show("Debe seleccionar un ID de Empleado del Combo...")
Exit Sub
End If
Dim cmd As SqlCommand = New SqlCommand("SELECT FirstName + ' ' + LastName as Nombre FROM Employees WHERE EmployeeID='" & ComboBox1.Text & "'", cn)
'Se puede asignar directamente el valor al cuadro de texto destinado para el nombre
'del empleado usando el método ExecuteScalar, ya que solo se espera un valor
TextBox1.Text = cmd.ExecuteScalar()
'Ahora buscar todas las ordenes de pedido en la tabla ORDERS y mostrarlas en el ListBox
cmd = New SqlCommand("SELECT * FROM Orders WHERE EmployeeID ='" & ComboBox1.Text & "'", cn)
Dim drd As SqlDataReader = cmd.ExecuteReader()
ListBox1.Items.Clear()
While drd.Read
ListBox1.Items.Add(drd("EmployeeID").ToString + vbTab + drd("OrderID").ToString + vbTab + drd("OrderDate").ToString + vbTab + drd("ShipAddress"))
End While
'Cerrar el DataReader
drd.Close()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'Salir del programa, se cierra el formulario actual y se finaliza
Me.Close()
End
End Sub
End Class