veremos como pronosticar la venta por año y dependiendo por el año del dato podremos saber si el año tiene 1 o 2 semestres y nos lo mostrata en un listview y nos hallara el total de la venta.
PRONOSTICO DE VENTAS POR AÑO, SEMESTRE
LEVANTAMOS LA BASE DE DATOS NEPTUNO
ABRIMOS VISUAL STUDIO Y CREAMOS UNA NUEVA APLICACIÓN
DISEÑAMOS EL FORMULARIO
COMO PUEDEN OBSERVAR PARA PODER HALLAR EL SEMESTRE TENEMOS QUE DESGLOSARLO DESDE EL TRIMESTRE.
CODIGO SQL PARA LA APLICACIÓN: PROCEDIMIENTO ALMACENADO:
--seleccionamos
el nombre de la compañia,Convertir la fecha de año,mes,dia a dia,mes,año y que
sea de valor varchar,
--se convertira
la fechapedido a trimestre y de trimestre se convertira en semestre,
--tambien se
seleccionara el nombre de producto, y se hallara la venta que sera el preciounitario * cantidad - el descuento y
te dara la venta
create procedure pa_totalv
select Clientes.NombreCompañía,
fechsp=convert(varchar,FechaPedido,103),
case DATEPART(QUARTER,fechapedido)
when 1 then 's1'
when 2 then 's1'
else
's2'
end as semestre,
Productos.NombreProducto,
venta=[Detalles de pedidos].PrecioUnidad
* [Detalles de pedidos].Cantidad
- [Detalles de pedidos].Descuento
from Clientes inner join Pedidos
on
Clientes.IdCliente = Pedidos.IdCliente
inner join [Detalles de pedidos]
on
Pedidos.IdPedido=[Detalles de pedidos].IdPedido
inner join Productos
on
[Detalles de pedidos].IdProducto=Productos.IdProducto
AGREGAMOS COLUMNAS AL LISTVIEW
AÑADIMOS 5 COLUMNAS CON LOS TEXT COMPAÑÍA, FECHA,
SEMESTRE, PRODUCTO, VENTA.
PARA QUE MUESTRE LOS DETALLES EN EL LISTVIEW
PARA VISUALIZARLO CON LINEAS
COMENSAMOS A PROGRAMAR EN EL BOTON CONSULTAR
PERO ANTES AGREGAMOS UN MODULO PARA LA CONEXION
COMO PUEDEN VER EL CODIGO DEL MODULO CONEXION
AHORA PROCEDEREMOS A PROGRAMAR EN EL BOTON CONSULTAR DEL
FORMULARIO:
como pueden ver ese es el codigo para que cargue el procedimiento almacando ya realizado con este codigo solo podran ver los datos cargados en el listview
ahora programaremos para el load
Doble click en el formulario afuera para poder entrar al
load
CREAR PROCEDIMIENTO PARA EL AÑO:
create procedure pa_cboaño
as
select distinct YEAR(fechapedido) from Pedidos
order by
YEAR(FechaPedido)
PARA PROGRAMAR Y QUE NOS MUESTRE EL AÑO EN EL
COMBOBOX LO QUE HAREMOS ES PROGRAMAR EN EL FORMULARIO:
LO QUE SE MUESTRA A CONTINUACION ES EL CODIGO DEL
LOAD PARA QUE PUEDA MOSTRAR EL AÑO.
CODIGO:
Dim cn As
New SqlConnection
Dim
comando As New
SqlCommand
Dim
lector As SqlDataReader
Dim
fila As ListViewItem
Try
cn.ConnectionString = cadena
cn.Open()
With
comando
.CommandText = "pa_cboaño"
.CommandType =
CommandType.StoredProcedure
.Connection = cn
End
With
lector = comando.ExecuteReader
If
lector.HasRows = True Then
While
lector.Read
Me.ComboBox1.Items.Add(CStr(lector.Item(0)))
End
While
End
If
Catch
ex As Exception
MessageBox.Show(ex.Message)
Finally
If
cn.State = ConnectionState.Open Then
cn.Close()
cn.Dispose()
End
If
End Try
EN EJECUCIÓN:
AHORA
CREAREMOS UN PROCEDIMIENTO PARA QUE DEPENDIENDO DEL AÑO NOS MUESTRE CUANTOS
SEMESTRES TENEMOS EN LOS AÑOS.
create procedure pa_semestrexaño
@año int
as
select distinct case DATEPART(QUARTER,fechapedido)
when 1 then 's1'
when 2 then 's1'
else
's2'
end as semestre from
pedidos
where year (fechapedido)=@año
EJECUTANDO EL PROCEDIMIENTO:
pa_semestrexaño '1997'
EN EJECUCIÓN:
AHORA EN EL COMBOBOX1 DEL AÑO:
HAREMOS QUE EN EL COMBOBOX SEMESTRE CARGUE DEPENDIENDO DEL COMBOBOX AÑO, ENTONCES LO QUE AREMOS ES PROGRAMAR EN EL COMBOBOX AÑO. DOBLE CLICK
ESTE SERA EL CODIGO QUE DEBERAN COLOCAR EN EL COMBOBOX1
CODIGO:
Dim cn As
New SqlConnection
Dim
comando As New
SqlCommand
Dim
lector As SqlDataReader
Dim
fila As ListViewItem
Try
cn.ConnectionString = cadena
cn.Open()
With
comando
.CommandText = "pa_semestrexaño"
.CommandType =
CommandType.StoredProcedure
.Parameters.AddWithValue("año", Me.ComboBox1.Text.Trim)
.Connection = cn
End
With
lector = comando.ExecuteReader
Me.ComboBox2.Text
= ""
Me.ComboBox2.Items.Clear()
If
lector.HasRows = True Then
While
lector.Read
Me.ComboBox2.Items.Add(CStr(lector.Item(0)))
End
While
End
If
Catch
ex As Exception
MessageBox.Show(ex.Message)
Finally
If
cn.State = ConnectionState.Open Then
cn.Close()
cn.Dispose()
End
If
End Try
AHORA HAREMOS QUE AL
SELECCIONAR EL AÑO MAS EL SEMESTRE NOS CARGUE EN EL LISTVIEW LOS DATOS
SELECCIONADOS. (HAREMOS UNA MODIFICACION AL PROCEDMIENTO PA_TOTALV)
CODIGO DEL PROCEDIMIENTO
MODIFICADO:
alter procedure pa_totalv
@año int,
@semestre char(2)
as
select Clientes.NombreCompañía,
fechsp=convert(varchar,FechaPedido,103),
case DATEPART(QUARTER,fechapedido)
when 1 then 's1'
when 2 then 's1'
else
's2'
end as semestre,
Productos.NombreProducto,
venta=[Detalles de pedidos].PrecioUnidad
* [Detalles de pedidos].Cantidad
- [Detalles de pedidos].Descuento
from Clientes inner join Pedidos
on
Clientes.IdCliente = Pedidos.IdCliente
inner join [Detalles de pedidos]
on
Pedidos.IdPedido=[Detalles de pedidos].IdPedido
inner join Productos
on
[Detalles de pedidos].IdProducto=Productos.IdProducto
where YEAR(fechapedido)= @año and
case DATEPART(QUARTER,fechapedido)
when 1 then 's1'
when 2 then 's1'
else
's2'
end =
@semestre
EN
EN FORMULARIO EDITAREMOS EN EL BOTON
DOBLE CLICK Y COMENZAREMOS A EDITAR
CODIGO:
Dim cn As New SqlConnection
Dim comando, c2 As New SqlCommand
Dim lector, l2 As
SqlDataReader
Dim fila As
ListViewItem
Dim suma As
Double
suma = 0
Try
cn.ConnectionString = cadena
cn.Open()
With comando
.CommandText = "pa_totalv"
.CommandType = CommandType.StoredProcedure
.Parameters.AddWithValue("@año",
ComboBox1.Text.Trim)
.Parameters.AddWithValue("@semestre",
ComboBox2.Text.Trim)
.Connection = cn
End With
lector = comando.ExecuteReader
Me.lvresultado.Items.Clear()
'--limpiar el listview para que no carge y vuelva a
cargar
If
lector.HasRows = True Then
While lector.Read
fila = New ListViewItem
fila.Text = CStr(lector.Item(0))
fila.SubItems.Add(CStr(lector.Item(1)))
fila.SubItems.Add(CStr(lector.Item(2)))
fila.SubItems.Add(CStr(lector.Item(3)))
fila.SubItems.Add(CStr(lector.Item(4)))
suma += lector.Item(4)
Me.lvresultado.Items.Add(fila)
End While
Me.TextBox1.Text = suma
End If
EL RESULTADO DE TODO SERA LO SIGUIENTE:
DESCARGAR
1.- BASE DE DATOS
2.- APLICACIÓN





























0 comentarios:
Publicar un comentario