Professional Documents
Culture Documents
Si por ejemplo, deseamos obtener todos los valores de los atributos title y
price de la tabla titles, deberíamos escribir el siguiente Código fuente.
De esta manera, obtenemos todas las filas, ya que no hemos dado ninguna
condición, de la tabla titles (especificada en la cláusula FROM), de las cuales
sólo visualizaremos los valores de los atributos title y price (especificados
en la cláusula SELECT). Si por el contrario, deseamos obtener todos los
atributos de dicha tabla, deberíamos escribir el siguiente Código fuente.
La cláusula Where
IN: compara todas las cadenas que están contenidas en una lista Por
ejemplo, si queremos obtener los títulos cuyos derechos de autor sean
mayores del 10 %, digitaremos el siguiente Código.
SELECT city FROM authors WHERE city in ('San Francisco','Salt Lake City')
Si se desea conocer todos los títulos cuyo precio oscila entre 1 y 2 dólares,
ejecutaremos el Código siguiente.
La cláusula Having
La cláusula Order By
SUM: Realiza una suma acumulativa de un atributo para todas las filas
accedidas mediante una consulta SQL.
Por ejemplo, supongamos que tenemos una tabla de pedidos, con los
atributos cod_cliente, cod_material y precio. Si queremos obtener la suma
del precio de todos los pedidos almacenados, bastará con realizar una
función de tipo SUM, como la que vemos en el Código siguiente.
La anterior consulta obtiene la suma del precio para todas las filas de la
tabla pedido, ya que no hemos especificado ninguna condición en la
cláusula WHERE.
Si ahora queremos obtener la suma total de todos los pedidos realizados por
el cliente cuyo código es "R12CE", debemos realizar la misma consulta, pero
especificando una condición para obtener únicamente las filas cuyo
cod_cliente es "R12CE":
COUNT: Cuenta todas las filas de las tablas accedidas mediante una
consulta SQL.
Por ejemplo, si tenemos una tabla cliente, con todos los clientes de una
empresa de servicios, con los atributos DNI, nombre, apellidos, dirección y
población, y queremos saber todos los clientes que tenemos, deberemos
realizar un count, para obtener todas el número de filas de la tabla
ejecutamos el Código siguiente.
AVG: Realiza una media aritmética de los atributos para todas las filas
accedidas mediante la consulta SQL.
Si por ejemplo tenemos una tabla de materiales, con los atributos
cod_material, descripción, precio y cantidad_pedida, y queremos saber la
cantidad media pedida de todos los materiales, deberemos realizar una
media aritmética, teniendo en cuenta todas las filas de la tabla:
La sentencia Insert
INSERT INTO authors (au_id, au_fname, au_lname, contract) VALUES ('409-99-9876', 'Pepe',
'Perez', 1)
(1 row(s) affected)
La sentencia Update
Donde tabla especifica la tabla donde se encuentran las filas que queremos
actualizar, condición especifica la condición que se debe cumplir para
actualizar las filas, y lo que viene a continuación de SET especifica la
asignación de los nuevos valores a los atributos. Por lo tanto se actualizarán
todas las filas que cumplan la condición especificada. Si queremos cambiar
el nombre al autor que hemos insertado en el anterior apartado, deberemos
escribir el Código siguiente.
La sentencia Delete
Donde tabla especifica la tabla sobre la cual queremos borrar las filas, y
condición especifica la condición que se debe cumplir para que se borren
las filas. Si omitimos la condición, se borrarán todas las filas de la tabla, es
decir, la sentencia que aparece en el Código siguiente borra todas las filas
de la tabla authors.
DELETE authors
Por ejemplo, si queremos borrar la fila que hemos creado en la tabla autores,
deberemos ejecutar el siguiente Código fuente. Obteniendo el siguiente
resultado:
(1 row(s) affected)
Sentencias condicionales
CASE expresion1
WHEN expresion2 THEN resultado1
WHEN expresion3 THEN resultado2
...
[ELSE resultado3]
En este caso se comprueba el valor del atributo state, y si este es igual a CA,
se devolverá California, si es OR se devolverá Oregon, y en otro caso se
devolverá el literal 'Otro'.
Listar los años de las facturas, pero los años no se deben de repetir
El resultado será
RESUMEN
La sentencia SELECT se utiliza para expresar una consulta SQL.
Toda sentencia SELECT produce una tabla de resultados que contienen una
o más columnas y cero o más filas.
La cláusula FROM especifica la(s) tabla(s) que contiene(n) los datos a
recuperar por una consulta.
Una consulta resumen sin una cláusula GROUP BY genera una única
fila de resultados, resumiendo todas las filas de una tablas o de un conjunto
compuestos de tablas.
Ejercicios Prácticos
Usar la BD Ventas
Mostrara todas las Facturas pares emitida en los meses impares por
empleado más antiguo, mostrar los campos Num_Fact,Sub_Total,Igv,Total,
[meses en letras].
Mostrar los clientes cuyo total de facturación sea mayor 1200, los campos a
mostrar son Cod_cli,nom_cli,[Total Facturado].
Mostrar los productos cuya segunda letra inicie con 'a' y su stock sea mayor
a 300.
Mostrar los 3 productos más vendidos de todas las facturas en entre el mes
enero y marzo en letras.
Mostrar las 2 facturas con mayor y menor total, los campos a mostrar son
num_fact,Sub_total,igv,total.
Ejercicios Propuestos
Usar la BD Ventas
Mostrar los Clientes cuyo nombre inicien con la letra 'C' o la letra 'A'.
Mostrar los Clientes cuyo nombres termine con letra 'A' y 'O'
Usando Like mostrar los nombres de los empleados cuyo nombre inicie con
la letra 'M'.
Usando Like mostrar los nombres de los empleados cuya segunda letra de
su nombre inicie con la letra 'A'.
Usando Like, mostrar los Empleados cuyo nombre termine con la letra Z.
Usando Like mostrar los Empleados cuyo apellido paterno inicie con la letra
'S' Sabiendo que el nombre tiene este formato Julio, Saavedra Rondon.
Usando Like mostrar todos los empleados excepto los empleados cuyo
apellido paterno inicie con la letra „A‟.
Usando Like mostrar todos los Empleados cuyo nombre no inicie con la letra
C ó la letra M.
Num_Fact Fecha
-------- ----------------------------------------------
000001 Lima Martes 2 de Enero de 1996
000002 Lima Viernes 5 de Enero de 1996
Mostrar los productos cuya primera letra inicie con 'A', el stock sea mayor a
100 y la fecha de ingreso sea el año 1994.
Mostrar los clientes que hayan tenido más de 10 facturas emitidas, los
campos a mostrar son Nom_Cli,[Cantidad de Facturas].
Subconsultas:
Una subconsulta es una consulta SELECT que devuelve un valor único y
está anidada en una instrucción SELECT, INSERT, UPDATE o DELETE, o
dentro de otra subconsulta. Una subconsulta se puede utilizar en cualquier
parte en la que se permita una expresión.
Usando subconsultas, mostrar todas las columnas del producto más caro.
Mostrar los 3 productos más caros, los campos a mostrar son cod_prod,
descrip, precio.
Mostrar las facturas del Empleado más antiguo, los campos a mostrar son
Num_Fact,Sub_total,igv,total.
Mostrar la Actividad de la factura por medio del campo FgEli que es de tipo
bit(0,1), si es 0 "Emitida",si es 1 "Cancelado", los campos a mostrar son
num_fact,Sub_total,igv,total, [Estado de Factura].
Usando el Charindex(expresion1,expresion2[,posicion inicial]) devuelve la
posición inicial de la expresión especificada en una cadena de caracteres.
Mostrar todos los clientes cuyo apellido inicie con la letra 'A'
Cod_Cli nom_cli
--------- ------------------------------
C0010 Williams, Anderson Lorin
Semana 2 Procedimientos Almacenados I
Vimos que SQL Server ofrece dos alternativas para asegurar la integridad de
datos, la integridad:
DECLARATIVA, mediante el uso de restricciones (constraints), valores
predeterminados (defaults) y reglas (rules) y
Sintaxis:
drop procedure NOMBREPROCEDIMIENTO;
Aplicaciones prácticas
Problema:
exec pa_libros_autor_editorial2;
--SQL Server asume que es el primero, y no hay registros cuyo autor sea
"Planeta".
--Especificamos el segundo parámetro, enviando parámetros por nombre:
exec pa_libros_autor_editorial2 @editorial='Planeta';
--Muestra los libros de "Richard Bach" (valor por defecto para "autor") de la
editorial --enviada como argumento ("Planeta").
--Ejecutamos el procedimiento enviando parámetros por nombre en distinto
orden:
Ejercicios Propuestos
Usar la base de datos Ventas
1. Crear un procedimiento almacenado que muestre los datos del cliente que tiene
mayor cantidad de facturas emitidas.
2. Crear un procedimiento almacenado que incremente a 25% al producto más barato.
3. Crear un procedimiento almacenado que reciba varios parámetros de entrada, que
permita la inserción de un empleado, y a la vez genere el código del empleado, junto
con la inserción del registro.
4. Crear un procedimiento almacenado que reciba como parámetro de entrada un
intervalo de fechas y un código de cliente, y muestre como resultado las 3 facturas
con mayor precio de ese cliente, los campos a mostrar son : num_fac, sub_total,
igv, total
5. Crear un procedimiento almacenado que muestre todas las facturas que fueron
emitidos solo en los meses pares.
6. Crear un procedimiento almacenado que muestre las utilidades ganada por factura,
sabiendo que la utilidad es igual a ((precio-pre_cos)*cant), los campos a mostrar
num_fac, [utilidad de factura].
7. Crear un procedimiento almacenado que muestre los datos de la factura con mayor
utilidad ganada.
8. Crear un procedimiento almacenado que reciba varios parámetros de entrada, que
permita la inserción, y a la vez genere el código del producto, junto con la inserción
del producto.
9. Crear un procedimiento almacenado que permita mostrar el detalle de una o más
facturas, este procedimiento almacenado debe de permitir el ingreso de una o varias
facturas.
10. Crear un procedimiento almacenado que muestre las facturas que tiene mayor y
menor total de venta, utilice la tabla facturas
DE SALIDA
Aplicaciones prácticas
Problema:
Ejercicios Propuestos
Usar la base de datos Neptuno
1. Crear un SP que muestre cuales son los productos que tienen el mayor precio de la
tabla productos. Los campos a mostrar son:
Ejemplo: Exec usp_ProductoMayor
2. Crear un SP que muestre todos los Pedidos de un cliente ingresado. Los datos a
mostrar son:
Ejemplo: Exec usp_PedidosporCliente 'ALFKI'
4. Crear un SP que muestre todos los Productos cuyo pais de proveedor sea ingresado, y
la unidad de precio sea mayor al dato ingresado.Mostrara el siguiente resultado.
Ejemplo: Exec usp_ProductosporPaisyPrecioUnidad 'Estados Unidos',20
5. Crear un SP que permita mostrar todos los datos de una tabla ingresada.
Set Quoted_Identifier off --los literales deben delimitarse con comillas dobles.
Set Quoted_Identifier on --los literales deben delimitarse con comillas simples.
Ejemplo: Exec usp_MostrarTablas 'Empleados'
6. Crear un SP que que permita mostrar todos los productos cuya segunda palabra del
nombre del producto inicia por una letra ingresada,el precio unidad sea mayor al dato
ingresado, y las unidades en existencia sea mayor al dato ingresado.
Ejemplo: Exec usp_Productospor3Parametros 'd',40,50
7. Crear un SP que muestre cuantos productos existen cuyo precio unidad este entre 15 y
50. Utilice un parametro de salida OUTPUT para obtener el resultado.
Ejemplo de ejecucion del procedimiento almacenado con parametro de salida:
Declare @precio int
Exec usp_CantidadProductos @precio Output
print 'Existen '+ convert(varchar(2),@precio)+' Productos'
1. Vistas horizontales
2. Vistas verticales
Es bastante habitual definir una vista que divida una tabla fuente
tanto por la dimensión horizontal como por la vertical, como en este
ejemplo:
RESUMEN
Una vista puede ser referenciada como una tabla real en una
sentencia SELECT, INSERT, DELETE o UPDATE. Sin embargo, las vistas más
complejas no pueden ser actualizadas; son vistas de sólo lectura.
Ejercicios Propuestos
1. Crear una vista que permita visualizar los 2 empleados con mayor cantidad de Pedidos.
(usar tablas Empleados y Pedidos)
2. Crear una vista que permita visualizar todos productos por Proveedor.(Usar tablas
Proveedores y Productos)
3. Crear una vista que permita visualizar los datos del empleado mas joven. (Usar tabla
Empleados)
4. Crear una vista que permita visualizar todos los empleados con mas años de trabajo y
los empleados con menor años trabajo. (Usar tabla Empleados)
5.
6. Crear una vista que permita visualizar los productos y su categoria, cuya unidad de
precio sea mayor al promedio de precios de unidad. ( Usar tablas Categorias y
Productos)
ADO .NET es la nueva versión del modelo de objetos ADO (ActiveX Data
Object), 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
ofrecía, y está diseñado para trabajar con conjuntos de datos
desconectados, lo que permite reducir el tráfico de red. ADO .NET utiliza
XML con formato universal de transmisión de los datos.
Estructura del modelo de objetos
System.Data: Aloja las clases independientes del origen de datos, así como
las interfaces que deben implementar las clases dependientes.
System.Data.Odbc
System.Data.OleDb
System.Data.OracleClient
System.Data.SqlClient
El objeto Connection
Este objeto es el encargado de establecer una conexión física con una base
de datos determinada.
User ID: Se utiliza para indicar el nombre del usuario que se conecta a
la base de datos.
Pwd: Se utiliza para indicar la clave del usuario que esta conectándose
a la base de datos.
El objeto Command
El objeto DataReader
Puede que sea la capa más externa e importante del modelo ADO.NET, pero
es la que contiene quizás, el modelo de colecciones y trabajo que más le
puede resultar familiar al programador de Visual Basic 6, sobre todo a los
anteriormente comentados RecordSets.
El DataSet contiene en sí, un conjunto de datos que han sido volcados desde
el proveedor de datos.
De esa forma, podemos trabajar con. De hecho, por marcar una similitud con
el RecordSet, el DataSet está preparado para trabajar con fuentes de datos
desconectadas.
La clase DataView
Este objeto nos permite crear múltiples vistas de nuestros datos, además de
permitirnos presentar los datos.
La clase DataTable
Ahora vamos a crear un Proyecto, para ellos nos vamos a Archivo y luego
seleccionamos Nuevo Proyecto
Ahora seleccionamos Visual Basic y seleccionamos Aplicación para
Windows (se le asigna el nombre de Mantenimiento_Clientes)
Imports System.Data.SqlClient
Public Class Form1
Sub Listado()
Dim da As New SqlDataAdapter("Listado_Cliente", cn)
Dim dt As New DataTable
da.Fill(dt)
DataGridView1.DataSource = dt
End Sub
Sub Limpiar()
'Creamos una variable de tipo control
Dim ctrl As Control
'Recorreremos todos los controles que 'existen dentro de mi
GroupBox1
For Each ctrl In Me.GroupBox1.Controls
'Preguntaremos si son TextBox
If TypeOf ctrl Is TextBox Then
ctrl.Text = ""
End If
Next
End Sub
Ahora crearemos un Procedimiento almacenado en el SQL el cual me
generara el código del cliente, dicho código será parámetro de salida
----------Genera_Codigo----------------
--Creamos Ahora el Procedimiento
Create procedure Genera_Codigo
@cod_cli char(5) Output
AS
Set @cod_cli=(Select Max(Cli_codigo) From Clientes)
set @cod_cli=isnull(@cod_cli,'0000')
Set @cod_cli='C'+right('0000'+rtrim(right(@cod_cli,4)+1),4)
Go
--Vamos a comprobar el Procedimiento
Declare @codigo char(5)
Exec Genera_Codigo @codigo Output
print @codigo
paramResultado.Direction = ParameterDirection.Output
cmd.Parameters.Add(paramResultado)
cn.Open()
cmd.ExecuteReader()
cn.Close()
lblcod.Text = paramResultado.Value
End Sub
----------Grabar_Cliente------------
------------------------------------
--Creamos Ahora el Procedimiento
create procedure Grabar_Cliente
@cod varchar(5),
@nom varchar(25),
@tel int,
@ruc varchar(11),
@dir varchar(30)
as
insert into clientes values(@cod,@nom,@tel,@ruc,@dir)
Nota:
MsgBox("Desea Grabar", 4 + 32, "Mensaje")
4 Botones Yes o No
32 Icono de Informacion
6 Si le dimos Yes
7 Si le dimos No
If (rpta = 1) Then
MsgBox("Se Grabo Correctamente", 32, "Mensaje")
Listado()
Else
MsgBox("Error al Grabar", 16, "Mensaje")
End If
End If
End Sub
Ahora pasaremos los datos del DatagridView a las cajas del Textos para
realizar las modificaciones
Private Sub DataGridView1_CurrentCellChanged(…) Handles
DataGridView1.CurrentCellChanged
Try
Dim posi As Integer
'Fila Seleccionada
posi = DataGridView1.CurrentCell.RowIndex
lblcod.Text = DataGridView1(0, posi).Value txtnom.Text =
DataGridView1(1, posi).Value
txttel.Text = DataGridView1(2, posi).Value
txtruc.Text = DataGridView1(3, posi).Value
txtdir.Text = DataGridView1(4, posi).Value
Catch ex As Exception
End Try
End Sub
----------Actualizar_Cliente-------
--Creamos Ahora el Procedimiento
create procedure Actualizar_Cliente
@cod varchar(5),@nom varchar(25),
@tel int,@ruc varchar(11),
@dir varchar(30)
as
update clientes set cli_nombre=@nom,cli_telefono=@tel,
cli_ruc=@ruc,cli_direccion=@dir where cli_codigo=@cod
----------Eliminar_Cliente------
--Creamos Ahora el Procedimiento
create procedure Eliminar_Cliente
@cod varchar(5)
as
delete from clientes where cli_codigo=@cod
use northwind
go
----------Listado_Cliente----------------
-----------------------------------------
--Creamos Ahora el Procedimiento
create Procedure Listado_Empleado
as
select EmployeeID,LastName + ' , '+ FirstName as Nombre_apellido
from Employees
go
----------Facturas vendidas----------------
-----------------------------------------
--Creamos Ahora el Procedimiento
create Procedure Facturas_Empleado
@codven int
as
select OrderID,convert(char(10),OrderDate,103) Fecha,ShipCountry
from Orders
where EmployeeID=@codven
go
----------Facturas vendidas----------------
-----------------------------------------
--Creamos Ahora el Procedimiento
create Procedure Mostrar_Foto
@codven int
as
select Photo from Employees
where EmployeeID=@codven
go
Ahora vamos a crear un Proyecto, para ellos nos vamos a Archivo y luego
seleccionamos Nuevo Proyecto
Imports System.Data.SqlClient
Imports System.IO 'MemoryStream
Try
Dim cod As Integer = CInt(ListBox1.SelectedValue)
Dim cmd As New SqlCommand("Facturas_Empleado", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@codven", SqlDbType.Int).Value = cod
Presionamos finalmente F5
Lista_Detalle "'F0001','F0002','F0003'"
Ahora vamos a crear un Proyecto, para ellos nos vamos a Archivo y luego
seleccionamos Nuevo Proyecto
Ahora seleccionamos
Ahora crearemos el siguiente diseño
Imports System.Data.SqlClient
Finalmente presionamos F5
Ejercicios Propuestos
Aplicación 1:
Realice una búsqueda de clientes mediante cadenas en una caja de texto, el resultado los
mostrara en un control DataGridView1, el campo Tipo Cliente será Cliente VIP cuando el
cliente tenga más de 10 Ordenes compradas, si no será un tipo de cliente Normal. Al
seleccionar un cliente en el DataGridview1 mostrara las ordenes vendidas en un Listbox,
mostrando los campos concatenados.
Semana 11 Clases y creación de librerías
Ejercicio Práctico Nro. 1
----------Listado_Cliente----------------
-----------------------------------------
--Creamos Ahora el Procedimiento
create Procedure Listado_Cliente
as
select cli_codigo,cli_nombre from clientes where cli_codigo
in(select distinct cli_codigo from ac_cabe)
go
----------Detalle de la Factura-----------
Imports System.Data.SqlClient
Public Class clsconexion
Function cn() As String
Dim cadena As String
cadena = "Server=(local);Integrated Security=SSPI;"
cadena += "Database=bdfactura"
Return cadena
End Function
End Class
Imports System.Data.SqlClient
Imports System.Data.SqlClient
Imports System.Data.SqlClient
Public Class Form1
Dim funcion As New clsfunciones
----------Listado_Cliente----------------
-----------------------------------------
----------Facturas_Varios_Cliente----------------
-----------------------------------------
--Habilita el uso de las comillas
set quoted_identifier off
--Creamos Ahora el Procedimiento
create Procedure Facturas_Varios_Cliente
@codigos varchar(255)
as
exec("select fac_numero,c.cli_codigo,cli_nombre "+
"from fac_cabe as fc,clientes as c "+
"where fc.cli_codigo=c.cli_codigo and "+
"c.cli_codigo in(" +@codigos +") "+
"order by c.cli_codigo asc")
Go
Una vez creado el diseño del formulario, ahora vamos agregar una clase a
nuestro proyecto, para ello seleccionamos el Proyecto y luego Clic Agregar y
finalmente seleccionamos Clase
Ahora a nuestra clase lo llamaremos clsconexion
Imports System.Data.SqlClient
Imports System.Data.SqlClient
Imports System.Data.SqlClient
Imports System.Data.SqlClient
Public Class Form1
Dim clase As New clsfunciones
Ahora vamos a programar en el botón para que nos muestre las facturas de
los clientes seleccionado
Private Sub BtnBuscar_Click(…) Handles BtnBuscar.Click
Dim cod, codigo As String
Dim tamaño As Integer
cod = ""
Try
For a As Integer = 0 To ListView1.Items.Count - 1
If (ListView1.CheckedItems(a).Checked = True) Then
cod = cod & "'" & ListView1.CheckedItems(a).Text & "',"
End If
Next
Catch ex As Exception
End Try
tamaño = cod.Length 'Tamaño de la cadena
'Le quitamos uno por la coma que sobra
codigo = Mid(cod, 1, tamaño - 1)
A continuación presionamos F5
Ejercicio Práctico Nro. 3
use BDfactura
--LISTADO de las Facturas
create procedure Lista_Facturas
as
select fac_numero, convert(char(10),fac_fecha,103) Fecha from fac_cabe
go
Imports System.Data.SqlClient
Public Class clsconexion
Function cn() As String
Dim cadena As String
cadena = "Server=(local);Integrated Security=SSPI;"
cadena += "Database=bdfactura"
Return cadena
End Function
End Class
Finalmente presionamos F5
Paso 3: Crear una carpeta en la unidad C para este ejemplo y guardar las imágenes ahí.
Unidad C:\imagenes
Clase ClsFunciones.vb
Imports System.Data
Imports System.Data.SqlClient
Imports System.data
Sub MostrarImagen()
DataGridView1.Columns.Clear()
tblempl = obj.MostrarEmpleados
DataGridView1.DataSource = tblempl
Dim colimag As New DataGridViewImageColumn
colimag.ImageLayout = DataGridViewImageCellLayout.Normal
DataGridView1.Columns.Add(colimag)
DataGridView1.Columns(2).HeaderText = "Foto"
For i As Integer = 0 To DataGridView1.Rows.Count - 1
DataGridView1.Item(2, i).Value = Image.FromFile("c:\imagenes\" + tblempl.Rows(i)(0)
+ ".jpg")
Next
DataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells)
End Sub
Ejercicios Propuestos
Ejercicio 1:
Cuando cargue el formulario, se deber de mostrar en un listos 2 campos el
código y los nombres de los empleados.
Al seleccionar un ítem del listbox debe mostrar en el datagridview las 5
ordenes más caras pares, que se han emitido en los meses impares del
empleado seleccionado mostrando el total por orden emitida.
Y ahora seleccionaremos
Imports System.Data.SqlClient
Una vez terminado de crear todas las funciones vamos a generar la DLL
Imports System.Data
Public Class Form1
Imports System.Data
Public Class Form1
Dim milibreria As New Libreria_Clases.clsclase
Try
Dim cod As String
'Extraemos los 5 Primeros caracteres
cod = Mid(Cbocliente.Text, 1, 5)
'Ahora LLenaremos las Facturas del Cliente
Dim dt As New DataTable
dt = milibreria.Facturas_Clientes(cod)
With Lstcliente
.DataSource = dt
.ValueMember = "fac_numero"
.DisplayMember = "fac_numero"
.SelectedIndex = 0
End With
'Llamamos al Evento de Lstcliente_SelectedIndexChanged
Lstcliente_SelectedIndexChanged(sender, e)
Catch ex As Exception
End Try
End Sub
Try
'Capturamos el Valor del ListBox(Lstcliente)
Dim fac As String = Lstcliente.SelectedValue
Dim dt As New DataTable
dt = milibreria.Detalle_Factura(fac)
dgfacturas.DataSource = dt
Catch ex As Exception
End Try
End Sub
Utilizando la base de datos ventas, creara una aplicación que permita realizar un cálculo de
hora trabajadas de los empleados.
Tablas : Empleado, Empl_hor y días.
Nota: Para este ejemplo de la base de datos ventas, los empleados no tienen minutos de
tardanza y de salida. Pero usted considerara en su programación los minutos trabajados.
(Dado que en eso se basara la revisión del trabajo, modifique la tabla empl_hor, agregando
minutos de trabajos para ver el resultado).
Semana 13 y 14 Aplicaciones con 3 Capas
Ejercicio Práctico Nro. 1
----------Listado_Cliente----------------
-----------------------------------------
--Creamos Ahora el Procedimiento
create Procedure Listado_Cliente
as
select cli_codigo,cli_nombre,cli_telefono,cli_ruc,cli_direccion
from Clientes
go
----------Genera_Codigo----------------
-----------------------------------------
--Creamos Ahora el Procedimiento
Create procedure Genera_Codigo
@cod_cli char(5) Output
AS
Set @cod_cli=(Select Max(Cli_codigo) From Clientes)
set @cod_cli=isnull(@cod_cli,'0000')
Set @cod_cli='C'+right('0000'+rtrim(right(@cod_cli,4)+1),4)
Go
--Vamos a comprobar el Procedimiento
Declare @codigo char(5)
Exec Genera_Codigo @codigo Output
print @codigo
go
----------Grabar_Cliente----------------
-----------------------------------------
--Creamos Ahora el Procedimiento
create procedure Grabar_Cliente
@cod varchar(5),
@nom varchar(25),
@tel int,
@ruc varchar(11),
@dir varchar(30)
as
insert into clientes values(@cod,@nom,@tel,@ruc,@dir)
go
----------Actualizar_Cliente----------------
-----------------------------------------
--Creamos Ahora el Procedimiento
create procedure Actualizar_Cliente
@cod varchar(5),
@nom varchar(25),
@tel int,
@ruc varchar(11),
@dir varchar(30)
as
update clientes set cli_nombre=@nom,cli_telefono=@tel,
cli_ruc=@ruc,cli_direccion=@dir where cli_codigo=@cod
go
----------Eliminar_Cliente----------------
-----------------------------------------
--Creamos Ahora el Procedimiento
create procedure Eliminar_Cliente
@cod varchar(5)
as
delete from clientes where cli_codigo=@cod
go
Por defecto este proyecto nos crea una clase, nosotros le cambiaremos de
nombre y lo llamaremos capa de datos
Imports System.Data.SqlClient
Ahora al proyecto capa de negocio hay que agregar una referencia, para ello
seleccionamos Capa_Negocio y le damos clic derecho
Imports System.Data.SqlClient
Seleccionamos
Name btnnuevo
ToolTipText Nuevo
Image Seleccionamos una
imagen
Sub listado()
Dim dt As New DataTable
dt = objnegocio.N_Listado_Clientes
DataGridView1.DataSource = dt
End Sub
Finalmente le damos F5
use BDfactura
----Facturas Realizadas
--probamos el procedimiento
Lista_Detalle "'F0001','F0002','F0003'"
Imports System.Data.SqlClient
Ahora programaremos para que cuando cargue el formulario nos liste las
facturas realizadas
Private Sub Form1_Load(…) Handles MyBase.Load
Dim dt As New DataTable
dt = objnegocio.N_Facturas_Clientes()
CheckedListBox1.MultiColumn = True
For a As Integer = 0 To dt.Rows.Count - 1
CheckedListBox1.Items.Add(dt.Rows(a)(0))
Next
End Sub
Finalmente presionamos F5
Imports System.Data
Public Class Clsconexion
Public Function conexion_SQL() As String
Dim cn As String
cn = "Server=(local);Integrated Security=yes;Database=bdfactura"
Return cn
End Function
End Class
Imports System.Data.SqlClient
Dim p As Integer
p = DataGridView1.CurrentCell.RowIndex
Dim cod As String = DataGridView1(0, p).Value
Dim dt As New DataTable
dt = objnegocio.N_Facturas_Cliente(cod)
DataGridView2.DataSource = dt
End Sub
Ahora presionamos F5
Ejercicio Práctico Nro. 4
Imports System.Data
Imports System.Data.SqlClient
Public Class D_Datos
Dim cone As New Clsconexion
'cone.conexion_SQL llamamos a la Cadena de conexion que hicimos „en la clase
Clsconexion
Dim cn As New SqlConnection(cone.conexion_SQL)
Finalmente presionamos F5
Ejercicios Propuestos
Aplicación 1:
Se pide a usted que cree una aplicaron que permita realizar una consulta de
datos bajo las siguientes consideraciones:
El campo OrderID.
El campo RequiredDate, que es la fecha que se requería el producto.
Creara un campo TotalVenta, que es la suma del producto de UnitPrice *
Quantity.
Modelo de extracción
Este controlador
no extraerá datos por
sí mismo.
Crear un reporte:
Antes de crear el reporte, hay que decidir cuál será el mecanismo utilizado
para acceder a la base de datos. Crystal Reports puede obtener datos de una
infinidad de fuentes, pero una buena cantidad de ellas, como DAO, ADO y
OLE/DB, no está "administrada", o sea, es código .NET "puro". En una
aplicación .NET, probablemente sea deseable realizar el acceso a través de
ADO.NET. Para ello, lo más fácil es definir un Conjunto de datos tipificado,
aun antes de crear el reporte.
Como nos damos cuenta nos salen los campos que va a visualizar nuestro
procedimiento almacenado, ahora vamos a seleccionar los campos a
vizualizar
Una vez agregado los campos, le damos siguiente
use northwind
go
-----------------Si existe lo Eliminamos--------------
set dateformat dmy --formato dia,mes,año
go
-----------------Creamos el Procedimiento-------------
create procedure Listado_Ordenes
@fe1 datetime,
@fe2 datetime
as
select OrderID,c.CustomerID,CompanyName,convert(char(10),
OrderDate,103) as Fecha
from orders as o,Customers as c
where OrderDate between @fe1 and @fe2
and c.CustomerID=o.CustomerID
order by Fecha desc
go
Listado_Ordenes '01-07-1996','30-07-1996'
Ahora seleccionamos
Ahora
Private Sub BtnFiltrar_Click(…) Handles BtnFiltrar.Click
Dim fecha1, fecha2 As Date
fecha1 = CDate(mktxtini.Text)
fecha2 = CDate(mktxtfin.Text)
use bdfactura
go
----------Listado_Cliente----------------
-----------------------------------------
--Creamos Ahora el Procedimiento
create Procedure Listado_Cliente
as
select cli_codigo,cli_nombre from clientes
where cli_codigo in(select distinct cli_codigo from fac_cabe)
go
----------Facturas_Varios_Cliente----------------
-----------------------------------------
--Habilita el uso de las comillas
set quoted_identifier off
Y lo llamaremos Clsconexion
Imports System.Data
Public Class Clsconexion
Public Function conexion_SQL() As String
Dim cn As String
cn = "Server=(local);Integrated Security=yes;Database=bdfactura"
Return cn
End Function
End Class
le damos siguiente
Como nos damos cuenta nos salen los campos que va a visualizar nuestro
procedimiento almacenado, ahora vamos a seleccionar los campos a
visualizar (agregar todos).