Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Empresariales
INTRODUCCION
Este material ha sido elaborada para el desarrollo de las
sesiones de Laboratorio correspondiente al Curso de Actualizacion en la
especialidad de Computacin e Informtica Del ISTPArgentina.
Contenido
Captulo I Entorno de Programacin Visual Basic .NET
CAPITULO I
EL ENTORNO DE PROGRAMACION
propio perfil y establecer nuestras preferencias. Tambin podemos leer las ltimas noticias de los
desarrolladores de Microsoft, participar en las comunidades online de .NET, realizar bsquedas en
Microsoft MSDN Library y descargar actualizaciones de software.
Podemos iniciar un nuevo proyecto o abrir un proyecto existente desde la Pgina de inicio.
Abrir un nuevo proyecto
Haga clic en Inicio en la lista del lado izquierdo de la pgina (si no est ya seleccionado) y, a
continuacin, haga clic en Nuevo Proyecto.
Abrir un proyecto existente
Haga clic en Inicio en la lista del lado izquierdo de la pgina y, a continuacin, haga clic en Abrir
Proyecto.
La parte superior contiene un combo box que muestra el nombre y la clase del objeto
seleccionado.
La parte media contiene la lista de propiedades del objeto seleccionado, de lado derecho
contiene un conjunto de cajas para ver y editar el valor de la propiedad seleccionada.
Iniciar un Proyecto
Para iniciar un nuevo proyecto, de clic en la opcin Projects y clic en el botn [New Project], esta
accin abre una ventana donde se indicar el archivo a abrir, los proyectos Visual Basic .NET tiene la
extensin .vbproj. Una vez que abre el projecto si la pgina de inicio estaba visible continuar as y
en el Explorador de Soluciones (Solution Explorer) se cargan los archivos correspondientes al
proyecto.
En Visual Basic .NET existen dos archivos:
Un archivo de projecto .vbproj, el cual contiene informacin especfica para una determinada
tarea de programacin.
Si la solucin tiene un nico proyecto, abrir el archivo de proyecto .vbproj o el archivo de solucin
.sln tiene el mismo resultado, pero si la solucin es multiproyecto entonces deber abrir el archivo de
solucin.
Los formularios en Visual Basic .NET tienen la extensin .vb. Se mostraran a manera de
pestaas la pgina de inicio, la vista de diseo y el cdigo del formulario.
.NET Framework
Visual Studio .NET tiene una nueva herramienta que comparte con Visual Basic, Visual C++, Visual
C#, etc. llamada .NET Framework que adems es una interfaz subyacente que forma parte del propio
sistema operativo Windows.
La estructura de .NET Framework es por Clases mismas que puede incorporar a sus proyectos a
travs de la instruccin Imports, por ejemplo una de sus Clases es System.Math la cual soporta los
siguientes mtodos
Mtodo Descripcin
Imports System.Math
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs)-
Handles MyBase.Load
txtOutput.Text += Sqrt(9) & vbNewLine
.NET
La biblioteca de clases .NET es una biblioteca de clases incluida en el Microsoft .NET Framework y
est diseada para ser la base sobre las cuales las aplicaciones .NET son construidas.
Namespaces
La biblioteca .NET contiene un nmero considerable de clases con cdigo reutilizable, para ayudar a
controlar esta complejidad .NET utiliza namespaces, colecciones de clases relacionadas.
Nuevo Proyecto
De clic en el botn [New Project] o File/New/Project, como tipo de proyecto seleccione Visual Basic
Project, como plantilla seleccione Windows Application, por ltimo indique la ubicacin donde
desea almacenar su proyecto. Al dar clic Visual Studio configura el entorno de desarrollo y crea un
directorio con el mismo nombre que especifico para la aplicacin.
Release - Versin de edicin, se utiliza cuando se termina el programa siendo esta una
versin optimizada de menor tamao
Evento
Un Evento es una accin o acontecimiento reconocido por algunos objetos para los cuales es
necesario escribir el cdigo para responder a dicho evento. Los eventos pueden ocurrir como
resultado de una accin del usuario (onClick), por invocacin a travs de cdigo o disparados por el
sistema (Timer Tick Event).
Manejador de Eventos
Un Manejador de Eventos contiene cdigo que responde a eventos particulares. Un desarrollador
disea cuidadosamente sus aplicaciones determinando los controles disponibles para el usuario y los
eventos apropiados asociados a estos controles, entonces, el desarrollador escribe el cdigo para
integrar los eventos consistentes con el diseo de la aplicacin.
1.3 Procedimientos
Un procedimiento es un conjunto de sentencias que realizan una accin lgica. Existen tres tipos de
procedimientos en Visual Basic .NET:
Visual Basic .NET para los manejadores de eventos utiliza una convencin estndar la cual
combina el nombre del objeto seguido de un guin bajo y el nombre del evento.
Private|Public Sub objeto_Evento(parmetros) handles Objeto.Evento
sentencias
End Sub
Cada manejador de eventos provee dos parmetros, el primer parmetro llamado sender
provee una referencia al objeto que dispara el evento, el segundo parmetro es un objeto cuyo tipo de
dato depende del evento que es manejado. Ambos parmetros son pasados por valor.
Si un parmetro es declarado por referencia ByRef el parmetro apunta al argumento actual. Por
default los argumentos se pasan por valor ByVal el parmetro es una copia local del argumento.
Sub procedures, contiene cdigo que el desarrollador crea para realizar una accin lgica.
Function procedures, contiene cdigo que el desarrollador crea para realizar una accin
lgica y regresa un valor, el valor que una funcin envia de regreso al programa que lo invoco
es llamado valor de regreso. Para regresar un valor se utiliza la sentencia Return.
Mdular, es una variable declarada a nivel mdulo fuera de cualquier procedimiento y son
declaradas en la parte superior del Editor de Cdigo arriba del primer procedimiento, este
espacio es llamado Seccin de Declaraciones Generales (General Declaration Section).
Control Prefijo
Button Btn
Label Lbl
PictureBox Pic
Timer Tmr
Mi_Primera_Aplicacion
Agregar un mdulo que contenga un saludo en el procedimiento main
Module Module1
Sub Main()
Console.WriteLine("Hola Mundo")
Console.ReadLine()
End Sub
End Module
Ahora agregar un modulo que calcule el promedio de notas
Module Module2
Sub main()
Dim nota1, nota2, nota3, susti, promedio As Single
Console.WriteLine("Ingrese Notas")
Console.WriteLine("Ingrese 1 nota")
nota1 = Console.ReadLine()
Console.WriteLine("Ingrese 2 nota")
nota2 = Console.ReadLine()
Console.WriteLine("Ingrese 3 nota")
nota3 = Console.ReadLine()
promedio = (nota1 + nota2 + (nota3 * 2)) / 4
Console.WriteLine(promedio)
FrmBoleta
Disear un formulario que permita calcular el promedio de notas y si aprob o no el alumno, solo indica que
aprueba si el promedio es mayor o igual a 14.
Adems debe considerar:
1. Validaciones: solo ingresar textos o nmeros segn sea el caso
2. Pasar de una casilla a otra al presionar Enter
3. Mostrar el promedio redondeado
Propiedad
Readonly =true
Mensaje label
1.4 CONTROLES
Control MainMenu
El Control MainMenu agrega mens a un programa, el man se configura mediante sus propiedades.
Para agregar un men simplemente seleccione el control MainMenu el cual de manera automtica se
ajusta al tamao del formulario, este men es de fcil manipulacin pues basta con escribir el nombre
para las opciones y a travs del men popup es posible modificarlo.
Para agregar cdigo a cada opcin del men basta con dar doble clic sobre la opcin deseada:
65535. Los primeros 128 (0-127) caracteres Unicode corresponden al conjunto de caracteres ASCII.
Del 32 al 127 corresponden a caracteres alfanumericos y simbolos para un teclado US. Del 128 al
255 representan caracteres especiales.
El tipo de dato Boolean es un valor sin signo el cual es interpretado como falso o verdadero.
El tipo de dato Date almacena fechas y tiempo, el rango de valores posible es del 12:00:00 AM Enero
1 al 31 de Diciembre del 9999 11:59:59 PM. Los valores para las fechas deben ser encerrados entre
el signo # y con el formato m/d/aaaa, por ejemplo #12/7/1971#.
El tipo de dato Object es el tipo de dato universal en Visual Basic .NET y es tambin el tipo de dato
por default para las variables que son declaradas sin especificar su tipo de dato.
Tipos de Datos Definidos por el Usuario : Structure
Visual Basic permite al desarrollador crear sus propios tipos de datos, esto es posible.NET a travs
del empleo de la instruccin Structure, ejemplo:
Constantes
Una constante es aquella que almacena un valor que no es posible cambiar durante la ejecucin del
programa.
Se recomienda que el nombre de una constante sea escrito en su totalidad en maysculas.
Const PI As Double = 3.14159265
Operadores
Visual Basic .NET dispone de los siguientes operadores matemticos:
Operador Descripcin
+ Suma
- Resta
* Multiplicacin
/ Divisin
Dim as
Visual Basic .NET no permite el uso del tipo de dato Variant y todas las variables debern ser
declaradas por las instrucciones Dim nombreVarible as tipoDato.
Dim es la abreviatura de Dimensin, que sirve para reservar espacio para la variable. La sentencia
Dim especifica el nombre de la variable y su tipo de dato asociado.
Una novedad en Visual Basic .NET es la declaracin e inicializacin de variables, ya que es posible
hacer esto al mismo tiempo:
Dim nombreVariable as tipoDato = valorInicial
Si no se define un tipo de dato para la variable, entonces asume el tipo de dato por default
que es Object. Es posible declarar variables como se hacia en Visual Basic 6, si emplea la instruccin
Option Explicit Off.
Visual Basic .NET incorpora la instruccin Option Strict si desea que los tipos de datos en las
operaciones sean del mismo tipo y evitar la conversin y perdida de datos.
Nota
A travs de la funcin InputBox es posible manipular la entrada de datos por parte del usuario,
pudiendo almacenar en una variable los datos ingresados por este.
Visual Basic .NET incorpora 2 nuevos operadores lgicos para utilizarlos en las sentencias de
control, a continuacin se mostrar la tabla de operadores lgicos anteriores y nuevos:
Operadores Lgicos Descripcin
Do While condicin
sentencias
Loop
Do Until condicin
sentencias
Loop
Do
sentencias
Loop While condicin
Do
sentencias
Funcin IsNumeric
La funcin IsNumeric() regresa un valor booleano el cual indica cuando una expresin puede ser
evaluada como un nmero. Esta funcin es bsica de una aplicacin para validar la entrada correcta
de datos de tipo numrico.
Trim, LTrim, RTrim
Visual Basic .NET provee mecanismos para la eliminacin de espacios en blanco contenidos en un
string a travs de las siguientes funciones:
LTrim, regresa un string que contiene una copia de un string especifico al cual se eliminaron
los espacios en blanco contenidos al inicio del string.
RTrim, regresa un string que contiene una copia de un string especifico al cual se eliminaron
los espacios en blanco contenidos al final del string.
Trim, regresa un string que contiene una copia de un string especifico al cual se eliminaron los
espacios en blanco contenidos al inicio y al final del string.
Evento KeyPress
El evento KeyPress es utilizado para capturar la tecla digitada por el usuario. Este evento distingue
entre letras maysculas y minsculas. El segundo argumento del este evento expone dos
propiedades: Handled y KeyChar, la propiedad KeyChar es el caracter correspondiente a la tecla
digitada. La propiedad Handled es un valor booleano, si se establece este valor como True entonces
indicamos al formulario que no procese el evento.
El siguiente ejemplo evita que se digite un nmero:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal _
If IsNumeric(e.KeyChar) Then e.Handled = True
End Sub
El siguiente ejemplo vlida que la entrada unicamente acepte letras (permite borrar la entrada):
Private Sub txtLetras_KeyPress(ByVal sender As Object, ByVal _
If (Asc(e.KeyChar)) >= 65 And (Asc(e.KeyChar)) <= 90 Or _
(Asc(e.KeyChar)) >= 97 And (Asc(e.KeyChar)) <= 122 Or _
(Asc(e.KeyChar)) = System.Windows.Forms.Keys.Back Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
Frm_Metodos
Frm_Estructura
FrmBoleta
CAPITULO II
2.1 ADO.NET
ADO .NET es la nueva versin del modelo de objetos ADO (ActiveX Data Objects), es decir, la
estrategia que ofrece Microsoft para el acceso a datos. ADO .NET ha sido ampliado para cubrir todas
las necesidades que ADO no ofreca, y est diseado para trabajar con conjuntos de datos
desconectados, lo que permite reducir el trfico de red. ADO .NET utiliza XML como formato universal
de transmisin de los datos.
ADO.NET forma parte del tercer nivel del conjunto de objetos Del .NET Framework ADO.NET
consiste en un conjunto de clases que permiten a las aplicaciones .NET conectar con fuentes de
datos (normalmente bases de datos relacionales), ejecutar comandos y manipular los datos.
- Connection
Este objeto se utiliza para establecer la conexin a un origen de datos.
- Command
Este objeto se utiliza para ejecutar sentencias SQL o procedimientos almacenados.
- DataReader
Este objeto proporciona un acceso rpido, de slo lectura, y slo hacia delante, de los datos
obtenidos de una consulta.
- DataAdapter
Este objeto realiza dos tareas. En primer lugar se puede utilizar para rellenar un DataSet (una
coleccin sin conexin, de tablas y relaciones), con informacin obtenida de un origen de datos. Y en
segundo lugar se puede utilizar para aplicar cambios a un origen de datos, de acuerdo a las
modificaciones hechas en el DataSet.
DATA SET
El DataSet ADO.NET es una representacin
de datos que reside en la memoria y que
proporciona un modelo de programacin
relacional consistente independiente de la
fuente de datos. El DataSet representa un
conjunto completo de datos que incluye
tablas, restricciones y relaciones entre las
tablas. Debido a que el DataSet es
independiente de la fuente de datos, un
DataSet puede incluir datos locales para
las aplicaciones, as como datos desde
varias fuentes.
El objeto DataSet es esencial para admitir
escenarios de datos distribuidos de
ADO.NET sin mantener una conexin. Se
puede utilizar con mltiples y distintos
orgenes de datos, con datos XML o para
administrar datos locales de la aplicacin.
2. LLENAR GRILLA
Sub MOSTRAR()
Dim DA As New SqlDataAdapter("select * from region ", cn)
ds.Clear()
DA.Fill(ds, "reg")
DgvRegion.DataSource = ds.Tables("reg")
End Sub
1.insertar
Private Sub Btninserta_Click(ByVal sender As System.Object,
sql= "insert into region (RegionId,RegionDescription) values ( '" & TxtCodigo.Text & "','" &
TxtRegion.Text & "')"
Dim cmd As New SqlCommand(sql, cn)
cn.Open()
Dim I As Integer
I = cmd.ExecuteNonQuery
If I > 0 Then
MsgBox("Registro Guardado con exito")
cn.Close()
End If
MOSTRAR()
End Sub
2. Actualizar
Private Sub BtnModifcar_Click(ByVal sender As System.Object, sql ="update region set
RegionDescription='" & TxtRegion.Text & "' where RegionId='" & TxtCodigo.Text & "'"
Dim cmd As New SqlCommand(sql, cn)
cn.Open()
Dim I As Integer
I = cmd.ExecuteNonQuery
If I > 0 Then
MsgBox("Registro Guardado con exito")
cn.Close()
End If
MOSTRAR()
End Sub
3. Eliminar
Private Sub BtnEliminar_Click(ByVal sender As Object, ByVal e
sql = "delete from region where regionid='" & TxtCodigo.Text & "'"
Dim cmd As New SqlCommand(sql, cn)
cn.Open()
Dim I As Integer
I = cmd.ExecuteNonQuery
If I > 0 Then
MsgBox("Registro eliminado con exito")
cn.Close()
End If
MOSTRAR()
End Sub
End Class
5. Llenar el COMBOBOX y realizar bsquedas(consulta dinamica)
Gua de Laboratorio # 04
INTRODUCCION ADO.NET
OBJETIVOS :
Despus de completar este captulo ud. Estar en condicin de:
? Disear aplicaciones con controles enlazados simples
? Crear controles enlazados compuestos con dataset tipado
? Realizar mantenimiento a una tabla
Aplicacin 1
imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
Dim cn As New SqlConnection("server=.;database=northwind;integrated security=true")
Dim da As New SqlDataAdapter("select * from orders", cn)
Dim ds As New DataSet
ds.Clear()
da.Fill(ds, "pedidos")
DgvPedidos.DataSource = ds.Tables("pedidos")
End Sub
Aplicacin 2
Disear un formulario
que muestre en un
gridview la tabla
Employees y segn
la fila que seleccione
desde este control
mostrar en textbox
estos campos
imports System.Data
Imports System.Data.SqlClient
Public Class Form2
Dim cn As New SqlConnection("server=.;database=northwind;integrated security=true")
Dim ds As New DataSet
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As
Dim da As New SqlDataAdapter("select * from employees", cn)
ds.Clear()
da.Fill(ds, "empleado")
dgvempleado.DataSource = ds.Tables("empleado")
End Sub
Private Sub dgvempleado_SelectionChanged(ByVal sender As Object, ByVal e As
TextBox1.Text = ds.Tables("empleado").Rows(dgvempleado.CurrentRow.Index).Item(0)
TextBox2.Text = ds.Tables("empleado").Rows(dgvempleado.CurrentRow.Index).Item(1)
End Sub
APLICACIN LIBRE
Imports System.Data
Imports System.Data.SqlClient
Public Class Ejercicio1
Dim cn As New SqlConnection("server=.;database=northwind;integrated security=true")
Dim ds As New DataSet
Private Sub Ejercicio1_Load(ByVal sender As System.Object, ByVal e As
Dim da As New SqlDataAdapter("select * from customers", cn)
da.Fill(ds, "clientes")
Dim da1 As New SqlDataAdapter("select * from [Order Details]", cn)
da1.Fill(ds, "detalles")
Dim da2 As New SqlDataAdapter("select * from categories", cn)
da2.Fill(ds, "categorias")
2. Seleccione la cadena de
conexin
3. Seleccione la tabla
4.
Class1.MOSTRAR(DataGridView1)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
sql = "update region set RegionDescription='" & txtRegion.Text & "' where RegionId='" & txtcodigo.Text & "'"
Dim cmd As New SqlCommand(sql, CN)
CN.Open()
Dim I As Integer
I = cmd.ExecuteNonQuery
If I > 0 Then
MsgBox("Registro Guardado con exito"): CN.Close()
End If
Class1.MOSTRAR(DataGridView1)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
sql = "delete from region where regionid='" & txtcodigo.Text & "'"
Dim cmd As New SqlCommand(sql, CN)
CN.Open()
Dim I As Integer
I = cmd.ExecuteNonQuery
If I > 0 Then
MsgBox("Registro eliminado con exito") : CN.Close()
End If
Class1.MOSTRAR(DataGridView1)
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As
Me.BindingContext(ds, "reg").Position = 0
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As
Me.BindingContext(ds, "reg").Position -= 1
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As
Me.BindingContext(ds, "reg").Position += 1
End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As
Me.BindingContext(ds, "reg").Position = ds.Tables(0).Rows.Count - 1
End Sub
Gua de Laboratorio 05
CONSULTAS
OBJETIVOS : DESPUS DE COMPLETAR ESTE CAPTULO UD. ESTAR EN CONDICIN DE:
Crear controles enlazados simples, compuestos
Crear diversos tipos de consultas generales, dinmicas
'ENLAZANDO COMBOBOX
ComboBox1.DataSource = ds.Tables("empleados")
ComboBox1.ValueMember = "EmployeeID"
ComboBox1.DisplayMember = "EmployeeID"
End Sub
End Class
Practica 02(BUSQUEDA O CONSULTA DINAMICA)
Imports System.Data
Imports System.Data.SqlClient
Public Class Consulta_combo
Private Sub Consulta_combo_Load(ByVal sender As System.Object, ByVal e As
Dim daempleados As New SqlDataAdapter("select * from employees", cn)
Dim ds As New DataSet
ds.Clear()
daempleados.Fill(ds, "empleados")
ComboBox1.DataSource = ds.Tables("empleados")
ComboBox1.DisplayMember = "EmployeeID"
ComboBox1.ValueMember = "EMPLOYEEID"
End Sub
Private Sub ComboBox1_SelectionChangeCommitted(ByVal sender As Object, ByVal e As Dim
da As New SqlDataAdapter("select * from employees where employeeid='" &
ComboBox1.SelectedValue & "'", cn)
Dim ds1 As New DataSet
ds1.Clear()
da.Fill(ds1, "busqueda")
DataGridView1.DataSource = ds1.Tables("busqueda")
TextBox1.Text = ds1.Tables(0).Rows(0).Item(0)
TextBox2.Text = ds1.Tables(0).Rows(0).Item(1)
End Sub
End Class
Captulo III
PROCEDIMIENTOS ALMACENADOS (SP)
3.1 CONCEPTO
Un Procedimiento Almacenado es un programa auto controlado escrito en lenguaje del
DBMS, son almacenados como parte de la Base de Datos y sus metadatos.
Tambin podemos definirlo Un Stored Procedure o Procedimiento almacenado al conjunto de
instrucciones Transact-SQL predefinidas, usadas para realizar una tarea especfica. Puede haber
mltiples instrucciones en un solo procedimiento almacenado, y estas son encapsuladas en un objeto
de la base de datos.
3.2 VENTAJAS
Existen varios motivos por los cuales un desarrollador puede decidir usar Stored Procedures, una
de las mas resaltantes es que resulta ms eficiente, ms seguro y no requiere de conocimiento de
como est diseada la base de datos, los procedimientos almacenados ofrecen varias ventajas.
Pueden:
Compartir la lgica de la aplicacin con las restantes aplicaciones, lo que asegura que el
acceso y la modificacin de los datos se hace de una forma coherente.
Todos los clientes pueden usar los mismos procedimientos almacenados para asegurar que el
acceso y modificacin de los datos es coherente.
Apartar a los usuarios de la exposicin de los detalles de las tablas de la base de datos. Si un
conjunto de procedimientos almacenados permite llevar a cabo todas las funciones de negocio
que los usuarios necesitan, los usuarios no tienen que tener acceso a las tablas directamente.
Proporcionar mecanismos de seguridad. Los usuarios pueden obtener permiso para ejecutar un
procedimiento almacenado incluso si no tienen permiso de acceso a las tablas o vistas a las que
hace referencia.
3.3 TIPOS DE SP
Existen tres tipos de procedimientos almacenados son:
Ejemplo: Un Store Procedure que presente los clientes o pasajeros que viajaron en el ltimo
mes que paso
3.4 Creacin de SP
Los procedimientos almacenados se crean con la instruccin CREATE PROCEDURE.
Considere los hechos siguientes cuando cree procedimientos almacenados:
Los procedimientos almacenados pueden hacer referencia a tablas, vistas, funciones
definidas por el usuario y otros procedimientos almacenados, as como a tablas temporales.
Si un procedimiento almacenado crea una tabla local temporal, la tabla temporal slo existe
para atender al procedimiento almacenado y desaparece cuando finaliza la ejecucin del
mismo.
4. Se mostrara una ventana de edicin para crear los sp utilizara la instruccin create procedure
CREATE PROCEDURE nombre sp
AS
Begin
INSTRUCCIONES DE SQLSERVER
END
Ejemplo un sp
CREATE PROCEDURE traer_regiones
AS
Begin
Select * from regiones
END
5. Luego que termina el cdigo , seleccione de create procedure hasta end y del menu conxtextual seleccione
ejecutar seleccin o presione F5
1. Sp que devuelve todos los registros de la tabla empleado (para una consulta general)
Sesin de Laboratorio 06
2. Pgina Actualizar
3 Pagina Eliminar
4. Pagina Mostrar
Imports System.Data.SqlClient
Public Class Frm_clientes
Private Sub btngrabar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
btngrabar.Click
Dim CMD As New SqlCommand("CLIENTE_INSERTA", cn)
With CMD
.CommandType = CommandType.StoredProcedure
.Parameters.AddWithValue("@NOM", TxtNombr.Text)
.Parameters.AddWithValue("@DIR", TxtDireccion.Text)
.Parameters.AddWithValue("@TEL", TxtTelefono.Text)
.Parameters.AddWithValue("@RUC", TxtRuc.Text)
End With
cn.Open()
Dim I As Integer
I = CMD.ExecuteNonQuery()
cn.Close()
If I = 1 Then MsgBox("Inserto con exito") Else MsgBox("ERROR AL INSERTAR")
End Sub
Private Sub BtnMostrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim DA As New SqlDataAdapter("SELECT * FROM CLIENTES", cn)
Dim DS As New DataSet
DS.Clear()
DA.Fill(DS, "C")
DataGridView1.DataSource = DS.Tables(0)
End Sub
Private Sub BtnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim CMD1 As New SqlCommand("CLIENTE_ACTUALIZA", cn)
With CMD1
.CommandType = CommandType.StoredProcedure
.Parameters.AddWithValue("@ID", TXTCOD.Text)
.Parameters.AddWithValue("@NOMBRE", TXTNAME.Text)
.Parameters.AddWithValue("@DIREC", TXTDIR.Text)
.Parameters.AddWithValue("@TELEF", TXTTEL.Text)
.Parameters.AddWithValue("@NRUC", TXTRU.Text)
End With
Try
cn.Open()
Dim I As Integer
I = CMD1.ExecuteNonQuery()
cn.Close()
If I = 1 Then MsgBox("Actualizo con exito") Else MsgBox("ERROR AL MODIFICAR")
Catch EX As Exception
MsgBox("ERROR" + EX.Message)
End Try
End Sub
Private Sub TXTCOD_TextChanged1(ByVal sender As Object, ByVal e As System.EventArgs)
Dim SQL As String
SQL = "SELECT * FROM CLIENTES WHERE IDCLIE='" & TXTCOD.Text & "'"
Dim DA1 As New SqlDataAdapter(SQL, cn)
Dim DS1 As New DataSet
DS1.Clear()
DA1.Fill(DS1)
TXTNAME.Text = DS1.Tables(0).Rows(0).Item(1)
TXTDIR.Text = DS1.Tables(0).Rows(0).Item(2)
TXTTEL.Text = DS1.Tables(0).Rows(0).Item(3)
TXTRU.Text = DS1.Tables(0).Rows(0).Item(4)
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim CMD1 As New SqlCommand("CLIENTE_elimina", cn)
With CMD1
.CommandType = CommandType.StoredProcedure
.Parameters.AddWithValue("@cod", txtcodig.Text)
End With
Try
cn.Open()
Dim I As Integer
I = CMD1.ExecuteNonQuery()
cn.Close()
If I = 1 Then MsgBox("Eliminado con exito") Else MsgBox("ERROR AL MODIFICAR")
Catch EX As Exception
MsgBox("ERROR" + EX.Message)
End Try
End Sub
End Class
CAPITULO IV
Tablas Relacionadas
Es posible hacer consultas usando varias tablas en la misma sentencia SELECT.Esto nos
permite realizar otras dos operaciones de lgebra relacional que an no hemos visto: el
producto cartesiano y la composicin
El producto cartesiano de dos tablas son todas las combinaciones de todas las filas de las
dos tablas. Usando una sentencia SELECT se hace proyectando todos los atributos de
ambas tablas. Los nombres de las tablas se indican en la clusula FROM separados con
comas:
El resultado es una relacin que contendr todas las combinaciones de las tuplas de los dos
operandos.
Esto es: si partimos de dos relaciones, R y S, cuyos grados son n y m, y cuyas cardinalidades
a y b, la relacin producto tendr todos los atributos presentes en ambas relaciones, por lo
tanto, el grado ser n+m. Adems la cardinalidad ser el producto de a y b.
tabla2(id, nmero)
tabla1
id nombre apellido
15 Fulginio Liepez
26 Cascanio Suanchiez
tabla2
id nmero
15 12345678
26 21222112
15 66525425
El resultado del producto cartesiano de tabla1 y tabla2: tabla1 x tabla2 es:
tabla1 x tabla2
id nombre apellido id nmero
15 Fulginio Liepez 15 12345678
26 Cascanio Suanchiez 15 12345678
15 Fulginio Liepez 26 21222112
26 Cascanio Suanchiez 26 21222112
15 Fulginio Liepez 15 66525425
26 Cascanio Suanchiez 15 66525425
Podemos ver que el grado resultante es 3+2=5, y la cardinalidad 2*3 = 6.
Composicin (Join)
Una composicin (Join en ingls) es una restriccin del producto cartesiano, en la relacin de salida
slo se incluyen las tuplas que cumplan una determinada condicin.La condicin que se usa ms
frecuentemente es la igualdad entre dos atributos, uno de cada tabla.
<relacin1>[<condicin>]<relacin2>
tabla2(id, nmero)
tabla1
id nombre apellido
15 Fulginio Liepez
26 Cascanio Suanchiez
tabla2
id nmero
15 12345678
26 21222112
15 66525425
La composicin de estas dos tablas, para una condicin en que 'id' sea igual en ambas
sera:
tabla1[tabla1.id = tabla2.id]tabla2
id nombre apellido t2.id nmero
15 Fulginio Liepez 15 12345678
26 Cascanio Suanchiez 26 21222112
15 Fulginio Liepez 15 66525425
EJEMPLOS
Data Relation
OBJETIVOS : DESPUS DE COMPLETAR ESTE CAPTULO UD. ESTAR EN CONDICIN DE:
? MOSTRAR EN UN DATAGRID TABLAS RELACIONADAS
? NAVEGAR POR CAMPOS DE TABLAS RELACIONADAS
Aplicacin 01
Disea un formulario que nos permita mostrar las tablas relacionadas Order y Orders Details
Aplicacin 02
Disear una aplicacin que muestre en 2 datagrid la relacin maestro detalle de las tabla Orders y
OrdersDetaills
Private Sub Frm2dg_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Dim col1, col2 As DataColumn
Dim da1 As New SqlDataAdapter("select * from orders ", cn1)
da1.Fill(ds, "pedidos")
Dim da2 As New SqlDataAdapter("select * from [order details] ", cn1)
da2.Fill(ds, "detalles")
col1 = ds.Tables("pedidos").Columns("orderid")
col2 = ds.Tables("detalles").Columns("orderid")
ds.Relations.Add("pedidosdetalles", col1, col2)
ds.Tables("detalles").Columns("orderid"))
DataGrid1.DataSource = ds
DataGrid1.DataMember = "pedidos"
DataGrid2.DataSource = ds
DataGrid2.DataMember = "pedidos.pedidosdetalles"
End Sub
Consulta innerjoin
Procedimientos Almacenados
create PROC CLIENTE_INSERTA
@NOM VARCHAR(50),
@DIR VARCHAR(50),
@TEL VARCHAR(9),
@RUC NUMERIC
AS
BEGIN
INSERT INTO clientes
(nomcli, dircli, telfcli, ruccli)
VALUES (@nom,@dir,@tel,@ruc)
END
go
create proc CLIENTE_ACTUALIZA
@ID INT,
@NOMBRE VARCHAR(50),
@DIREC VARCHAR(50),
@TELEF VARCHAR(9),
@NRUC NUMERIC
AS
BEGIN
UPDATE clientes
SET nomcli = @NOMBRE, dircli = @DIREC, telfcli = @TELEF, ruccli = @NRUC
WHERE (idclie = @ID)
END
go
create PROC CLIENTE_ELIMINA
@COD INTEGER
AS
BEGIN
DELETE FROM clientes WHERE (idclie = @COD)
END
go