Sei sulla pagina 1di 49

1.

Conexión con el servidor

2. Nueva base de datos


3. Nueva tabla

4. Relleno de tablas
4.1. Tabla “Categoria”

4.1.1. Especificación de identidad


4.2. Tabla ”Cliente”

4.3. Tabla “detalle_venta”

4.4. Tabla “Producto”


4.5. Tabla “ventas”

5. Relación entre las tablas


5.1.Diagrama de base de datos

6. Generación de consultas
6.1. Consulta para la “Categoria”
create proc mostrar_categoria
as
select * from categoria order by idcategoria desc
go

create proc insertar_categoria


@nombre_categoria varchar(50)
as
insert into categoria (nombre_categoria) values (@nombre_categoria)
go

create proc edita_categoria


@idcategoria integer,
@nombre_categoria varchar (50)
as
update categoria set nombre_categoria=@nombre_categoria
where idcategoria=@idcategoria
go

create proc editar_categoria


@idcategoria integer,
@nombre_categoria varchar (50)
6.2. Consulta para el “cliente”

create proc eliminar_cliente


@idcliente integer
as
delete from cliente where idcliente=@idcliente
go

create proc editar_cliente


@idcliente integer,
@nombre varchar(50),
@apellidos varchar(50),
@direccion varchar(150),
@telefono varchar(9),
@dni varchar(8)
as
update cliente set nombre=@nombre, apellidos=@apellidos, direccion=@direccion,
telefono=@telefono,dni=@dni
where idcliente=@idcliente
go

create proc inserta_cliente


@nombre varchar (50),
@apellidos varchar (50),
@direccion varchar (100),
@telefono varchar (100),
@dni varchar (8)
as
insert into cliente (nombre,apellidos,direccion,telefono,dni) values
(@nombre,@apellidos,@direccion,@telefono,@dni)
go

create proc mostrar_cliente


as
select * from cliente order by idcliente desc
go
6.3. Consulta para “detalle_venta”
create proc insertar_detalle_venta
@idventa as integer,
@idproducto as integer,
@cantidad as decimal(18,2),
@precio_unitario as decimal(18,2)
as
insert into detalle_venta(idventa,idproducto,cantidad,precio_unitario)
values (@idventa,@idproducto,@cantidad,@precio_unitario)
go

create proc editar_detalle_venta


@iddetalle_venta as integer,
@idventa as integer,
@idproducto as integer,
@cantidad as decimal(18,2),
@precio_unitario as decimal(18,2)
as
update detalle_venta set
idventa=@idventa,idproducto=@iddetalle_venta,cantidad=@cantidad,precio_unitario
=@precio_unitario
where iddetalle_venta=@iddetalle_venta
go

create proc eliminar_detalle_venta


@iddetalle_venta as integer
as
delete from detalle_venta where iddetalle_venta=@iddetalle_venta
go

create proc mostrar_detalle_venta


as
select * from detalle_venta order by iddetalle_venta desc
go
6.4. Consulta para “producto”
create proc mostrar1_producto
as
select
producto.idproducto,producto.idcategoria,categoria.nombre_categoria,producto.nombre,p
roducto.descripcion,producto.precio_compra,producto.precio_venta,producto.fecha_venc
imiento, producto.imagen
from producto inner join categoria on producto.idcategoria=categoria.idcategoria
order by producto.idproducto desc

create proc insertar_producto


@idcategoria integer,
@nombre varchar(50),
@descripcion varchar(50),
@precio_compra decimal(18,2),
@precio_venta decimal(18,2),
@fecha_vencimiento date,
@imagen image
as
insert into
producto(idcategoria,nombre,descripcion,precio_compra,precio_venta,fecha_vencimiento
,imagen)
values
(@idcategoria,@nombre,@descripcion,@precio_compra,@precio_venta,@fecha_vencim
iento,@imagen)
go

7.
7.1. Consulta para “ventas”

create proc insertar_venta


@idcliente as integer,
@fecha_venta as date ,
@tipo_documento as varchar(50),
@num_documento as varchar(50)
as
insert into ventas (idcliente, fecha_venta, tipo_documento,num_documento)
values (@idcliente, @fecha_venta, @tipo_documento, @num_documento)
go

create proc editar_venta


@idventa as integer,
@idcliente as integer,
@fecha_venta as date ,
@tipo_documento as varchar(50),
@num_documento as varchar(50)
as
update ventas set
idcliente=@idcliente,fecha_venta=@fecha_venta,tipo_documento=@tipo_documen
to,num_documento=@num_documento
where idventa=@idventa
go

create proc eliminar_venta


@idventa as integer
as
delete from ventas where idventa=@idventa
go

create proc mostrar_venta


as
SELECT dbo.ventas.idventa, dbo.cliente.apellidos, dbo.cliente.dni,
dbo.ventas.idcliente, dbo.ventas.fecha_venta, dbo.ventas.tipo_documento,
dbo.ventas.num_documento
FROM dbo.cliente INNER JOIN
dbo.ventas ON dbo.cliente.idcliente = dbo.ventas.idcliente
go
8. Creación del proyecto

9. Creación de nuestras carpetas para un mayor orden


10. Creación de nuestra conexión
10.1. Inserción de la clase llamada “conexión”

10.2. Conexión entre Visual Basic y Sql Server


Public Class conexion
Protected cnn As New SqlClient.SqlConnection
Public idusuario As Integer
Protected Function conectado()
Try
cnn = New SqlClient.SqlConnection("data source=(local);initial
catalog=ventasfis;integrated security=true")
cnn.open()
Return True
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
Protected Function desconectado()
Try
If cnn.state = ConnectionState.Open Then
cnn.Close()
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function

End Class

11. Creación del programa “cliente”


11.1. Creación las propiedades de la clase “vcliente”
Public Class vcliente Public Property gdireccion
Dim idcliente As Integer Get
Dim nombre, apellidos, direccion, Return direccion
telefono, dni As String End Get
'metodo seeter y geter Set(ByVal value)
Public Property gidcliente direccion = value
Get End Set
Return idcliente End Property
End Get Public Property gtelefono
Set(ByVal value) Get
idcliente = value Return telefono
End Set End Get
End Property Set(ByVal value)
Public Property gnombre telefono = value
Get End Set
Return nombre End Property
End Get Public Property gdni
Set(ByVal value) Get
nombre = value Return dni
End Set End Get
End Property Set(ByVal value)
Public Property gapellidos dni = value
Get End Set
Return apellidos End Property
End Get
Set(ByVal value)
apellidos = value
End Set
End Property

'declaramos los constructores


Public Sub New()

End Sub
Public Sub New(ByVal idcliente As
Integer, ByVal nombre As String, ByVal
apellidos As String, ByVal direccion As
String, ByVal telefono As String, ByVal dni
As String)
gidcliente = idcliente
gnombre = nombre
gapellidos = apellidos
gdireccion = direccion
gtelefono = telefono
gdni = dni
End Sub

End Class
11.2. Creación de nuestro formulario

11.3. Creación de los algoritmos

Imports System.ComponentModel
Private dt As New DataTable

.
.
Pseudocodigo del formulario “frmcliente”
.
.

End Class
f

Private Sub frmcliente_Load(sender As Object, e As EventArgs) Handles MyBase.Load


mostrar()
End Sub
Public Sub limpiar()
btnguardar.Visible = True
btneditar.Visible = False
txtnombre.Text = ""
txtapellidos.Text = ""
txtdireccion.Text = ""
txttelefono.Text = ""
txtdni.Text = ""
End Sub
Private Sub mostrar()
Try
Dim func As New fcliente
dt = func.mostrar
datalistado.Columns.Item("Eliminar").Visible = False
If dt.Rows.Count <> 0 Then
datalistado.DataSource = dt
txtbuscar.Enabled = True
datalistado.ColumnHeadersVisible = True
inexistente.Visible = False
Else
datalistado.DataSource = Nothing
txtbuscar.Enabled = False
datalistado.ColumnHeadersVisible = False
inexistente.Visible = True
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
btnnuevo.Visible = True
btneditar.Visible = False
buscar()
End Sub
Private Sub buscar()
Try
Dim ds As New DataSet
ds.Tables.Add(dt.Copy)
Dim dv As New DataView(ds.Tables(0))
dv.RowFilter = cbocampo.Text & " like '" & txtbuscar.Text & "%'"

If dv.Count <> 0 Then


inexistente.Visible = False
datalistado.DataSource = dv
ocultar_columnas()
Else
inexistente.Visible = True
datalistado.DataSource = Nothing
End If

Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub ocultar_columnas()
datalistado.Columns(1).Visible = False
End Sub
Private Sub txtnombre_Validating(sender As Object, e As CancelEventArgs) Handles
txtnombre.Validating
If DirectCast(sender, TextBox).Text.Length > 0 Then
Me.erroricono.SetError(sender, "")
Else
Me.erroricono.SetError(sender, "Ingrese el nombre del cliente, dato obligatorio")
End If
End Sub

Private Sub txtapellidos_Validating(sender As Object, e As CancelEventArgs) Handles


txtapellidos.Validating
If DirectCast(sender, TextBox).Text.Length > 0 Then
Me.erroricono.SetError(sender, "")
Else
Me.erroricono.SetError(sender, "Ingrese los apellidos del cliente, dato obligatorio")
End If
End Sub
Private Sub txtdireccion_Validating(sender As Object, e As CancelEventArgs) Handles
txtdireccion.Validating
If DirectCast(sender, TextBox).Text.Length > 0 Then
Me.erroricono.SetError(sender, "")
Else
Me.erroricono.SetError(sender, "Ingrese la direccion del cliente, dato obligatorio")
End If
End Sub
Private Sub txttelefono_Validating(sender As Object, e As CancelEventArgs) Handles
txttelefono.Validating
If DirectCast(sender, TextBox).Text.Length > 0 Then
Me.erroricono.SetError(sender, "")
Else
Me.erroricono.SetError(sender, "Ingrese el telefono del cliente, dato obligatorio")
End If
End Sub

Private Sub txtdni_Validating(sender As Object, e As CancelEventArgs) Handles txtdni.Validating


If DirectCast(sender, TextBox).Text.Length > 0 Then
Me.erroricono.SetError(sender, "")
Else
Me.erroricono.SetError(sender, "Ingrese el DNI del cliente, dato obligatorio")
End If
End Sub
11.4. Pseudocodificacion de los botones (nuevo, guardar, cancelar y eliminar)

Private Sub btnnuevo_Click(sender As Object, e As EventArgs) Handles btnnuevo.Click


limpiar()
mostrar()

End Sub

Private Sub btnguardar_Click(sender As Object, e As EventArgs) Handles


btnguardar.Click
If Me.ValidateChildren = True And txtnombre.Text <> "" And txtapellidos.Text <> ""
And txtdireccion.Text <> "" And txttelefono.Text <> "" And txtdni.Text <> "" Then
Try
Dim dts As New vcliente
Dim func As New fcliente
dts.gnombre = txtnombre.Text
dts.gapellidos = txtapellidos.Text
dts.gdireccion = txtdireccion.Text
dts.gtelefono = txttelefono.Text
dts.gdni = txtdni.Text
If func.insertar(dts) Then
MessageBox.Show("Cliente registrado satisfactoriamente", "Guardando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
mostrar()
limpiar()
Else
MessageBox.Show("Cliente no registrado, intente nuevamente ",
"Guardando registros", MessageBoxButtons.OK, MessageBoxIcon.Error)
mostrar()
limpiar()

End If
Catch ex As Exception
MsgBox(ex.Message)

End Try
Else
MessageBox.Show("Falta ingresar algunos de los datos", "Guardando registros",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub

Private Sub datalistado_CellContentClick(sender As Object, e As


DataGridViewCellEventArgs) Handles datalistado.CellContentClick
If e.ColumnIndex = Me.datalistado.Columns.Item("Eliminar").Index Then
Dim chkcell As DataGridViewCheckBoxCell =
Me.datalistado.Rows(e.RowIndex).Cells("Eliminar")
chkcell.Value = Not chkcell.Value
End If
End Sub

Private Sub datalistado_CellClick(sender As Object, e As DataGridViewCellEventArgs)


Handles datalistado.CellClick
txtidcliente.Text = datalistado.SelectedCells.Item(1).Value
txtnombre.Text = datalistado.SelectedCells.Item(2).Value
txtapellidos.Text = datalistado.SelectedCells.Item(3).Value
txtdireccion.Text = datalistado.SelectedCells.Item(4).Value
txttelefono.Text = datalistado.SelectedCells.Item(5).Value
txtdni.Text = datalistado.SelectedCells.Item(6).Value
btneditar.Visible = True
btnguardar.Visible = False
End Sub
Private Sub btneditar_Click(sender As Object, e As EventArgs) Handles btneditar.Click
Dim result As DialogResult
result = MessageBox.Show("Realmente desea editar los datos del cliente",
"Modificando registros", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
If result = DialogResult.OK Then
If Me.ValidateChildren = True And txtnombre.Text <> "" And
txtapellidos.Text <> "" And txtdireccion.Text <> "" And txttelefono.Text <> "" And
txtdni.Text <> "" And txtidcliente.Text <> "" Then
Try
Dim dts As New vcliente
Dim func As New fcliente
dts.gidcliente = txtidcliente.Text
dts.gnombre = txtnombre.Text
dts.gapellidos = txtapellidos.Text
dts.gdireccion = txtdireccion.Text
dts.gtelefono = txttelefono.Text
dts.gdni = txtdni.Text
If func.editar(dts) Then
MessageBox.Show("Cliente modificado satisfactoriamente",
"Modificando registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
mostrar()
limpiar()
Else
MessageBox.Show("Cliente no modificado, intente nuevamente ",
"Modificando registros", MessageBoxButtons.OK, MessageBoxIcon.Error)
mostrar()
limpiar()

End If
Catch ex As Exception
MsgBox(ex.Message)

End Try
Else
MessageBox.Show("Falta ingresar algunos de los datos", "Modificando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub

Private Sub cbeliminar_CheckedChanged(sender As Object, e As EventArgs) Handles


cbeliminar.CheckedChanged
If cbeliminar.CheckState = CheckState.Checked Then
datalistado.Columns.Item("Eliminar").Visible = True
Else
datalistado.Columns.Item("Eliminar").Visible = False
End If
End Sub
Private Sub btneliminar_Click(sender As Object, e As EventArgs) Handles btneliminar.Click
Dim result As DialogResult
result = MessageBox.Show("Realmente desea eliminar los registros seleccionados",
"Eliminando registros", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
If result = DialogResult.OK Then
Try
For Each row As DataGridViewRow In datalistado.Rows
Dim marcado As Boolean =
Convert.ToBoolean(row.Cells("Eliminar").Value)
If marcado Then
Dim onekey As Integer =
Convert.ToInt32(row.Cells("idcliente").Value)
Dim vdb As New vcliente
Dim func As New fcliente
vdb.gidcliente = onekey
If func.eliminar(vdb) Then
Else
MessageBox.Show("Cliente no fue eliminado", "Eliminando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
Next
Call mostrar()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MessageBox.Show("Cancelando eliminacion de registros", "Eliminando registros",
MessageBoxButtons.OK, MessageBoxIcon.Information)
Call mostrar()
End If
Call limpiar()
End Sub

Private Sub datalistado_CellDoubleClick(sender As Object, e As


DataGridViewCellEventArgs) Handles datalistado.CellDoubleClick
If txtflag.Text = "1" Then
frmventas.txtidcliente.Text = datalistado.SelectedCells.Item(1).Value
frmventas.txtnombre_cliente.Text = datalistado.SelectedCells.Item(2).Value
Me.Close()
End If
End Sub
12. Creación del programa “producto”
12.1. Creación de las propiedades de la clase “vproducto”

Public Class vproducto


Dim idproducto, idcategoria As Integer
Dim nombre, descripcion As String
Dim precio_compra, precio_venta As Double
Dim fecha_vencimiento As Date
Dim imagen() As Byte

Public Property gidproducto


Get
Return idproducto
End Get
Set(ByVal value)
idproducto = value
End Set
End Property

Public Property gidcategoria


Get
Return idcategoria
End Get
Set(ByVal value)
idcategoria = value
End Set
End Property

Public Property gnombre


Get
Return nombre
End Get
Set(ByVal value)
nombre = value
End Set
End Property

Public Property gdescripcion


Get
Return descripcion
End Get
Set(ByVal value)
descripcion = value
End Set
End Property

Public Property gprecio_compra


Get
Return precio_compra
End Get
Set(ByVal value)
precio_compra = value
End Set
End Property

Public Property gprecio_venta


Get
Return precio_venta
End Get
Set(ByVal value)
precio_venta = value
End Set
End Property
Public Property gfecha_vencimiento
Get
Return fecha_vencimiento
End Get
Set(ByVal value)
fecha_vencimiento = value
End Set
End Property

Public Property gimagen


Get
Return imagen
End Get
Set(ByVal value)
imagen = value
End Set
End Property

Public Sub New()

End Sub

Public Sub New(ByVal idpruducto As Integer, ByVal idcategoria As Integer, ByVal


nombre As String, ByVal descripcion As String, ByVal precio_compra As Double, ByVal
precio_venta As Double, ByVal fecha_vencimiento As Date, ByVal imagen As Byte)
gidproducto = idproducto
gidcategoria = idcategoria
gnombre = nombre
gdescripcion = descripcion
gprecio_compra = precio_compra
gprecio_venta = precio_venta
gfecha_vencimiento = fecha_vencimiento
gimagen = imagen
End Sub
End Class

12.2. Creación de las funciones de la clase “fproducto”

Public Class fproducto


Inherits conexion
Dim cmd As New SqlClient.SqlCommand

Public Function mostrar() As DataTable


Try
conectado()
cmd = New SqlClient.SqlCommand("mostrarr_producto")
cmd.CommandType = CommandType.StoredProcedure

cmd.Connection = cnn

If cmd.ExecuteNonQuery Then
Dim dt As New DataTable
Dim da As New SqlClient.SqlDataAdapter(cmd)
da.Fill(dt)
Return dt
Else
Return Nothing
End If
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
Finally
desconectado()
End Try
End Function
Public Function insertar(ByVal dts As vproducto) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("insertarr_producto")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.AddWithValue("@idcategoria", dts.gidcategoria)
cmd.Parameters.AddWithValue("@nombre", dts.gnombre)
cmd.Parameters.AddWithValue("@descripcion", dts.gdescripcion)
cmd.Parameters.AddWithValue("@precio_compra", dts.gprecio_compra)
cmd.Parameters.AddWithValue("@precio_venta", dts.gprecio_venta)
cmd.Parameters.AddWithValue("@fecha_vencimiento",
dts.gfecha_vencimiento)
cmd.Parameters.AddWithValue("@imagen", dts.gimagen)
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
Finally
desconectado()
End Try
End Function
Public Function editar(ByVal dts As vproducto) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("editar_producto")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.AddWithValue("@idproducto", dts.gidproducto)
cmd.Parameters.AddWithValue("@idcategoria", dts.gidcategoria)
cmd.Parameters.AddWithValue("@nombre", dts.gnombre)
cmd.Parameters.AddWithValue("@descripcion", dts.gdescripcion)
cmd.Parameters.AddWithValue("@precio_compra", dts.gprecio_compra)
cmd.Parameters.AddWithValue("@precio_venta", dts.gprecio_venta)
cmd.Parameters.AddWithValue("@fecha_vencimiento",
dts.gfecha_vencimiento)
cmd.Parameters.AddWithValue("@imagen", dts.gimagen)
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
Finally
desconectado()
End Try
End Function
Public Function eliminar(ByVal dts As vproducto) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("eliminar_producto")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.Add("@idproducto", SqlDbType.NVarChar, 50).Value =
dts.gidproducto
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
End Class

12.3. Creación del formulario “frmproducto”

Imports System.ComponentModel

Public Class frmproducto


Private dt As New DataTable
Private Sub frmproducto_Load(sender As Object, e As EventArgs) Handles
MyBase.Load
mostrar()
End Sub
Public Sub limpiar()
btnguardar.Visible = True
btneditar.Visible = False
txtnombre.Text = ""
txtdescripcion.Text = "0"
txtprecio_compra.Text = "0"
txtprecio_venta.Text = ""
txtidproducto.Text = ""

imagen.Image = Nothing
imagen.BackgroundImage = My.Resources.transparente
imagen.SizeMode = PictureBoxSizeMode.StretchImage

End Sub
Private Sub mostrar()
Try
Dim func As New fproducto
dt = func.mostrar
datalistado.Columns.Item("Eliminar").Visible = False
If dt.Rows.Count <> 0 Then
datalistado.DataSource = dt
txtbuscar.Enabled = True
datalistado.ColumnHeadersVisible = True
inexistente.Visible = False
Else
datalistado.DataSource = Nothing
txtbuscar.Enabled = False
datalistado.ColumnHeadersVisible = False
inexistente.Visible = True
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
btnnuevo.Visible = True
btneditar.Visible = False
buscar()
End Sub
Private Sub buscar()
Try
Dim ds As New DataSet
ds.Tables.Add(dt.Copy)
Dim dv As New DataView(ds.Tables(0))
dv.RowFilter = cbocampo.Text & " like '" & txtbuscar.Text & "%'"

If dv.Count <> 0 Then


inexistente.Visible = False
datalistado.DataSource = dv
ocultar_columnas()
Else
inexistente.Visible = True
datalistado.DataSource = Nothing
End If

Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub ocultar_columnas()
datalistado.Columns(1).Visible = False
datalistado.Columns(2).Visible = False
End Sub

Private Sub txtnombre_Validating(sender As Object, e As


System.ComponentModel.CancelEventArgs) Handles txtnombre.Validating
If DirectCast(sender, TextBox).Text.Length > 0 Then
Me.erroricono.SetError(sender, "")
Else
Me.erroricono.SetError(sender, "Ingrese el nombre del cliente, dato
obligatorio")
End If
End Sub

Private Sub btnnuevo_Click(sender As Object, e As EventArgs) Handles


btnnuevo.Click
limpiar()
mostrar()

End Sub

Private Sub btnguardar_Click(sender As Object, e As EventArgs) Handles


btnguardar.Click
If Me.ValidateChildren = True And txtnombre.Text <> "" And
txtdescripcion.Text <> "" And txtprecio_compra.Text <> "" And txtprecio_venta.Text
<> "" Then
Try
Dim dts As New vproducto
Dim func As New fproducto
dts.gnombre = txtnombre.Text
dts.gidcategoria = txtidcategoria.Text
dts.gdescripcion = txtdescripcion.Text
dts.gprecio_compra = txtprecio_venta.Text
dts.gprecio_venta = txtprecio_venta.Text
dts.gfecha_vencimiento = txtfecha_vencimiento.Text

Dim ms As New IO.MemoryStream()

If Not imagen.Image Is Nothing Then


imagen.Image.Save(ms, imagen.Image.RawFormat)
Else
imagen.Image = My.Resources.transparente
imagen.Image.Save(ms, imagen.Image.RawFormat)
End If
dts.gimagen = ms.GetBuffer

If func.insertar(dts) Then
MessageBox.Show("Producto registrado satisfactoriamente",
"Guardando registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
mostrar()
limpiar()
Else
MessageBox.Show("Producto no registrado, intente nuevamente ",
"Guardando registros", MessageBoxButtons.OK, MessageBoxIcon.Error)
mostrar()
limpiar()

End If
Catch ex As Exception
MsgBox(ex.Message)

End Try
Else
MessageBox.Show("Falta ingresar algunos de los datos", "Guardando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub

Private Sub datalistado_CellContentClick(sender As Object, e As


DataGridViewCellEventArgs) Handles datalistado.CellContentClick
If e.ColumnIndex = Me.datalistado.Columns.Item("Eliminar").Index Then
Dim chkcell As DataGridViewCheckBoxCell =
Me.datalistado.Rows(e.RowIndex).Cells("Eliminar")
chkcell.Value = Not chkcell.Value
End If
End Sub

Private Sub datalistado_CellClick(sender As Object, e As


DataGridViewCellEventArgs) Handles datalistado.CellClick
txtidproducto.Text = datalistado.SelectedCells.Item(1).Value
txtidcategoria.Text = datalistado.SelectedCells.Item(2).Value
txtnom_categoria.Text = datalistado.SelectedCells.Item(3).Value
txtnombre.Text = datalistado.SelectedCells.Item(4).Value
txtdescripcion.Text = datalistado.SelectedCells.Item(5).Value
txtprecio_compra.Text = datalistado.SelectedCells.Item(6).Value
txtprecio_venta.Text = datalistado.SelectedCells.Item(7).Value
txtfecha_vencimiento.Text = datalistado.SelectedCells.Item(8).Value

imagen.BackgroundImage = Nothing
Dim b() As Byte = datalistado.SelectedCells.Item(9).Value
Dim ms As New IO.MemoryStream(b)
imagen.Image = Image.FromStream(ms)
imagen.SizeMode = PictureBoxSizeMode.StretchImage

btneditar.Visible = True
btnguardar.Visible = False
End Sub

Private Sub btneditar_Click(sender As Object, e As EventArgs) Handles


btneditar.Click
Dim result As DialogResult
result = MessageBox.Show("Realmente desea editar los datos del producto",
"Modificando registros", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
If result = DialogResult.OK Then
If Me.ValidateChildren = True And txtnombre.Text <> "" And
txtdescripcion.Text <> "" And txtprecio_compra.Text <> "" And txtprecio_venta.Text
<> "" And txtidproducto.Text <> "" Then
Try
Dim dts As New vproducto
Dim func As New fproducto
dts.gidproducto = txtidproducto.Text
dts.gnombre = txtnombre.Text
dts.gidcategoria = txtidcategoria.Text
dts.gdescripcion = txtdescripcion.Text
dts.gprecio_compra = txtprecio_venta.Text
dts.gprecio_venta = txtprecio_venta.Text
dts.gfecha_vencimiento = txtfecha_vencimiento.Text

Dim ms As New IO.MemoryStream()

If Not imagen.Image Is Nothing Then


imagen.Image.Save(ms, imagen.Image.RawFormat)
Else
imagen.Image = My.Resources.transparente
imagen.Image.Save(ms, imagen.Image.RawFormat)
End If
dts.gimagen = ms.GetBuffer

If func.editar(dts) Then
MessageBox.Show("Producto modificado satisfactoriamente",
"Modificando registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
mostrar()
limpiar()
Else
MessageBox.Show("Producto no modificado, intente nuevamente
", "Modificando registros", MessageBoxButtons.OK, MessageBoxIcon.Error)
mostrar()
limpiar()

End If
Catch ex As Exception
MsgBox(ex.Message)

End Try
Else
MessageBox.Show("Falta ingresar algunos de los datos", "Modificando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub

Private Sub cbeliminar_CheckedChanged(sender As Object, e As EventArgs) Handles


cbeliminar.CheckedChanged
If cbeliminar.CheckState = CheckState.Checked Then
datalistado.Columns.Item("Eliminar").Visible = True
Else
datalistado.Columns.Item("Eliminar").Visible = False
End If
End Sub
Private Sub btneliminar_Click(sender As Object, e As EventArgs) Handles
btneliminar.Click
Dim result As DialogResult
result = MessageBox.Show("Realmente desea eliminar los productos
seleccionados", "Eliminando registros", MessageBoxButtons.OKCancel,
MessageBoxIcon.Question)
If result = DialogResult.OK Then
Try
For Each row As DataGridViewRow In datalistado.Rows
Dim marcado As Boolean =
Convert.ToBoolean(row.Cells("Eliminar").Value)
If marcado Then
Dim onekey As Integer =
Convert.ToInt32(row.Cells("idproducto").Value)
Dim vdb As New vproducto
Dim func As New fproducto
vdb.gidproducto = onekey
If func.eliminar(vdb) Then
Else
MessageBox.Show("Producto no fue eliminado", "Eliminando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
Next
Call mostrar()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MessageBox.Show("Cancelando eliminacion de registros", "Eliminando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
Call mostrar()
End If
Call limpiar()
End Sub

Private Sub btncargar_Click(sender As Object, e As EventArgs) Handles


btncargar.Click
If dlg.ShowDialog() = DialogResult.OK Then
imagen.BackgroundImage = Nothing
imagen.Image = New Bitmap(dlg.FileName)
imagen.SizeMode = PictureBoxSizeMode.StretchImage
End If
End Sub

Private Sub btnlimpiar_Click(sender As Object, e As EventArgs) Handles


btnlimpiar.Click
imagen.Image = Nothing
imagen.BackgroundImage = My.Resources.transparente
imagen.SizeMode = PictureBoxSizeMode.StretchImage
End Sub

Private Sub btnbuscarcategoria_Click(sender As Object, e As EventArgs) Handles


btnbuscarcategoria.Click
frmcategoria.txtflag.Text = "1"
frmcategoria.ShowDialog()

End Sub

Private Sub datalistado_CellDoubleClick(sender As Object, e As


DataGridViewCellEventArgs) Handles datalistado.CellDoubleClick
If txtflag.Text = "1" Then
frmdetalle_venta.txtidproducto.Text =
datalistado.SelectedCells.Item(1).Visible
frmdetalle_venta.txtnombre_producto.Text =
datalistado.SelectedCells.Item(4).Visible
frmdetalle_venta.txtprecio_unitario.Text =
datalistado.SelectedCells.Item(7).Visible
Me.Close()
End If
End Sub

Private Sub txtflag_TextChanged(sender As Object, e As EventArgs) Handles


txtflag.TextChanged

End Sub
End Class

13. Creación del programan “venta”


13.1. Creación de las propiedades de la clase “vventa”

Public Class vventas


Dim idventa, idcliente As Integer
Dim fecha_venta As Date
Dim tipo_documento, num_documento As String

Public Property gidventa


Get
Return idventa
End Get
Set(ByVal value)
idventa = value
End Set
End Property

Public Property gidcliente


Get
Return idcliente
End Get
Set(ByVal value)
idcliente = value
End Set
End Property

Public Property gfecha_venta


Get
Return fecha_venta
End Get
Set(ByVal value)
fecha_venta = value
End Set
End Property

Public Property gtipo_documento


Get
Return tipo_documento
End Get
Set(ByVal value)
tipo_documento = value
End Set
End Property

Public Property gnum_documento


Get
Return num_documento
End Get
Set(ByVal value)
num_documento = value
End Set
End Property

Public Sub New()

End Sub

Public Sub New(ByVal idventa As Integer, ByVal idcliente As Integer, ByVal


fecha_venta As Date, ByVal tipo_documento As String, ByVal num_documento As String)
gidventa = idventa
gidcliente = idcliente
gfecha_venta = fecha_venta
gtipo_documento = tipo_documento
gnum_documento = num_documento

End Sub
End Class

13.2. Creación de las funciones de la clase “fventa”

Public Class fventa


Inherits conexion
Dim cmd As New SqlClient.SqlCommand

Public Function mostrar() As DataTable


Try
conectado()
cmd = New SqlClient.SqlCommand("mostrar_ventas")
cmd.CommandType = CommandType.StoredProcedure

cmd.Connection = cnn

If cmd.ExecuteNonQuery Then
Dim dt As New DataTable
Dim da As New SqlClient.SqlDataAdapter(cmd)
da.Fill(dt)
Return dt
Else
Return Nothing
End If
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
Finally
desconectado()
End Try
End Function
Public Function insertar(ByVal dts As vventas) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("insertar_ventas")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.AddWithValue("@idcliente", dts.gidcliente)
cmd.Parameters.AddWithValue("@fecha_venta", dts.gfecha_venta)
cmd.Parameters.AddWithValue("@tipo_documento", dts.gtipo_documento)
cmd.Parameters.AddWithValue("@num_documento", dts.gnum_documento)
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
Finally
desconectado()
End Try
End Function
Public Function editar(ByVal dts As vventas) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("editar_ventas")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.AddWithValue("@idventa", dts.gidventa)
cmd.Parameters.AddWithValue("@idcliente", dts.gidcliente)
cmd.Parameters.AddWithValue("@fecha_venta", dts.gfecha_venta)
cmd.Parameters.AddWithValue("@tipo_documento", dts.gtipo_documento)
cmd.Parameters.AddWithValue("@num_documento", dts.gnum_documento)
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
Finally
desconectado()
End Try
End Function
Public Function eliminar(ByVal dts As vventas) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("eliminar_ventas")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.Add("@idventa", SqlDbType.NVarChar, 50).Value =
dts.gidventa
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
End Class

13.3. Creación del formulario “frmventas”


Imports System.ComponentModel

Public Class frmventas


Private dt As New DataTable
Private Sub frmventas_Load(sender As Object, e As EventArgs) Handles MyBase.Load
mostrar()
End Sub
Public Sub limpiar()
btnguardar.Visible = True
btneditar.Visible = False
txtidcliente.Text = ""
txtnombre_cliente.Text = ""
txtnum_documento.Text = ""
End Sub
Private Sub mostrar()
Try
Dim func As New fventa
dt = func.mostrar
datalistado.Columns.Item("Eliminar").Visible = False
If dt.Rows.Count <> 0 Then
datalistado.DataSource = dt
txtbuscar.Enabled = True
datalistado.ColumnHeadersVisible = True
inexistente.Visible = False
Else
datalistado.DataSource = Nothing
txtbuscar.Enabled = False
datalistado.ColumnHeadersVisible = False
inexistente.Visible = True
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
btnnuevo.Visible = True
btneditar.Visible = False
buscar()
End Sub
Private Sub buscar()
Try
Dim ds As New DataSet
ds.Tables.Add(dt.Copy)
Dim dv As New DataView(ds.Tables(0))
dv.RowFilter = cbocampo.Text & " like '" & txtbuscar.Text & "%'"

If dv.Count <> 0 Then


inexistente.Visible = False
datalistado.DataSource = dv
ocultar_columnas()
Else
inexistente.Visible = True
datalistado.DataSource = Nothing
End If

Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub ocultar_columnas()
datalistado.Columns(1).Visible = False
datalistado.Columns(4).Visible = False
End Sub

Private Sub btnnuevo_Click(sender As Object, e As EventArgs) Handles


btnnuevo.Click
limpiar()
mostrar()

End Sub

Private Sub btnguardar_Click(sender As Object, e As EventArgs) Handles


btnguardar.Click
If Me.ValidateChildren = True And txtidcliente.Text <> "" And
txtnombre_cliente.Text <> "" And txtnum_documento.Text <> "" Then
Try
Dim dts As New vventas
Dim func As New fventa
dts.gidcliente = txtidcliente.Text
dts.gfecha_venta = txtfecha.Text
dts.gtipo_documento = cbtipo_documento.Text
dts.gnum_documento = txtnum_documento.Text
If func.insertar(dts) Then
MessageBox.Show("Venta registrado satisfactoriamente vamos
añadir productos", "Guardando registros", MessageBoxButtons.OK,
MessageBoxIcon.Information)
mostrar()
limpiar()
cargar_detalle()

Else
MessageBox.Show("Venta no registrado, intente nuevamente ",
"Guardando registros", MessageBoxButtons.OK, MessageBoxIcon.Error)
mostrar()
limpiar()

End If
Catch ex As Exception
MsgBox(ex.Message)

End Try
Else
MessageBox.Show("Falta ingresar algunos de los datos", "Guardando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub

Private Sub datalistado_CellContentClick(sender As Object, e As


DataGridViewCellEventArgs) Handles datalistado.CellContentClick
If e.ColumnIndex = Me.datalistado.Columns.Item("Eliminar").Index Then
Dim chkcell As DataGridViewCheckBoxCell =
Me.datalistado.Rows(e.RowIndex).Cells("Eliminar")
chkcell.Value = Not chkcell.Value
End If
End Sub

Private Sub datalistado_CellClick(sender As Object, e As


DataGridViewCellEventArgs) Handles datalistado.CellClick
txtidventa.Text = datalistado.SelectedCells.Item(1).Value
txtidcliente.Text = datalistado.SelectedCells.Item(2).Value
txtnombre_cliente.Text = datalistado.SelectedCells.Item(3).Value
txtfecha.Text = datalistado.SelectedCells.Item(5).Value
cbtipo_documento.Text = datalistado.SelectedCells.Item(6).Value
txtnum_documento.Text = datalistado.SelectedCells.Item(7).Value
btneditar.Visible = True
btnguardar.Visible = False
End Sub

Private Sub btneditar_Click(sender As Object, e As EventArgs) Handles


btneditar.Click
Dim result As DialogResult
result = MessageBox.Show("Realmente desea editar los datos de la venta",
"Modificando registros", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
If result = DialogResult.OK Then
If Me.ValidateChildren = True And txtidcliente.Text <> "" And
txtnum_documento.Text <> "" And txtidventa.Text <> "" Then
Try
Dim dts As New vventas
Dim func As New fventa
dts.gidventa = txtidventa.Text
dts.gidcliente = txtidcliente.Text
dts.gfecha_venta = txtfecha.Text
dts.gtipo_documento = cbtipo_documento.Text
dts.gnum_documento = txtnum_documento.Text
If func.editar(dts) Then
MessageBox.Show("Venta modificado satisfactoriamente",
"Modificando registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
mostrar()
limpiar()
Else
MessageBox.Show("Venta no modificado, intente nuevamente ",
"Modificando registros", MessageBoxButtons.OK, MessageBoxIcon.Error)
mostrar()
limpiar()

End If
Catch ex As Exception
MsgBox(ex.Message)

End Try
Else
MessageBox.Show("Falta ingresar algunos de los datos", "Modificando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub

Private Sub cbeliminar_CheckedChanged(sender As Object, e As EventArgs) Handles


cbeliminar.CheckedChanged
If cbeliminar.CheckState = CheckState.Checked Then
datalistado.Columns.Item("Eliminar").Visible = True
Else
datalistado.Columns.Item("Eliminar").Visible = False
End If
End Sub

Private Sub txtbuscar_TextChanged(sender As Object, e As EventArgs) Handles


txtbuscar.TextChanged
buscar()
End Sub

Private Sub cargar_detalle()


frmdetalle_venta.txtidventa.Text = datalistado.SelectedCells.Item(1).Value
frmdetalle_venta.txtidcliente.Text = datalistado.SelectedCells.Item(2).Value
frmdetalle_venta.txtnombre_cliente.Text =
datalistado.SelectedCells.Item(3).Value
frmdetalle_venta.txtfecha.Text = datalistado.SelectedCells.Item(5).Value
frmdetalle_venta.cbtipo_documento.Text =
datalistado.SelectedCells.Item(6).Value
frmdetalle_venta.txtnum_documento.Text =
datalistado.SelectedCells.Item(7).Value

frmdetalle_venta.ShowDialog()
End Sub

Private Sub datalistado_CellDoubleClick(sender As Object, e As


DataGridViewCellEventArgs) Handles datalistado.CellDoubleClick
cargar_detalle()
End Sub
Private Sub btnbuscar_cliente_Click(sender As Object, e As EventArgs) Handles
btnbuscar_cliente.Click
frmcliente.txtflag.Text = "1"
frmcliente.ShowDialog()
End Sub

End Class

14. Creación del programa “detalle_venta”


14.1. Creación de las propiedades de la clase “vdetalle_venta”

Public Class fdetalle_venta


Inherits conexion
Dim cmd As New SqlClient.SqlCommand

Public Function mostrar() As DataTable


Try
conectado()
cmd = New SqlClient.SqlCommand("mostrar_detalle_ventas")
cmd.CommandType = CommandType.StoredProcedure

cmd.Connection = cnn

If cmd.ExecuteNonQuery Then
Dim dt As New DataTable
Dim da As New SqlClient.SqlDataAdapter(cmd)
da.Fill(dt)
Return dt
Else
Return Nothing
End If
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
Finally
desconectado()
End Try
End Function
Public Function insertar(ByVal dts As vdetalle_venta) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("insertar_detalle_ventas")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.AddWithValue("@idventa", dts.gidventa)
cmd.Parameters.AddWithValue("@idproducto", dts.gidproducto)
cmd.Parameters.AddWithValue("@cantidad", dts.gcantidad)
cmd.Parameters.AddWithValue("@precio_unitario", dts.gprecio_unitario)
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
Finally
desconectado()
End Try
End Function
Public Function editar(ByVal dts As vdetalle_venta) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("editar_detalle_ventas")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.AddWithValue("@iddetalle_venta", dts.giddetalle_venta)
cmd.Parameters.AddWithValue("@idventa", dts.gidventa)
cmd.Parameters.AddWithValue("@idproducto", dts.gidproducto)
cmd.Parameters.AddWithValue("@cantidad", dts.gcantidad)
cmd.Parameters.AddWithValue("@precio_unitario", dts.gprecio_unitario)
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
Finally
desconectado()
End Try
End Function
Public Function eliminar(ByVal dts As vdetalle_venta) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("eliminar_detalle_ventas")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.Add("@iddetalle_venta", SqlDbType.NVarChar, 50).Value =
dts.giddetalle_venta
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
End Class

14.2. Creación de las funciones para la clase “fdetalle_venta”

Public Class fdetalle_venta


Inherits conexion
Dim cmd As New SqlClient.SqlCommand

Public Function mostrar() As DataTable


Try
conectado()
cmd = New SqlClient.SqlCommand("mostrar_detalle_ventas")
cmd.CommandType = CommandType.StoredProcedure

cmd.Connection = cnn

If cmd.ExecuteNonQuery Then
Dim dt As New DataTable
Dim da As New SqlClient.SqlDataAdapter(cmd)
da.Fill(dt)
Return dt
Else
Return Nothing
End If
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
Finally
desconectado()
End Try
End Function
Public Function insertar(ByVal dts As vdetalle_venta) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("insertar_detalle_ventas")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.AddWithValue("@idventa", dts.gidventa)
cmd.Parameters.AddWithValue("@idproducto", dts.gidproducto)
cmd.Parameters.AddWithValue("@cantidad", dts.gcantidad)
cmd.Parameters.AddWithValue("@precio_unitario", dts.gprecio_unitario)
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
Finally
desconectado()
End Try
End Function
Public Function editar(ByVal dts As vdetalle_venta) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("editar_detalle_ventas")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.AddWithValue("@iddetalle_venta", dts.giddetalle_venta)
cmd.Parameters.AddWithValue("@idventa", dts.gidventa)
cmd.Parameters.AddWithValue("@idproducto", dts.gidproducto)
cmd.Parameters.AddWithValue("@cantidad", dts.gcantidad)
cmd.Parameters.AddWithValue("@precio_unitario", dts.gprecio_unitario)
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
Finally
desconectado()
End Try
End Function
Public Function eliminar(ByVal dts As vdetalle_venta) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("eliminar_detalle_ventas")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.Add("@iddetalle_venta", SqlDbType.NVarChar, 50).Value =
dts.giddetalle_venta
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
End Class

14.3. Creación del formulario “frmdetalle_venta”

Imports System.ComponentModel
Public Class frmdetalle_venta
Private dt As New DataTable
Private Sub frmdetalle_venta_Load(sender As Object, e As EventArgs) Handles
MyBase.Load
mostrar()
End Sub
Public Sub limpiar()
btnguardar.Visible = True
txtidproducto.Text = ""
txtnombre_producto.Text = ""
txtprecio_unitario.Text = ""
txtcantidad.Text = 0
End Sub
Private Sub mostrar()
Try
Dim func As New fdetalle_venta
dt = func.mostrar
datalistado.Columns.Item("Eliminar").Visible = False

If dt.Rows.Count <> 0 Then


datalistado.DataSource = dt
datalistado.ColumnHeadersVisible = True
inexistente.Visible = False
Else
datalistado.DataSource = Nothing
datalistado.ColumnHeadersVisible = False
inexistente.Visible = True
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
btnnuevo.Visible = True
buscar()
End Sub
Private Sub buscar()
Try
Dim ds As New DataSet
ds.Tables.Add(dt.Copy)
Dim dv As New DataView(ds.Tables(0))
dv.RowFilter = "idventa='" & txtidventa.Text & "'"

If dv.Count <> 0 Then


inexistente.Visible = False
datalistado.DataSource = dv
ocultar_columnas()
Else
inexistente.Visible = True
datalistado.DataSource = Nothing
End If

Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub ocultar_columnas()
datalistado.Columns(1).Visible = False
datalistado.Columns(2).Visible = False
datalistado.Columns(3).Visible = False

End Sub

Private Sub btnnuevo_Click(sender As Object, e As EventArgs) Handles btnnuevo.Click


limpiar()
mostrar()

End Sub

Private Sub btnguardar_Click(sender As Object, e As EventArgs) Handles


btnguardar.Click
If Me.ValidateChildren = True And txtidproducto.Text <> "" And txtcantidad.Text
<> "" And txtprecio_unitario.Text <> "" Then
Try
Dim dts As New vdetalle_venta
Dim func As New fdetalle_venta
dts.gidventa = txtidventa.Text
dts.gidproducto = txtidproducto.Text
dts.gcantidad = txtcantidad.Text
dts.gprecio_unitario = txtprecio_unitario.Text
If func.insertar(dts) Then
MessageBox.Show("Articulo fue añadido correctamente a la venta",
"Guardando registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
mostrar()
limpiar()
Else
MessageBox.Show("Articulo no fue añadido correctamente a la venta
intente nuevamente ", "Guardando registros", MessageBoxButtons.OK,
MessageBoxIcon.Error)
mostrar()
limpiar()

End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MessageBox.Show("Falta ingresar algunos de los datos", "Guardando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub

Private Sub datalistado_CellContentClick(sender As Object, e As


DataGridViewCellEventArgs) Handles datalistado.CellContentClick
If e.ColumnIndex = Me.datalistado.Columns.Item("Eliminar").Index Then
Dim chkcell As DataGridViewCheckBoxCell =
Me.datalistado.Rows(e.RowIndex).Cells("Eliminar")
chkcell.Value = Not chkcell.Value
End If
End Sub

Private Sub cbeliminar_CheckedChanged(sender As Object, e As EventArgs) Handles


cbeliminar.CheckedChanged
If cbeliminar.CheckState = CheckState.Checked Then
datalistado.Columns.Item("Eliminar").Visible = True
Else
datalistado.Columns.Item("Eliminar").Visible = False
End If
End Sub

Private Sub txtbuscar_TextChanged(sender As Object, e As EventArgs)


buscar()
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


Dim result As DialogResult
result = MessageBox.Show("Realmente desea quitar los articulos de la venta",
"Eliminando registros", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
If result = DialogResult.OK Then
Try
For Each row As DataGridViewRow In datalistado.Rows
Dim marcado As Boolean =
Convert.ToBoolean(row.Cells("Eliminar").Value)
If marcado Then
Dim onekey As Integer =
Convert.ToInt32(row.Cells("iddetalle_venta").Value)
Dim vdb As New vdetalle_venta
Dim func As New fdetalle_venta
vdb.giddetalle_venta = onekey
vdb.gidproducto = datalistado.SelectedCells.Item(3).Value
vdb.gidventa = datalistado.SelectedCells.Item(2).Value
vdb.gcantidad = datalistado.SelectedCells.Item(5).Value
If func.eliminar(vdb) Then

Else
MessageBox.Show("Articulo fue quitado de la venta",
"Eliminando registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
Next
Call mostrar()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MessageBox.Show("Cancelando eliminacion de registros", "Eliminando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
Call mostrar()
End If
Call limpiar()
End Sub

Private Sub btnbuscar_producto_Click(sender As Object, e As EventArgs) Handles


btnbuscar_producto.Click
frmproducto.txtflag.Text = "1"
frmproducto.ShowDialog()
End Sub

Private Sub txtcantidad_ValueChanged(sender As Object, e As EventArgs) Handles


txtcantidad.ValueChanged
Dim cant As Double
cant = txtcantidad.Value
If txtcantidad.Value = 0 Then
btnguardar.Visible = 0
Else
btnguardar.Visible = 1
End If
End Sub

Private Sub btnbuscar_producto_DoubleClick(sender As Object, e As EventArgs)


Handles btnbuscar_producto.DoubleClick

End Sub

Private Sub txtidproducto_TextChanged(sender As Object, e As EventArgs) Handles


txtidproducto.TextChanged

End Sub

Private Sub btncancelar_Click(sender As Object, e As EventArgs) Handles


btncancelar.Click
Me.Visible = False
frmventas.Visible = True
End Sub
End Class

15. Creación del programa “categoria”


15.1. Creación de las propiedades de la clase “vcategoria”

Public Class vcategoria


Dim idcategoria As Integer
Dim nombre_categoria As String

Public Property gidcategoria


Get
Return idcategoria
End Get
Set(ByVal value)
idcategoria = value
End Set
End Property

Public Property gnombre_categoria


Get
Return nombre_categoria
End Get
Set(ByVal value)
nombre_categoria = value
End Set
End Property

Public Sub New()

End Sub
Public Sub New(ByVal idcategoria As Integer, nombre_categoria As String)
gidcategoria = idcategoria
gnombre_categoria = nombre_categoria

End Sub
End Class

15.2. Creación de las funciones de la clase “fcategoria”

Public Class fcategoria


Inherits conexion
Dim cmd As New SqlClient.SqlCommand
Public Function mostrar() As DataTable
Try
conectado()
cmd = New SqlClient.SqlCommand("mostrar_categoria")
cmd.CommandType = CommandType.StoredProcedure

cmd.Connection = cnn

If cmd.ExecuteNonQuery Then
Dim dt As New DataTable
Dim da As New SqlClient.SqlDataAdapter(cmd)
da.Fill(dt)
Return dt
Else
Return Nothing
End If
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
Finally
desconectado()
End Try
End Function
Public Function insertar(ByVal dts As vcategoria) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("insertar_categoria")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.AddWithValue("@nombre_categoria", dts.gnombre_categoria)
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
Finally
desconectado()
End Try
End Function
Public Function editar(ByVal dts As vcategoria) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("editar_categoria")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.AddWithValue("@idcategoria", dts.gidcategoria)
cmd.Parameters.AddWithValue("@nombre_categoria", dts.gnombre_categoria)
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
Finally
desconectado()
End Try
End Function
Public Function eliminar(ByVal dts As vcategoria) As Boolean
Try
conectado()
cmd = New SqlClient.SqlCommand("eliminar_categoria")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.Add("@idcategoria", SqlDbType.NVarChar, 50).Value =
dts.gidcategoria
If cmd.ExecuteNonQuery Then
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
End Class

15.3. Creación del formulario “ftmcategoria”

Imports System.ComponentModel

Public Class frmcategoria


Private dt As New DataTable
Private Sub frmcategoria_Load(sender As Object, e As EventArgs) Handles MyBase.Load
mostrar()
End Sub
Public Sub limpiar()
btnguardar.Visible = True
btneditar.Visible = False
txtnombre.Text = ""
txtidcategoria.Text = ""
End Sub
Private Sub mostrar()
Try
Dim func As New fcategoria
dt = func.mostrar
datalistado.Columns.Item("Eliminar").Visible = False
If dt.Rows.Count <> 0 Then
datalistado.DataSource = dt
txtbuscar.Enabled = True
datalistado.ColumnHeadersVisible = True
inexistente.Visible = False
Else
datalistado.DataSource = Nothing
txtbuscar.Enabled = False
datalistado.ColumnHeadersVisible = False
inexistente.Visible = True
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
btnnuevo.Visible = True
btneditar.Visible = False
buscar()
End Sub
Private Sub buscar()
Try
Dim ds As New DataSet
ds.Tables.Add(dt.Copy)
Dim dv As New DataView(ds.Tables(0))
dv.RowFilter = cbocampo.Text & " like '" & txtbuscar.Text & "%'"

If dv.Count <> 0 Then


inexistente.Visible = False
datalistado.DataSource = dv
ocultar_columnas()
Else
inexistente.Visible = True
datalistado.DataSource = Nothing
End If

Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub ocultar_columnas()
datalistado.Columns(1).Visible = False

End Sub

Private Sub btnnuevo_Click(sender As Object, e As EventArgs) Handles btnnuevo.Click


limpiar()
mostrar()

End Sub

Private Sub btnguardar_Click(sender As Object, e As EventArgs) Handles


btnguardar.Click
If Me.ValidateChildren = True And txtnombre.Text <> "" Then
Try
Dim dts As New vcategoria
Dim func As New fcategoria
dts.gnombre_categoria = txtnombre.Text
If func.insertar(dts) Then
MessageBox.Show("Categoria registrado satisfactoriamente",
"Guardando registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
mostrar()
limpiar()
Else
MessageBox.Show("Categoria no registrado, intente nuevamente ",
"Guardando registros", MessageBoxButtons.OK, MessageBoxIcon.Error)
mostrar()
limpiar()

End If
Catch ex As Exception
MsgBox(ex.Message)

End Try
Else
MessageBox.Show("Falta ingresar algunos de los datos", "Guardando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub

Private Sub datalistado_CellContentClick(sender As Object, e As


DataGridViewCellEventArgs) Handles datalistado.CellContentClick
If e.ColumnIndex = Me.datalistado.Columns.Item("Eliminar").Index Then
Dim chkcell As DataGridViewCheckBoxCell =
Me.datalistado.Rows(e.RowIndex).Cells("Eliminar")
chkcell.Value = Not chkcell.Value
End If
End Sub

Private Sub datalistado_CellClick(sender As Object, e As DataGridViewCellEventArgs)


Handles datalistado.CellClick
txtidcategoria.Text = datalistado.SelectedCells.Item(1).Value
txtnombre.Text = datalistado.SelectedCells.Item(2).Value
btneditar.Visible = True
btnguardar.Visible = False
End Sub

Private Sub btneditar_Click(sender As Object, e As EventArgs) Handles


btneditar.Click
Dim result As DialogResult
result = MessageBox.Show("Realmente desea editar los datos de la categoria",
"Modificando registros", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
If result = DialogResult.OK Then
If Me.ValidateChildren = True And txtnombre.Text <> "" And
txtidcategoria.Text <> "" Then
Try
Dim dts As New vcategoria
Dim func As New fcategoria
dts.gidcategoria = txtidcategoria.Text
dts.gnombre_categoria = txtnombre.Text
If func.editar(dts) Then
MessageBox.Show("Categoria modificado satisfactoriamente",
"Modificando registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
mostrar()
limpiar()
Else
MessageBox.Show("Categoria no modificado, intente nuevamente ",
"Modificando registros", MessageBoxButtons.OK, MessageBoxIcon.Error)
mostrar()
limpiar()
End If
Catch ex As Exception
MsgBox(ex.Message)

End Try
Else
MessageBox.Show("Falta ingresar algunos de los datos", "Modificando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub

Private Sub cbeliminar_CheckedChanged(sender As Object, e As EventArgs) Handles


cbeliminar.CheckedChanged
If cbeliminar.CheckState = CheckState.Checked Then
datalistado.Columns.Item("Eliminar").Visible = True
Else
datalistado.Columns.Item("Eliminar").Visible = False
End If
End Sub

Private Sub btneliminar_Click(sender As Object, e As EventArgs) Handles


btneliminar.Click
Dim result As DialogResult
result = MessageBox.Show("Realmente desea eliminar las categorias
seleccionados", "Eliminando registros", MessageBoxButtons.OKCancel,
MessageBoxIcon.Question)
If result = DialogResult.OK Then
Try
For Each row As DataGridViewRow In datalistado.Rows
Dim marcado As Boolean =
Convert.ToBoolean(row.Cells("Eliminar").Value)
If marcado Then
Dim onekey As Integer =
Convert.ToInt32(row.Cells("idcategoria").Value)
Dim vdb As New vcategoria
Dim func As New fcategoria
vdb.gidcategoria = onekey
If func.eliminar(vdb) Then
Else
MessageBox.Show("Categoria no fue eliminado", "Eliminando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
Next
Call mostrar()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MessageBox.Show("Cancelando eliminacion de registros", "Eliminando
registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
Call mostrar()
End If
Call limpiar()
End Sub

Private Sub txtnombre_Validating(sender As Object, e As CancelEventArgs) Handles


txtnombre.Validating
If DirectCast(sender, TextBox).Text.Length > 0 Then
Me.erroricono.SetError(sender, "")
Else
Me.erroricono.SetError(sender, "Ingrese el nombre de la categoria, dato
obligatorio")
End If
End Sub

Private Sub datalistado_CellDoubleClick(sender As Object, e As


DataGridViewCellEventArgs) Handles datalistado.CellDoubleClick
If txtflag.Text = "1" Then
frmproducto.txtidcategoria.Text = datalistado.SelectedCells.Item(1).Value
frmproducto.txtnom_categoria.Text = datalistado.SelectedCells.Item(2).Value
Me.Close()
End If
End Sub
End Class

Potrebbero piacerti anche