APLICACIÓN CON IMÁGENES

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 )

description

Una aplicacion para grabar y leer imagenes en una tabla ,empleando visual Basic Net

Transcript of APLICACIÓN CON IMÁGENES

Page 1: APLICACIÓN CON IMÁGENES

APLICACIÓN CON IMÁGENES

Teniendo como bdd NEPTUNO en la que se tiene la tabla clientes , se va arealizar un formulario para almacenar y leer imágenes en una tabla ., a travésdel 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 neptunoCreate table clientesImagen(cli_cod char(5) Primary key,cli_nom varchar(100),cli_imagen image)

Page 2: APLICACIÓN CON IMÁGENES

Select * from categorias---Procedimientos Almacenados ---Create procedure usp_clientesImagenAsSelect * from clientesimagenGoCreate procedure usp_busclientesimagen@cli_cod char(5)AsSelect * from clientesimagen Where cli_cod=@cli _codGoCreate procedure usp_generacodigoclientesImagen@cli_cod varchar(5) OutputAsSet @cli_cod=(select max(cli_cod) from clientesImagen)Set @cli_cod='C'+Right('0000'+ltrim(right(isnull(@cli_cod,'00000'),4)+1),4)GoDeclare @codigo char(5)exec usp_generacodigoclientesImagen @codigo outputprint @codigo

Create procedure usp_insertarclienteimagen@cli_cod char(5),@cli_nom varchar(100),@cli_imagen imageAsInsert Into clientesImagen values(@cli_cod,@cli_nom,@cli_imagen)Go

---Realizar procedimiento para actualizar el dato del clienteCreate proc usp_ActualizarDatos@cli_cod char(5),@cli_nom varchar(100),@cli_imagen imageAsUpdate ClientesImagen Set cli_nom=@cli_nom,

cli_imagen=@cli_imagen Where cli_cod=@cli_codGo

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.DataImports System.Data.SqlClient

Page 3: APLICACIÓN CON IMÁGENES

Public Class ClsFuncionesDim cn As New SqlConnection(cadenasql)Public Function MostrarClientes() As DataTable

Dim da As New SqlDataAdapter("usp_clientesImagen", cn)Dim tbl As New DataTableda.Fill(tbl)Return tbl

End FunctionPublic Function BusquedadeClientes(ByVal cli_cod As String) _

As DataTableDim cmd As New SqlCommand("usp_busclientesimagen", cn)cmd.CommandType = CommandType.StoredProcedurecmd.Parameters.Add("@cli_cod", SqlDbType.Char, 5).Value = cli_codcn.Open()Dim tbl As New DataTabletbl.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection))Return tbl

End FunctionPublic Function CodigodeCliente() As String

Dim cmd As New SqlCommand("usp_generacodigoclientesImagen", cn)cmd.CommandType = CommandType.StoredProcedure'definiendo el parametro de salidacmd.Parameters.Add("@cli_cod", SqlDbType.Char, 5).Direction = _

ParameterDirection.Outputcn.Open()cmd.ExecuteNonQuery() 'ejecutando el SPcn.Close()'recuperando el codigo generado C0000 del parametro de salidaReturn cmd.Parameters("@cli_cod").Value

End FunctionPublic Function GrabarCliente(ByVal cli_cod As String, _

ByVal cli_nom As String, ByVal imagen As Byte()) As IntegerDim cmd As New SqlCommand("usp_insertarclienteimagen", cn)cmd.CommandType = CommandType.StoredProcedure'definiendo los parametros de entradacmd.Parameters.Add("@cli_cod", SqlDbType.Char, 5).Value = cli_codcmd.Parameters.Add("@cli_nom", SqlDbType.VarChar, 100).Value = _

cli_nomcmd.Parameters.Add("@cli_imagen", SqlDbType.Image).Va lue = imagencn.Open()'si el cliente es agregando en la tabla,ExecuteNonQuery'devolvera el valor numerico 1 como fila afectadaDim nresp As Integer = cmd.ExecuteNonQuery()cn.Close()Return nresp

End Function

Page 4: APLICACIÓN CON IMÁGENES

End Class

EL MODULO DE CONEXIÓN: MODULE1.VB

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

End Module

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

Imports System.dataImports System.IO 'Para manipular archivosPublic Class Form1

'Creando el objeto mediante la libreria de claseDim obj As New LIBRERIANEGOCIO.ClsFuncionesDim bytes() As Byte 'arreglo de bytes para la imagenPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Loadlblcodigo.Text = obj.CodigodeClienteMostrarClientes()

End SubSub MostrarClientes()

Dim tbl As DataTable = obj.Mostr arClientesDataGridView1.DataSource = tbllblNumReg.Text = tbl.Rows.Count'redimensionando las celdasDataGridView1.AutoResizeRows( _

DataGridViewAutoSizeRowsMode.AllCells)End SubPrivate Sub CmdBuscarImagen_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles CmdBuscarImagen.ClickTry

'OpenFileDialog=> abrir cuadro de archivosDim fileimagen As New OpenFileDialogfileimagen.Filter = _

"Archivo imagen(*.bmp,*.jpg,*.gif)|*.jpg"fileimagen.ShowDialog() 'abrir cuadro de busqueda'fileimagen.FileName=>recupera el nombre del archivoIf String.IsNullOrEmpty(fileimagen.FileName) Then

MessageBox.Show("Seleccione una imagen", "Imagen")Exit Sub

End IfDim strfoto As String = fileimagen.FileNamePictureBox1.SizeMode = PictureBoxSizeMode.StretchImage'Image.FromFile=>carga imagen desde archivo

Page 5: APLICACIÓN CON IMÁGENES

PictureBox1.Image = Image.FromFile(strfoto)'recuperando la informacion del archivo imagenDim fileinfo As New FileInfo(strfoto)'obteniendo la longitud del archivoDim longfileimagen As Long = fileinfo.Length'abriendo el archivo en memoria para su conversionDim fs As FileStream = New FileStream(strfoto, _FileMode.Open, FileAccess.Read)

'asignando el espacio del arreglo,mediante la'longitud de la imagenReDim bytes(longfileimagen)'iniciando la lectura de bytes,en base a la longitud'del archivo de imagenfs.Read(bytes, 0, longfileimagen)fs.Close() 'cerrar memoria

Catch ex As ExceptionMessageBox.Show(ex.Message)

End TryEnd SubPrivate Sub CmdNuevo_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles CmdNuevo.Clic klblcodigo.Text = obj.CodigodeClientetxtnombres.Clear() : txtnombres.Focus()PictureBox1.Image = Nothing 'quitando imagen

End SubPrivate Sub CmdGrabar_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles CmdGrabar.ClickIf txtnombres.Text = "" Then

MessageBox.Show("Ingrese el nombre del Cliente")Exit Sub

End IfIf PictureBox1.Image Is Nothing Then

MessageBox.Show("Seleccione una imagen", "Imagenes")Exit Sub

End IfDim nres As Integer = obj.GrabarCliente(lblcodigo.Text, _txtnombres.Text, bytes)

If nres = 1 ThenMessageBox.Show("El Cliente fue registrado", "Insercion")MostrarClientes()

End IfEnd SubPrivate Sub CmdBusqueda_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles CmdBusqueda.ClickTry

Dim codigo As String = InputBox("Ingrese un codigo " & _

Page 6: APLICACIÓN CON IMÁGENES

" 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 encontradoDim tbl As DataTable = obj.BusquedadeClientes(codigo)'mostrando los datos del cliente'tbl.rows(fila)(columna)lblcodigo.Text = tbl.Rows(0)(0).ToStringtxtnombres.Text = tbl.Rows(0)(1).ToString'recuperando la imagen en un tipo arreglo de Bytebytes = CType(tbl.Rows(0)(2), Byte())'creando un archivo vacio con la fecha actualDim 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 bytesfs.Write(bytes, 0, bytes.Length)fs.Close()PictureBox1.SizeMode = PictureBoxSizeMode.StretchImagePictureBox1.Image = Image.FromFile(archivoimagen)

Catch ex As ExceptionMessageBox.Show(ex.Message)

End TryEnd Sub

Private Sub CmdCerrar_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles CmdCerrar.Click

End SubEnd Class

Al final debe de obtenerse el siguiente resultado:

Page 7: APLICACIÓN CON IMÁGENES

Como tarea para que mida su capacidad y competencia realizarse el siguienteejercicio: empleando la BDD Neptuno

Susy Díaz Bustamante

Fernando Lértora Liñán

Page 8: APLICACIÓN CON IMÁGENES
Page 9: APLICACIÓN CON IMÁGENES