CREACION DE DLL Y USO (Ejemplo desarrollado)

15
Curso: Visual Basic NE II pág. 1 DLL’s Una definición más profunda de .NET La mejor forma de comprender cómo funciona .NET es analizar las numerosas capas en las que se divide .NET Framework. Veamos la siguiente figura: No te asustes con lo que vas a leer aquí, es obligatorio que lo veamos por encima, al terminar el tema, vuelve a leer esto y veras que sencillo era. Como hemos comentado antes .NET Framework constituye la base sobre la que se asienta .NET. Para nosotros es la pieza fundamental de esta nueva tecnología y es la que nos va a proporcionar las herramientas y servicios que necesitaremos en nuestros desarrollos. Podemos agrupar en tres bloques el conjunto de herramientas y servicios: El runtime de lenguaje común o entorno de ejecución común (CLR) Biblioteca de clases base de la plataforma .NET (.NET Framework Base Classes)

Transcript of CREACION DE DLL Y USO (Ejemplo desarrollado)

Page 1: CREACION DE DLL Y USO (Ejemplo desarrollado)

Curso: Visual Basic NE II pág. 1

DLL’s

Una definición más profunda de .NET

La mejor forma de comprender cómo funciona .NET es analizar las numerosas capas en las que se divide .NET Framework. Veamos la siguiente figura:

No te asustes con lo que vas a leer aquí, es obligatorio que lo veamos por encima, al terminar el tema, vuelve a leer esto y veras que sencillo era.

Como hemos comentado antes .NET Framework constituye la base sobre la que se asienta .NET. Para nosotros es la pieza fundamental de esta nueva tecnología y es la que nos va a proporcionar las herramientas y servicios que necesitaremos en nuestros desarrollos. Podemos agrupar en tres bloques el conjunto de herramientas y servicios:

El runtime de lenguaje común o entorno de ejecución común (CLR) Biblioteca de clases base de la plataforma .NET (.NET Framework Base

Classes) Motor de generación de la interfaz para crear formularios e interfaces

de usuario.

Estas son tres de las capas del esquema anterior. Simplemente esa jerarquía me dice que en el nivel mas alto están los lenguajes que vamos a utilizar en nuestro desarrollo con .NET que pueden ser varios (en nuestro caso Visual Basic). Luego traduce esas instrucciones al estándar .NET para poder trabajar con esas instrucciones de una forma independiente al lenguaje con que se escribieron. El siguiente paso es la generación de

Page 2: CREACION DE DLL Y USO (Ejemplo desarrollado)

Curso: Visual Basic NE II pág. 2

formularios para Windows o web (ASP). Luego el enlace con bases de datos si las hay. Por fin llegamos a todos los objetos disponibles y por último el runtime de lenguaje común (CLR) que es el que va a ejecutar la aplicación. Veamos ahora más técnicamente de abajo hacia arriba:

1. Runtime del lenguaje común

El runtime del lenguaje común es la primera capa que pertenece a .NET Framework. Esta capa es la responsable de los servicios básicos de .NET, tales como la administración de memoria, la recolección de los elementos no utilizados, el control estructurado de excepciones y del subprocesamiento múltiple. Si .NET se transporta a otras arquitecturas que no estén basadas en Windows el primer paso sería escribir un runtime  del lenguaje para el nuevo equipo. El CLR tiene estas características:

Proporciona mejoras para el programador que antes tenía que elaborar Administra el código en tiempo de ejecución: carga en memoria, liberación de

memoria, ... Gestiona la seguridad del código ejecutado Abre posibilidades a otros fabricantes para incorporar sus lenguajes Facilita la distribución e instalación de aplicaciones. Elimina los temibles

conflictos de DLL's y versiones de ellas

Es la interfaz entre nuestro código y el sistema operativo, de ahí que si mañana Microsoft hace un CLR en lugar de para Windows, para Macintosh se puedan ejecutar nuestras aplicaciones .NET en este sistema.

2. Biblioteca de clases

La biblioteca de clases base (BCL) es la parte de .NET Framework que define todos los tipos de datos básicos, tales como System.Object (raíz de la jerarquía de objetos .NET), tipos numéricos y de fechas, tipo string, matrices y colecciones. La BCL contiene también clases que administrarán las características centrales de .NET: entrada/salida de archivos , subprocesamiento, serialización y seguridad. La forma en la que los tipos se implementan en la BCL siguen las especificaciones llamadas Common Type System (CTS). Por ejemplo, estas especificaciones dicta la forma en la que un tipo .NET expone campos, propiedades, métodos y sucesos, también cómo un tipo puede heredar otro tipo... Tranquilo... a lo largo del curso veremos estas clases y por fuerza trabajaremos con ellas porque todo en .NET son clases: desde un gráfico, un botón o nuestro programa.

3. Capa de datos

La capa de datos y XML contienen las clases .NET que trabajan con bases de datos y con XML. Anteriormente el soporte XML era una compatibilidad proporcionada por un componente externo. En .NET vemos cómo está integrado en su mismo núcleo. Podemos decir que XML es el formato que utiliza .NET para almacenar cualquier tipo de información. La parte de datos es la que se conoce como ADO.NET y es el equivalente en .NET a la tecnología ActiveX Data Object (ADO), ampliamente conocida por los programadores de Visual Basic, Intranets, ...

Nota para los conocedores de ADO: Aunque su nombre es muy parecido a ADO.NET son muy diferentes. ADO cubre prácticamente todas las técnicas de bases de datos disponibles (incluyendo cursores del lado del cliente y del servidor, conjuntos de datos desconectados y actualizaciones en diferido). ADO.NET está centrado principalmente en los conjuntos de resultados desconectados (llamados DataSets) Este objeto es

Page 3: CREACION DE DLL Y USO (Ejemplo desarrollado)

Curso: Visual Basic NE II pág. 3

mucho mas potente que el objeto ADO Recordset y puede almacenar datos provenientes de varias tablas, relaciones entre diferentes tablas de datos y puede importar y exportar datos en XML.

4. Capa de formularios y ASP

Las dos capas siguientes son ASP.NET y Windows Forms. Aquí se sitúan todas las clases que podremos utilizar para generar las páginas web en el primer caso y las ventanas estándares o formularios en las aplicaciones de Windows en el segundo caso.

Nota ASP.NET es la parte de .NET encargada del desarrollo en web. Una evolución muy ampliada de las páginas ASP y comprende los web forms y los servicios web XML. No lo veremos en este curso pero el salto a desarrollar en Web es muy sencillo...

Aunque estén en el mismo nivel las tecnologías son muy distintas. Web Forms se ejecuta en el servidor y produce HTML y es la base de las conocidas Intranets donde estas páginas devuelven otras páginas web con conjuntos de resultados u otros datos. Windows Forms se ejecuta en el cliente, un equipo Windows. La  biblioteca de clases de .NET Framework está formada por una colección de ensamblados (o Assembly), cada uno de los cuales comprende una o más DLL. Veamos que esto de un "ensamblado"...Un ensamblado consiste en un conjunto de tipos y recursos reunidos para formar la unidad mas elemental de código que puede ejecutar el entorno .NET Framework. Estos ensamblados son los elementos con los que construiremos una aplicación: una aplicación .NET se compone de varios ensamblados. Podemos llamar también a un ensamblado como una DLL lógica (recordamos que una DLL es una biblioteca de enlaces dinámicos). Decimos lógica porque se trata de una lista de ficheros que se referencian en tiempo de ejecución pero que no se compilan para producir un fichero físico, a diferencia de las DLL's tradicionales. Un ensamblado va mucho más allá ya que puede contener otros recursos además de clases como imágenes, ...

5. Capas de CLS y lenguajesDonde están las especificaciones de los lenguajes y su sincronización con el entorno .NET

Empezaremos con el siguiente Ejemplo: Jojojojo

Paso 1: Debemos contar con un modelo relacional, y orientarlo a este caso, esto le será proporcionado por su asesor. (Script de Base de Datos SQL Server SysInventario),

Page 4: CREACION DE DLL Y USO (Ejemplo desarrollado)

Curso: Visual Basic NE II pág. 4

pero antes deberá crear una carpeta en el escritorio, llamado: MANTENIMIENTO y dentro de el 2 Sub Carpetas: DLL y FORMULARIOS

Paso 2: Adicionalmente Crear los Siguientes Procedimientos Almacenados en SQL:

Create Procedure SpGrabar_Foto@Parametro Varchar(50),@Fot Image,@Id Varchar(10)As IF @Parametro='RAM' Update RAM Set Imagen=@Fot Where RamId=@Id IF @Parametro='PROCESADOR' Update PROCESADOR Set Imagen=@Fot Where ProcesadorID=@Id IF @Parametro='DISCO_HDOP' Update DISCO_HDOP Set Imagen=@Fot Where DiscoID=@Id IF @Parametro='TARJETA' Update TARJETA Set Imagen=@Fot Where TarjetaID=@Id IF @Parametro='FUENTE' Update FUENTE Set Imagen=@Fot Where FuenteID=@Id IF @Parametro='FLOPPY' Update FLOPPY Set Imagen=@Fot Where FloppyID=@Id IF @Parametro='XCASE' Update XCASE Set Imagen=@Fot Where CaseID=@Id IF @Parametro='MAINBOARD' Update MAINBOARD Set Imagen=@Fot Where MainBoardID=@Id IF @Parametro='IMPRESORA' Update IMPRESORA Set Imagen=@Fot Where ImpresoraID=@Id IF @Parametro='MOUSE' Update MOUSE Set Imagen=@Fot Where MouseID=@Id IF @Parametro='TECLADO' Update TECLADO Set Imagen=@Fot Where TecladoID=@Id IF @Parametro='MONITOR' Update MONITOR Set Imagen=@Fot Where MonitorID=@Id IF @Parametro='EMPLEADO' Update EMPLEADO Set FotoImg=@Fot Where EmpleadoID=@Id IF @Parametro='MARCA' Update MARCA Set Imagen=@Fot Where MarcaID=@IdGoCREATE PROCEDURE Sp_Generador@Param VARCHAR(50),@CodGen VARCHAR(10) OUTPUTAS DECLARE @ULT INT,@CEROS INT IF @Param IN ('RAM','PROCESADOR','DISCO_HDOP','TARJETA','CPU', 'FUENTE','MAINBOARD','IMPRESORA','EMPLEADO','XCASE') Begin SELECT @Ult=ULTIMO+1 FROM GENERADOR WHERE Parametro=@Param SET @CEROS=9 - LEN(CONVERT(VARCHAR,@Ult))

SET @CodGen=LEFT(@Param,1)+REPLICATE('0',@CEROS)+CONVERT(VARCHAR,@Ult) End IF @Param IN ('MONITOR','TECLADO') Begin SELECT @Ult=ULTIMO+1 FROM GENERADOR WHERE Parametro=@Param SET @CEROS=8 - LEN(CONVERT(VARCHAR,@Ult))

SET @CodGen=LEFT(@Param,1)+REPLICATE('0',@CEROS)+CONVERT(VARCHAR,@Ult) End IF @Param IN ('MARCA') Begin SELECT @Ult=ULTIMO+1 FROM GENERADOR WHERE Parametro=@Param SET @CEROS=7 - LEN(CONVERT(VARCHAR,@Ult))

SET @CodGen=LEFT(@Param,1)+REPLICATE('0',@CEROS)+CONVERT(VARCHAR,@Ult) End IF @Param IN ('MOUSE') Begin SELECT @Ult=ULTIMO+1 FROM GENERADOR WHERE Parametro=@Param SET @CEROS=6 - LEN(CONVERT(VARCHAR,@Ult))

SET @CodGen=LEFT(@Param,1)+REPLICATE('0',@CEROS)+CONVERT(VARCHAR,@Ult) End UPDATE Generador SET Ultimo=@Ult WHERE Parametro=@ParamGo

Create Procedure SpListadoRamAs Select * From RAMGo

Paso 3: Ahora ingresemos a Visual Basic NET, y crearemos un proyecto orientado a Bibliotecas de Clase, llamado DLL_MAN1, así como se muestra en la Imagen:

Page 5: CREACION DE DLL Y USO (Ejemplo desarrollado)

Propiedad: Nombre de Archivo: DLL_Mantenimiento

Y cambiara el nombre de la clase por igual

Curso: Visual Basic NE II pág. 5

Cuando Aceptemos, observaremos el siguiente entorno:

Aquí debemos cambiar el nombre de la Clase por: DLL_Mantenimiento, y deberá quedar de la siguiente manera:

Grabe el Proyecto DLL en la carpeta DLL del paso 1 haciendo clic en el botón Guardar Todo:

Page 6: CREACION DE DLL Y USO (Ejemplo desarrollado)

Curso: Visual Basic NE II pág. 6

Finalice el proceso haciendo clic en Guardar.Paso 4: Empecemos a Programar dicha biblioteca, agregando el siguiente espacio:Imports System.Data.SqlClient

Defina las siguientes variables a nivel de clase:Crear Las Siguientes Funciones

Public Shared Function AplicarCadenaConexion() As SqlConnection Dim SconnectionString As String = ("Server=LocalHost;Uid=SA;Password=123;Database=SysInventario") Return New SqlConnection(SconnectionString)End Function

Public Function ListadoRAM() As DataTable Try Dim DaListadoRAM As New SqlDataAdapter Dim DsListado As New DataSet DaListadoRAM.SelectCommand = New SqlCommand With DaListadoRAM.SelectCommand .Connection = AplicarCadenaConexion() .CommandType = CommandType.StoredProcedure .CommandText = "SpListadoRam" End With DaListadoRAM.Fill(DsListado, "ListaRam") Return DsListado.Tables("ListaRam") Catch ex As Exception MsgBox(ex.Message) End Try End Function

Public Function DeleteRam(ByVal Rid As String) As Integer Try Dim Dat As New ClsDatos Dim Conexion As SqlConnection = AplicarCadenaConexion() Dim CadenaUpdate As String = "UPDATE Ram Set Estado=0 Where RamID=@Ridx" Conexion.Open() Dim CMD As New SqlCommand(CadenaUpdate, Conexion) With CMD.Parameters .AddWithValue("@Ridx", Rid) End With CMD.ExecuteNonQuery() Conexion.Close() MsgBox("Dato InHabilitado Corectamente", MsgBoxStyle.Information) Return 0 Catch ex As Exception MsgBox(ex.Message) Return 1 End Try End Function

Public Function SelectRam(ByVal Rid As String) As ClsDatos Dim Dat As New ClsDatos Dim DrRam As SqlDataReader Dim Conexion As SqlConnection = AplicarCadenaConexion() Dim CadenaSelect As String CadenaSelect = "Select RamID,Modelo,MarcaID,Serie,Tipo,Capacidad, " _ & "VelocBus,Imagen,Imagensitio,Estado " _ & "From RAM Where RamID=@Rid"

Page 7: CREACION DE DLL Y USO (Ejemplo desarrollado)

Curso: Visual Basic NE II pág. 7

Conexion.Open() Dim CmdRam As New SqlCommand(CadenaSelect, Conexion) CmdRam.Parameters.AddWithValue("@Rid", Rid) DrRam = CmdRam.ExecuteReader If DrRam.Read Then Dat.Rid = DrRam("RamID").ToString Dat.Mode = DrRam("Modelo").ToString Dat.MarcId = DrRam("MarcaId").ToString Dat.Ser = DrRam("Serie").ToString Dat.Tip = DrRam("Tipo").ToString Dat.Capac = DrRam("Capacidad").ToString Dat.Veloc = DrRam("VelocBus").ToString Dat.Img = DrRam("Imagen").ToString Dat.ImgSitio = DrRam("ImagenSitio").ToString Dat.Est = DrRam("Estado").ToString End If Return Dat Conexion.Close() End Function

Crear el Siguiente ProcedimientoPublic Sub InsertUpdateRam(ByVal Dat As ClsDatos) Try Select Case Dat.Condicion Case "I" Dim Conexion As SqlConnection = AplicarCadenaConexion() Dim CadenaInsert As String = "Insert Into RAM(RamId,Modelo,MarcaId," + _ "Serie,Tipo,Capacidad,VelocBus,Imagen,ImagenSitio,Estado) " + _ "Values (@Rid,@Model,@MarId,@Ser,@Tip,@Cap,@Veloc,NULL,NULL,@Est)" Conexion.Open() Dim CMD As New SqlCommand(CadenaInsert, Conexion) With CMD.Parameters .AddWithValue("@Rid", Dat.Rid) .AddWithValue("@Model", Dat.Mode) .AddWithValue("@MarId", Dat.MarcId) .AddWithValue("@Ser", Dat.Ser) .AddWithValue("@Tip", Dat.Tip) .AddWithValue("@Cap", Dat.Capac) .AddWithValue("@Veloc", Dat.Veloc) '.AddWithValue("@Img1", Dat.Img) '.AddWithValue("@Img2", Dat.ImgSitio) .AddWithValue("@Est", Dat.Est) End With CMD.ExecuteNonQuery() Conexion.Close() MsgBox("Datos almacenados Correctamente", MsgBoxStyle.Information) Case "U" Dim Conexion As SqlConnection = AplicarCadenaConexion() Dim CadenaUpdate As String = "UPDATE Ram Set Modelo=@Model,MarcaId=@MarId," + _ "Serie=@Ser,Tipo=@Tip,Capacidad=@Cap,VelocBus=@Veloc,Imagen=NULL," + _ "ImagenSitio=NULL,Estado=@Est Where RamID=@Rid" Conexion.Open() Dim CMD As New SqlCommand(CadenaUpdate, Conexion) With CMD.Parameters .AddWithValue("@Rid", Dat.Rid) .AddWithValue("@Model", Dat.Mode) .AddWithValue("@MarId", Dat.MarcId) .AddWithValue("@Ser", Dat.Ser) .AddWithValue("@Tip", Dat.Tip) .AddWithValue("@Cap", Dat.Capac) .AddWithValue("@Veloc", Dat.Veloc) '.AddWithValue("@Img1", Dat.Img) '.AddWithValue("@Img2", Dat.ImgSitio) .AddWithValue("@Est", Dat.Est) End With CMD.ExecuteNonQuery() Conexion.Close() MsgBox("Datos Actualizados Corectamente", MsgBoxStyle.Information) End Select Catch ex As Exception MsgBox(ex.Message)

Page 8: CREACION DE DLL Y USO (Ejemplo desarrollado)

Seleccione Generar DLL_Man1, y luego espero unos segundos, para que genere nuestra DLL.

Curso: Visual Basic NE II pág. 8

End TryEnd Sub

Paso 5: En el mismo proyecto agregar una nueva Clase con el nombre: CLSDATOS y este contendrá el siguiente código:Public Class ClsDatos Public Condicion As String Public Rid As String Public Mode As String Public MarcId As String Public Ser As String Public Tip As String Public Capac As String Public Veloc As String Public Img As String Public ImgSitio As String Public Est As IntegerEnd Class

Paso 6: Ahora después de culminar el 5to paso, proceda a generar la DLL, es decir nuestro archivo soporte que contendrá encriptado todo nuestro código basado en clases.

Para verificar que nuestra DLL esta creada, debemos buscarla en la carpeta RELEASE, de nuestro proyecto, esta estará dentro de la carpeta BIN

Después de verificar la creación de nuestra DLL, procederemos a crear un nuevo proyecto basado en Aplicación para Windows (Visual Basic NET). El Nombre de Nuestro Proyecto Nuevo: SYSINVENTARIO

Page 9: CREACION DE DLL Y USO (Ejemplo desarrollado)

Curso: Visual Basic NE II pág. 9

Cuando nuestro proyecto este creado, debemos agregar nuestra DLL (DLL_Man1) a nuestro proyecto, realice la siguiente operación: PROYECTO - > AGREGAR REFERENCIA

Lo cual nos lleva a la siguiente ventana: aquí debemos seleccionar la pestaña EXAMINAR, luego buscamos nuestra DLL en la carpeta RELEASE de nuestro proyecto anterior, la seleccionamos y aceptamos, con esto nuestra DLL formara parte de nuestro proyecto, así podremos usar el código encriptado que se encuentra en su interior.

Page 10: CREACION DE DLL Y USO (Ejemplo desarrollado)

Aquí esta nuestra DLL, agregada como referencia.

Curso: Visual Basic NE II pág. 10

Ahora verifiquemos que nuestra DLL esta agregada a nuestro proyecto, esto dependerá única y exclusivamente de nuestro EXPLORADOR DE SOLUCIONES, esta ventanita muestra por defecto solo los componentes creados por el usuario, y de forma reservada oculta algunos componentes, en la parte superior de esta ventanita existe algunos iconos, hagamos clic en el icono “MOSTRAR TODOS LOS ARCHIVOS”, tiene la siguiente forma:

Ahora Diseñemos Nuestro Formulario:

Page 11: CREACION DE DLL Y USO (Ejemplo desarrollado)

Curso: Visual Basic NE II pág. 11

Luego Diseñar el Siguiente Formulario, usando los controles ya definidos.

Este formulario llevara el nombre: FrmRam, el cual estará compuesto por los siguientes objetos: 7 cajas de textos (Sin cambiar nombre), 2 combos (Sin Cambiar nombre) y 5 botones comandos (BtnGrabar, BtnActualizar, BrnConsultar, BtnEliminar, BtnListado). Un DatagridView (DtgRAM) y un control Picturebox1 (Sin cambiar nombre)

Page 12: CREACION DE DLL Y USO (Ejemplo desarrollado)

Curso: Visual Basic NE II pág. 12

Ahora procederemos a programar el formulario.Agregar EL siguiente Espacio referencia de SQL Server

Imports System.Data.SqlClient

Dim ObjRefMante As New Dll_Man1.Dll_Mantenimiento Dim ObjRefCaptura As New Dll_Man1.ClsDatos Dim DsEntorno As New DataSet Dim Cn As New SqlConnection("Server=LocalHost;Uid=Sa;Password=123;Database=SysInventario") Dim DaMarca As New SqlDataAdapter("Select * From Marca", Cn)

Form Load DaMarca.Fill(DsEntorno, "Marca") ComboBox1.DataSource = DsEntorno.Tables("Marca") ComboBox1.DisplayMember = "DesMarca" ComboBox1.ValueMember = "MarcaID"

ComboBox2.Items.Add("Habilitado") ComboBox2.Items.Add("InHabilitado")

BtnGrabar (Click) Try If MessageBox.Show("Desea Grabar", "Seleccione Su Opcion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Dim CmdEjecutar As New SqlCommand("Sp_Generador", Cn) Dim PrmParametro As New SqlParameter Cn.Open() With CmdEjecutar .CommandType = CommandType.StoredProcedure PrmParametro = .Parameters.Add("@Param", SqlDbType.VarChar, 50) PrmParametro.Value = "RAM"

PrmParametro = .Parameters.Add("@CodGen", SqlDbType.VarChar, 10) PrmParametro.Direction = ParameterDirection.Output PrmParametro.Value = ""

.ExecuteNonQuery() ObjRefCaptura.Rid = .Parameters(1).Value End With CmdEjecutar.Dispose() Cn.Close() ObjRefCaptura.Condicion = "I" Me.TextBox1.Text = ObjRefCaptura.Rid ObjRefCaptura.Mode = Me.TextBox2.Text ObjRefCaptura.MarcId = ComboBox1.SelectedValue ObjRefCaptura.Ser = Me.TextBox3.Text ObjRefCaptura.Tip = Me.TextBox4.Text ObjRefCaptura.Capac = Me.TextBox5.Text ObjRefCaptura.Veloc = Me.TextBox6.Text ObjRefCaptura.Img = DBNull.Value.ToString ObjRefCaptura.ImgSitio = DBNull.Value.ToString ObjRefCaptura.Est = IIf(ComboBox2.SelectedIndex = 0, 1, 0) ObjRefMante.InsertUpdateRam(ObjRefCaptura) End IfCatch Ex As Exception MessageBox.Show(Ex.Message)End Try

BtnConsultar (Click) Try Dim ABC As New Dll_Man1.ClsDatos ABC = ObjRefMante.SelectRam(Me.TextBox1.Text) Me.TextBox1.Text = ABC.Rid Me.TextBox2.Text = ABC.Mode Me.ComboBox1.SelectedValue = ABC.MarcId Me.TextBox3.Text = ABC.Ser Me.TextBox4.Text = ABC.Tip

Page 13: CREACION DE DLL Y USO (Ejemplo desarrollado)

Curso: Visual Basic NE II pág. 13

Me.TextBox5.Text = ABC.Capac Me.TextBox6.Text = ABC.Veloc Me.TextBox7.Text = ABC.Img 'ABC.ImgSitio Me.ComboBox2.Text = IIf(ABC.Est = 0, "InHabilitado", "Habilitado") Catch Ex As Exception MessageBox.Show(Ex.Message) End Try

BtnActualizar (Click)Try If MessageBox.Show("Desea Actualizar", "Seleccione Su Opcion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then ObjRefCaptura.Condicion = "U" ObjRefCaptura.Rid = Me.TextBox1.Text ObjRefCaptura.Mode = Me.TextBox2.Text ObjRefCaptura.MarcId = ComboBox1.SelectedValue ObjRefCaptura.Ser = Me.TextBox3.Text ObjRefCaptura.Tip = Me.TextBox4.Text ObjRefCaptura.Capac = Me.TextBox5.Text ObjRefCaptura.Veloc = Me.TextBox6.Text ObjRefCaptura.Img = DBNull.Value.ToString ObjRefCaptura.ImgSitio = DBNull.Value.ToString ObjRefCaptura.Est = IIf(ComboBox2.SelectedIndex = 0, 1, 0) ObjRefMante.InsertUpdateRam(ObjRefCaptura) End IfCatch Ex As Exception MessageBox.Show(Ex.Message)End Try

BtnEliminar(Click) Dim R As Integer R = ObjRefMante.DeleteRam(Me.TextBox1.Text) If R = 0 Then Me.ComboBox2.Text = "InHabilitado" Else Me.ComboBox2.Text = "Habilitado" End If

DtgRAM(Click)DtgRAM.DataSource = ObjRefMante.ListadoRAM