Вы находитесь на странице: 1из 9

APLICACIÓN CON IMÁGENES

Teniendo como bdd NEPTUNO en la que se tiene la tabla clientes , se va a


realizar un formulario para almacenar y leer imágenes en una tabla ., a través
del siguiente formulario:

El código de cliente se genera.

Primer paso vamos a elaborar los procedimientos almacenados en sql 2005

---Creacion de la tabla--
use neptuno
Create table clientesImagen(
cli_cod char(5) Primary key,
cli_nom varchar(100),
cli_imagen image
)
Select * from categorias
---Procedimientos Almacenados ---
Create procedure usp_clientesImagen
As
Select * from clientesimagen
Go
Create procedure usp_busclientesimagen
@cli_cod char(5)
As
Select * from clientesimagen Where cli_cod=@cli _cod
Go
Create procedure usp_generacodigoclientesImagen
@cli_cod varchar(5) Output
As
Set @cli_cod=(select max(cli_cod) from clientesImagen)
Set @cli_cod='C'+Right('0000'+ltrim(right(isnull(@cli_cod,'00000'),4)+1),4)
Go
Declare @codigo char(5)
exec usp_generacodigoclientesImagen @codigo output
print @codigo

Create procedure usp_insertarclienteimagen


@cli_cod char(5),@cli_nom varchar(100),@cli_imagen image
As
Insert Into clientesImagen values(@cli_cod,@cli_nom,@cli_imagen)
Go

---Realizar procedimiento para actualizar el dato del cliente


Create proc usp_ActualizarDatos
@cli_cod char(5),@cli_nom varchar(100),@cli_imagen image
As
Update ClientesImagen Set cli_nom=@cli_nom,
cli_imagen=@cli_imagen Where cli_cod=@cli_cod
Go

Paso 2: crear la librería de clases en visual net

EMPLEANDO CAPAS:

Librería de negocios: PROYECTO LIBRERIADENEGOCIO .VBPROJ

---Aplicacion -- Guardando imagenes en SQL Server 2005 ---


la clase ClsFunciones.vb

Imports System.Data
Imports System.Data.SqlClient
Public Class ClsFunciones
Dim cn As New SqlConnection(cadenasql)
Public Function MostrarClientes() As DataTable
Dim da As New SqlDataAdapter("usp_clientesImagen", cn)
Dim tbl As New DataTable
da.Fill(tbl)
Return tbl
End Function
Public Function BusquedadeClientes(ByVal cli_cod As String) _
As DataTable
Dim cmd As New SqlCommand("usp_busclientesimagen", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@cli_cod", SqlDbType.Char, 5).Value = cli_cod
cn.Open()
Dim tbl As New DataTable
tbl.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection))
Return tbl
End Function
Public Function CodigodeCliente() As String
Dim cmd As New SqlCommand("usp_generacodigoclientesImagen", cn)
cmd.CommandType = CommandType.StoredProcedure
'definiendo el parametro de salida
cmd.Parameters.Add("@cli_cod", SqlDbType.Char, 5).Direction = _
ParameterDirection.Output
cn.Open()
cmd.ExecuteNonQuery() 'ejecutando el SP
cn.Close()
'recuperando el codigo generado C0000 del parametro de salida
Return cmd.Parameters("@cli_cod").Value
End Function
Public Function GrabarCliente(ByVal cli_cod As String, _
ByVal cli_nom As String, ByVal imagen As Byte()) As Integer
Dim cmd As New SqlCommand("usp_insertarclienteimagen", cn)
cmd.CommandType = CommandType.StoredProcedure
'definiendo los parametros de entrada
cmd.Parameters.Add("@cli_cod", SqlDbType.Char, 5).Value = cli_cod
cmd.Parameters.Add("@cli_nom", SqlDbType.VarChar, 100).Value = _
cli_nom
cmd.Parameters.Add("@cli_imagen", SqlDbType.Image).Va lue = imagen
cn.Open()
'si el cliente es agregando en la tabla,ExecuteNonQuery
'devolvera el valor numerico 1 como fila afectada
Dim nresp As Integer = cmd.ExecuteNonQuery()
cn.Close()
Return nresp
End Function
End Class

EL MODULO DE CONEXIÓN: MODULE1.VB

Module Module1
Public cadenasql As String = "Server=(local);" & _
"Integrated Security=SSPI;Database=Neptuno"
End Module

El formulario en la capa de presentación: Form1.vb

Imports System.data
Imports System.IO 'Para manipular archivos
Public Class Form1
'Creando el objeto mediante la libreria de clase
Dim obj As New LIBRERIANEGOCIO.ClsFunciones
Dim bytes() As Byte 'arreglo de bytes para la imagen
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
lblcodigo.Text = obj.CodigodeCliente
MostrarClientes()
End Sub
Sub MostrarClientes()
Dim tbl As DataTable = obj.Mostr arClientes
DataGridView1.DataSource = tbl
lblNumReg.Text = tbl.Rows.Count
'redimensionando las celdas
DataGridView1.AutoResizeRows( _
DataGridViewAutoSizeRowsMode.AllCells)
End Sub
Private Sub CmdBuscarImag en_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles CmdBuscarImagen.Click
Try
'OpenFileDialog=> abrir cuadro de archivos
Dim fileimagen As New OpenFileDialog
fileimagen.Filter = _
"Archivo imagen(*.bmp,*.jpg,*.gif)|*.jpg"
fileimagen.ShowDialog() 'abrir cuadro de busqueda
'fileimagen.FileName=>recupera el nombre del archivo
If String.IsNullOrEmpty(fileimagen.FileName) Then
MessageBox.Show("Seleccione una imagen", "Imagen")
Exit Sub
End If
Dim strfoto As String = fileimagen.FileName
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
'Image.FromFile=>carga imagen desde archivo
PictureBox1.Image = Image.FromFile(strfoto)
'recuperando la informacion del archivo imagen
Dim fileinfo As New FileInfo(strfoto)
'obteniendo la longitud del archivo
Dim longfileimagen As Long = fileinfo.Length
'abriendo el archivo en memoria para su conversion
Dim fs As FileStream = New FileStream(strfoto, _
FileMode.Open, FileAccess.Read)
'asignando el espacio del arreglo,mediante la
'longitud de la imagen
ReDim bytes(longfileimagen)
'iniciando la lectura de bytes,en base a la longitud
'del archivo de imagen
fs.Read(bytes, 0, longfilei magen)
fs.Close() 'cerrar memoria
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub CmdNuevo_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles CmdNuevo.Clic k
lblcodigo.Text = obj.CodigodeCliente
txtnombres.Clear() : txtnombres.Focus()
PictureBox1.Image = Nothing 'quitando imagen
End Sub
Private Sub CmdGrabar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles CmdGrabar.Click
If txtnombres.Text = "" Then
MessageBox.Show("Ingrese el nombre del Cliente")
Exit Sub
End If
If PictureBox1.Image Is Nothing Then
MessageBox.Show("Seleccione una imagen", "Imagenes")
Exit Sub
End If
Dim nres As Integer = obj.GrabarCliente(lblcodigo.Text, _
txtnombres.Text, bytes)
If nres = 1 Then
MessageBox.Show("El Cliente fue registrado", "Insercion")
MostrarClientes()
End If
End Sub
Private Sub CmdBusqueda_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles CmdBusqueda.Click
Try
Dim codigo As String = InputBox("Ingrese un codigo " & _
" de cliente", "Busqueda de Clientes", "C0001")
If codigo = "" Then
MessageBox.Show("No ha ingresado el codigo de busqueda")
Exit Sub 'salir del procedimiento
End If
'recuperando los datos en un tabla del cliente encontrado
Dim tbl As DataTable = obj.BusquedadeClientes(codigo)
'mostrando los datos del cliente
'tbl.rows(fila)(columna)
lblcodigo.Text = tbl.Rows(0)(0).ToString
txtnombres.Text = tbl.Rows(0)(1).ToString
'recuperando la imagen en un tipo arreglo de Byte
bytes = CType(tbl.Rows(0)(2), Byte())
'creando un archivo vacio con la fecha actual
Dim archivoimagen As String = CStr(DateTime.Now.ToFileTime)
'abriendo el archivo para su creacion en memoria
'con(filestream)
Dim fs As New System.IO .FileStream(archivoimagen, _
IO.FileMode.CreateNew, IO.FileAccess.Write)
'escribiendo los bytes
fs.Write(bytes, 0, bytes.Length)
fs.Close()
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox1.Image = Image.FromFile(archivoimagen)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub

Private Sub CmdCerrar_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Han dles CmdCerrar.Click

End Sub
End Class

Al final debe de obtenerse el siguiente resultado:


Susy Díaz Bustamante

Fernando Lértora Liñán

Como tarea para que mida su capacidad y competencia realizarse el siguiente


ejercicio: empleando la BDD Neptuno

Вам также может понравиться