El documento describe las capas principales de .NET Framework, incluyendo el runtime de lenguaje común (CLR), la biblioteca de clases base (.NET Framework Base Classes), y las capas de formularios y servicios web. También describe cómo crear una biblioteca de clases de C# para realizar operaciones CRUD en una tabla RAM de una base de datos, incluyendo funciones para listar, eliminar, seleccionar y insertar/actualizar registros.
1. DLL’s<br />Una definición más profunda de .NET<br />1072515531495La mejor forma de comprender cómo funciona .NET es analizar las numerosas capas en las que se divide .NET Framework. Veamos la siguiente figura:<br />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.<br />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:<br />El runtime de lenguaje común o entorno de ejecución común (CLR)<br />Biblioteca de clases base de la plataforma .NET (.NET Framework Base Classes)<br />Motor de generación de la interfaz para crear formularios e interfaces de usuario.<br />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 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:<br />1. Runtime del lenguaje común<br />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:<br />Proporciona mejoras para el programador que antes tenía que elaborar<br />Administra el código en tiempo de ejecución: carga en memoria, liberación de memoria, ...<br />Gestiona la seguridad del código ejecutado<br />Abre posibilidades a otros fabricantes para incorporar sus lenguajes<br />Facilita la distribución e instalación de aplicaciones. Elimina los temibles conflictos de DLL's y versiones de ellas<br />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.<br />2. Biblioteca de clases<br />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... <br />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.<br />3. Capa de datos<br />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, ...<br />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 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.<br />4. Capa de formularios y ASP<br />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.<br />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...<br />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. <br />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 quot;
ensambladoquot;
...<br />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, ...<br />5. Capas de CLS y lenguajes<br />Donde están las especificaciones de los lenguajes y su sincronización con el entorno .NET<br />2891790-12065Empezaremos con el siguiente Ejemplo: Jojojojo<br />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), pero antes deberá crear una carpeta en el escritorio, llamado: MANTENIMIENTO y dentro de el 2 Sub Carpetas: DLL y FORMULARIOS<br />Paso 2: Adicionalmente Crear los Siguientes Procedimientos Almacenados en SQL:<br />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=@ParamGoCreate Procedure SpListadoRamAs Select * From RAMGo<br />-3810377825Paso 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:<br />Cuando Aceptemos, observaremos el siguiente entorno:<br />-38103810<br />Propiedad: Nombre de Archivo: DLL_MantenimientoY cambiara el nombre de la clase por igualAquí debemos cambiar el nombre de la Clase por: DLL_Mantenimiento, y deberá quedar de la siguiente manera:<br />5664835-90170Grabe el Proyecto DLL en la carpeta DLL del paso 1 haciendo clic en el botón Guardar Todo:<br />-381014605<br />Finalice el proceso haciendo clic en Guardar.<br />Paso 4: Empecemos a Programar dicha biblioteca, agregando el siguiente espacio:<br />Imports System.Data.SqlClient<br />Defina las siguientes variables a nivel de clase:<br />Crear Las Siguientes FuncionesPublic Shared Function AplicarCadenaConexion() As SqlConnection Dim SconnectionString As String = (quot;
Server=LocalHost;Uid=SA;Password=123;Database=SysInventarioquot;
) 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 = quot;
SpListadoRamquot;
End With DaListadoRAM.Fill(DsListado, quot;
ListaRamquot;
) Return DsListado.Tables(quot;
ListaRamquot;
) 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 = quot;
UPDATE Ram Set Estado=0 Where RamID=@Ridxquot;
Conexion.Open() Dim CMD As New SqlCommand(CadenaUpdate, Conexion) With CMD.Parameters .AddWithValue(quot;
@Ridxquot;
, Rid) End With CMD.ExecuteNonQuery() Conexion.Close() MsgBox(quot;
Dato InHabilitado Corectamentequot;
, MsgBoxStyle.Information) Return 0 Catch ex As Exception MsgBox(ex.Message) Return 1 End Try End Function<br /> 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 = quot;
Select RamID,Modelo,MarcaID,Serie,Tipo,Capacidad, quot;
_ & quot;
VelocBus,Imagen,Imagensitio,Estado quot;
_ & quot;
From RAM Where RamID=@Ridquot;
Conexion.Open() Dim CmdRam As New SqlCommand(CadenaSelect, Conexion) CmdRam.Parameters.AddWithValue(quot;
@Ridquot;
, Rid) DrRam = CmdRam.ExecuteReader If DrRam.Read Then Dat.Rid = DrRam(quot;
RamIDquot;
).ToString Dat.Mode = DrRam(quot;
Modeloquot;
).ToString Dat.MarcId = DrRam(quot;
MarcaIdquot;
).ToString Dat.Ser = DrRam(quot;
Seriequot;
).ToString Dat.Tip = DrRam(quot;
Tipoquot;
).ToString Dat.Capac = DrRam(quot;
Capacidadquot;
).ToString Dat.Veloc = DrRam(quot;
VelocBusquot;
).ToString Dat.Img = DrRam(quot;
Imagenquot;
).ToString Dat.ImgSitio = DrRam(quot;
ImagenSitioquot;
).ToString Dat.Est = DrRam(quot;
Estadoquot;
).ToString End If Return Dat Conexion.Close() End FunctionCrear el Siguiente ProcedimientoPublic Sub InsertUpdateRam(ByVal Dat As ClsDatos) Try Select Case Dat.Condicion Case quot;
Iquot;
Dim Conexion As SqlConnection = AplicarCadenaConexion() Dim CadenaInsert As String = quot;
Insert Into RAM(RamId,Modelo,MarcaId,quot;
+ _ quot;
Serie,Tipo,Capacidad,VelocBus,Imagen,ImagenSitio,Estado) quot;
+ _ quot;
Values (@Rid,@Model,@MarId,@Ser,@Tip,@Cap,@Veloc,NULL,NULL,@Est)quot;
Conexion.Open() Dim CMD As New SqlCommand(CadenaInsert, Conexion) With CMD.Parameters .AddWithValue(quot;
@Ridquot;
, Dat.Rid) .AddWithValue(quot;
@Modelquot;
, Dat.Mode) .AddWithValue(quot;
@MarIdquot;
, Dat.MarcId) .AddWithValue(quot;
@Serquot;
, Dat.Ser) .AddWithValue(quot;
@Tipquot;
, Dat.Tip) .AddWithValue(quot;
@Capquot;
, Dat.Capac) .AddWithValue(quot;
@Velocquot;
, Dat.Veloc) '.AddWithValue(quot;
@Img1quot;
, Dat.Img) '.AddWithValue(quot;
@Img2quot;
, Dat.ImgSitio) .AddWithValue(quot;
@Estquot;
, Dat.Est) End With CMD.ExecuteNonQuery() Conexion.Close() MsgBox(quot;
Datos almacenados Correctamentequot;
, MsgBoxStyle.Information) Case quot;
Uquot;
Dim Conexion As SqlConnection = AplicarCadenaConexion() Dim CadenaUpdate As String = quot;
UPDATE Ram Set Modelo=@Model,MarcaId=@MarId,quot;
+ _ quot;
Serie=@Ser,Tipo=@Tip,Capacidad=@Cap,VelocBus=@Veloc,Imagen=NULL,quot;
+ _ quot;
ImagenSitio=NULL,Estado=@Est Where RamID=@Ridquot;
Conexion.Open() Dim CMD As New SqlCommand(CadenaUpdate, Conexion) With CMD.Parameters .AddWithValue(quot;
@Ridquot;
, Dat.Rid) .AddWithValue(quot;
@Modelquot;
, Dat.Mode) .AddWithValue(quot;
@MarIdquot;
, Dat.MarcId) .AddWithValue(quot;
@Serquot;
, Dat.Ser) .AddWithValue(quot;
@Tipquot;
, Dat.Tip) .AddWithValue(quot;
@Capquot;
, Dat.Capac) .AddWithValue(quot;
@Velocquot;
, Dat.Veloc) '.AddWithValue(quot;
@Img1quot;
, Dat.Img) '.AddWithValue(quot;
@Img2quot;
, Dat.ImgSitio) .AddWithValue(quot;
@Estquot;
, Dat.Est) End With CMD.ExecuteNonQuery() Conexion.Close() MsgBox(quot;
Datos Actualizados Corectamentequot;
, MsgBoxStyle.Information) End Select Catch ex As Exception MsgBox(ex.Message) End TryEnd Sub<br />Paso 5: En el mismo proyecto agregar una nueva Clase con el nombre: CLSDATOS y este contendrá el siguiente código:<br />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<br />Seleccione Generar DLL_Man1, y luego espero unos segundos, para que genere nuestra DLL.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.<br />Para verificar que nuestra DLL esta creada, debemos buscarla en la carpeta RELEASE, de nuestro proyecto, esta estará dentro de la carpeta BIN <br />-3810-2540<br />-3810538480Despué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<br />Cuando nuestro proyecto este creado, debemos agregar nuestra DLL (DLL_Man1) a nuestro proyecto, realice la siguiente operación: PROYECTO - > AGREGAR REFERENCIA<br />967740-5715<br />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.<br />52959085725<br />1291590898525Aquí esta nuestra DLL, agregada como referencia.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:<br />53340125730<br />Ahora Diseñemos Nuestro Formulario:<br />-381019050<br />Luego Diseñar el Siguiente Formulario, usando los controles ya definidos.<br />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)<br />Ahora procederemos a programar el formulario.<br />Agregar EL siguiente Espacio referencia de SQL ServerImports 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(quot;
Server=LocalHost;Uid=Sa;Password=123;Database=SysInventarioquot;
) Dim DaMarca As New SqlDataAdapter(quot;
Select * From Marcaquot;
, Cn)Form Load DaMarca.Fill(DsEntorno, quot;
Marcaquot;
) ComboBox1.DataSource = DsEntorno.Tables(quot;
Marcaquot;
) ComboBox1.DisplayMember = quot;
DesMarcaquot;
ComboBox1.ValueMember = quot;
MarcaIDquot;
ComboBox2.Items.Add(quot;
Habilitadoquot;
) ComboBox2.Items.Add(quot;
InHabilitadoquot;
)BtnGrabar (Click) Try If MessageBox.Show(quot;
Desea Grabarquot;
, quot;
Seleccione Su Opcionquot;
, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Dim CmdEjecutar As New SqlCommand(quot;
Sp_Generadorquot;
, Cn) Dim PrmParametro As New SqlParameter Cn.Open() With CmdEjecutar .CommandType = CommandType.StoredProcedure PrmParametro = .Parameters.Add(quot;
@Paramquot;
, SqlDbType.VarChar, 50) PrmParametro.Value = quot;
RAMquot;
PrmParametro = .Parameters.Add(quot;
@CodGenquot;
, SqlDbType.VarChar, 10) PrmParametro.Direction = ParameterDirection.Output PrmParametro.Value = quot;
quot;
.ExecuteNonQuery() ObjRefCaptura.Rid = .Parameters(1).Value End With CmdEjecutar.Dispose() Cn.Close() ObjRefCaptura.Condicion = quot;
Iquot;
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 TryBtnConsultar (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 Me.TextBox5.Text = ABC.Capac Me.TextBox6.Text = ABC.Veloc Me.TextBox7.Text = ABC.Img 'ABC.ImgSitio Me.ComboBox2.Text = IIf(ABC.Est = 0, quot;
InHabilitadoquot;
, quot;
Habilitadoquot;
) Catch Ex As Exception MessageBox.Show(Ex.Message) End TryBtnActualizar (Click)Try If MessageBox.Show(quot;
Desea Actualizarquot;
, quot;
Seleccione Su Opcionquot;
, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then ObjRefCaptura.Condicion = quot;
Uquot;
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 TryBtnEliminar(Click) Dim R As Integer R = ObjRefMante.DeleteRam(Me.TextBox1.Text) If R = 0 Then Me.ComboBox2.Text = quot;
InHabilitadoquot;
Else Me.ComboBox2.Text = quot;
Habilitadoquot;
End IfDtgRAM(Click)DtgRAM.DataSource = ObjRefMante.ListadoRAM<br />