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