Guìa de Estudio de Visual Basic.NET 2010

Anuncio
Guía de Estudio
Microsoft Visual Basic
2010
Elaborada por:
Ing. Alfredo Díaz
Cabimas, Septiembre de 2011
GUIA DE ESTUDIO
VISUAL BASIC .NET 2010
¿Que es .NET?
.Net es la nueva plataforma de desarrollo que ha lanzado al mercado MicroSoft, y en la que ha
estado trabajado durante los últimos años. Sin duda alguna va a ser uno de los entornos de
desarrollo que reinen durante los proximos años.
¿Entonces .NET es un lenguaje de programación?, No. Es mucho más que eso, Microsoft .NET
es un conjunto de tecnologías de software , compuesto de varios lenguajes de programación
que se ejecutan bajo el .NET Framework. Es además un entorno completamente orientado a
objetos y que es capaz de ejecutarse bajo cualquier plataforma. Vamos por partes. Podriamos
dividir el entorno .NET en las siguientes partes:
.NET Framework, que es el entorno de trabajo de la plataforma .NET y que la engloba
completamente. Toda la plataforma .NET forma parte de .NET framework.
Lenguajes .NET. Destacan C# y VB.NET,y recientemente J#, aunque existen más lenguajes y
con toda seguridad surgirán nuevos.
El Common Runtime Language CRL, que es el motor de ejecución común a todos los
lenguajes .NET.
MSIL, Microsoft Intermedial language, es el lenguaje intermedio al que compilan las apliaciones
(Asemmblies) .NET. Este lenguaje intermedio es interpretado por el CRL en tiempo de
ejecución.
CLS, common Language Specification, que engloban las pautas que deben cumplir los
lenguajes .NET. Es está característica la que va a permitir a otras compañias producir
lenguajes compatibles con .NET.
ADO.NET, es la nueva interfaz de bases de datos. No se trata de una evolución de ADO, sino
que se trata de una interfaz completamente nueva.
Biblioteca de clases .NET, es el conjunto de clases que componen el .NET framework y que
nos permiten realizar casi cualquier tarea de una manera facil y rápida.
¿QUÉ ES VISUAL BASIC .NET 2010 (O VB.NET 10)?
Es un lenguaje de programación orientado a objetos, que se puede considerar una evolución
de Visual Basic (6.0) implementada sobre el framework (o marco de trabajo) .NET No es
compatible hacia atrás con Visual Basic, pero el manejo de las instrucciones es similar a
versiones anteriores de Visual Basic, pero al ser compatible con las tecnologías .NET, se
pueden obtener productos compatibles con las más recientes tecnologías.
Al igual que con todos los lenguajes de programación basados en .NET, los programas escritos
en VB .NET requieren el Framework .NET para ejecutarse.
EL .NET FRAMEWORK
El Framework de .Net es una infraestructura sobre la que se reúne todo un conjunto de
lenguajes y servicios que simplifican el desarrollo de aplicaciones. Mediante esta herramienta
se ofrece un entorno de ejecución que permite crear aplicaciones robustas y escalables. Los
principales componentes de este entorno son: Lenguajes de compilación, Biblioteca de clases
de .Net, CLR (Common Language Runtime)
Actualmente, el Framework de .Net es una plataforma no incluida en los diferentes sistemas
operativos distribuidos por Microsoft, por lo que es necesaria su instalación previa a la
ejecución de programas creados mediante .Net. El Framework se puede descargar
gratuitamente desde la web oficial de Microsoft.
.Net Framework soporta múltiples lenguajes de programación y aunque cada lenguaje tiene sus
características propias, es posible desarrollar cualquier tipo de aplicación con cualquiera de
estos lenguajes. Existen más de 30 lenguajes adaptados a .Net, desde los más conocidos
como C# (C Sharp), Visual Basic o C++ hasta otros lenguajes menos conocidos como Perl o
Cobol.
Common Language Runtime (CLR)
El CLR es el verdadero núcleo del Framework de .Net, ya que es el entorno de ejecución en el
que se cargan las aplicaciones desarrolladas en los distintos lenguajes, ampliando el conjunto
de servicios que ofrece el sistema operativo estándar Win32.
La herramienta de desarrollo compila el código fuente de cualquiera de los lenguajes
soportados por .Net en un mismo código, denominado código intermedio (MSIL, Microsoft
Intermediate Lenguaje). Para generar dicho código el compilador se basa en el Common
Language Specification (CLS) que determina las reglas necesarias para crear código MSIL
compatible con el CLR.
De esta forma, indistintamente de la herramienta de desarrollo utilizada y del lenguaje elegido,
el código generado es siempre el mismo, ya que el MSIL es el único lenguaje que entiende
directamente el CLR. Este código es transparente al desarrollo de la aplicación ya que lo
genera automáticamente el compilador. Sin embargo, el código generado en MSIL no es
código máquina y por tanto no puede ejecutarse directamente. Se necesita un segundo paso
en el que una herramienta denominada compilador JIT (Just-In-Time) genera el código
máquina real que se ejecuta en la plataforma que tenga la computadora.
De esta forma se consigue con .Net cierta independencia de la plataforma, ya que cada
plataforma puede tener su compilador JIT y crear su propio código máquina a partir del código
MSIL. La compilación JIT la realiza el CLR a medida que se invocan los métodos en el
programa y, el código ejecutable obtenido, se almacena en la memoria caché de la
computadora, siendo recompilado sólo cuando se produce algún cambio en el código fuente.
Biblioteca de clases de .Net
Cuando se está programando una aplicación muchas veces se necesitan realizar acciones
como manipulación de archivos, acceso a datos, conocer el estado del sistema, implementar
seguridad, etc. El Framework organiza toda la funcionalidad del sistema operativo en un
espacio de nombres jerárquico de forma que a la hora de programar resulta bastante sencillo
encontrar lo que se necesita.
Para ello, el Framework posee un sistema de tipos universal, denominado Common Type
System (CTS). Este sistema permite que el programador pueda interactuar los tipos que se
incluyen en el propio Framework (biblioteca de clases de .Net) con los creados por él mismo
(clases). De esta forma se aprovechan las ventajas propias de la programación orientada a
objetos, como la herencia de clases predefinidas para crear nuevas clases, o el polimorfismo
de clases para modificar o ampliar funcionalidades de clases ya existentes.
La biblioteca de clases de .Net Framework incluye, entre otros, tres componentes clave:
ASP.NET para construir aplicaciones y servicios Web.
Windows Forms para desarrollar interfaces de usuario.
ADO.NET para conectar las aplicaciones a bases de datos.
La forma de organizar la biblioteca de clases de .Net dentro del código es a través de los
espacios de nombres (namespaces), donde cada clase está organizada en espacios de
nombres según su funcionalidad. Por ejemplo, para manejar ficheros se utiliza el espacio de
nombres System.IO y si lo que se quiere es obtener información de una fuente de datos se
utilizará el espacio de nombres System.Data.
La principal ventaja de los espacios de nombres de .Net es que de esta forma se tiene toda la
bliblioteca de clases de .Net centralizada bajo el mismo espacio de nombres (System).
Además, desde cualquier lenguaje se usa la misma sintaxis de invocación, ya que a todos los
lenguajes se aplica la misma biblioteca de clases.
Ensamblados
Uno de los mayores problemas de las aplicaciones actuales es que en muchos casos tienen
que tratar con diferentes archivos binarios (DLL´s), elementos de registro, conectividad abierta
a bases de datos (ODBC), etc. Para solucionarlo el Framework de .Net maneja un nuevo
concepto denominado ensamblado. Los ensamblados son ficheros con forma de EXE o DLL
que contienen toda la funcionalidad de la aplicación de forma encapsulada. Por tanto la
solución al problema puede ser tan fácil como copiar todos los ensamblados en el directorio de
la aplicación.
Con los ensamblados ya no es necesario registrar los componentes de la aplicación. Esto se
debe a que los ensamblados almacenan dentro de si mismos toda la información necesaria en
lo que se denomina el manifiesto del ensamblado. El manifiesto recoge todos los métodos y
propiedades en forma de meta-datos junto con otra información descriptiva, como permisos,
dependencias, etc.
INICIANDO VISUAL BASIC .NET Y CREANDO EL PROYECTO
Nota: Se asumirá que se cuenta con un equipo de última generación con Visual Basic .NET
2010 (que se incluye en Visual Studio .NET 2010). También puede descargar la versión
Express de este producto.
1. Para iniciar Visual Basic .NET 2010, deberá clickear en el menú Inicio de Windows, luego en
“Todos los Programas” y posteriormente en el grupo de programas “Microsoft Visual Studio
2010, y finalmente en “Microsoft Visual Studio 2010”.
En este momento, se mostrará la pantalla de bienvenida del Entorno Integrado de Desarrollo
(IDE) de Visual Studio 2010.
En este momento, procederemos a crear una “Nueva aplicación para Windows” utilizando el
lenguaje de programación Visual Basic 2010. Para ello, haga clic en el menú “Archivo” y luego
“Nuevo Proyecto” (o presione Control+U). Allí, se mostrará la siguiente ventana:
2. Vaya a la sección izquierda y clickee en la categoría “Visual Basic” y luego, en la región
derecha, seleccione en “Aplicación de Windows Forms”. Finalmente, en la parte inferior de la
pantalla, diríjase al cuadro de texto “Nombre” y escriba el nombre que tendrá nuestro proyecto.
En este caso, colocaremos “sistema” (todo en minúscula), tal como se aprecia en la siguiente
figura:
3. Y finalmente presionamos el botón “Aceptar” para crear el proyecto.
Un proyecto es una colección de archivos (código fuente, imágenes y demás archivos) que el
programador o diseñador de software integra para dar origen al producto final (software)
deseado.
3. Una vez que hemos dado nombre al proyecto, se muestra el entorno de desarrollo integrado,
el cual es un conjunto de herramientas que al trabajar de manera integrada, facilitan el diseño,
codificación, prueba, depuración y demás actividades relacionadas con el desarrollo de
software. A continuación se describen cada una de sus partes:
Cuadro de
herramientas
Menú
Principal
Barras de
herramienta
s
Explorador
de Soluciones
Formulari
o
Escritorio
Orígenes de datos
Ventana
Propiedades
Barra de
Estado
Escritorio: Es el área blanca que sirve de “soporte” a los elementos que componen el entorno
integrado de desarrollo. No confundir con el escritorio de Windows.
Menú Principal: Es el listado de opciones que permiten desencadenar las distintas acciones
permitidas por el IDE. Es muy similar al de otros programas Windows como Word o Excel, pero
con posibilidades para crear o abrir proyectos, depurar archivos, ejecutar complementos entre
muchas otras posibilidades.
Barras de Herramientas: Contiene métodos abreviados para realizar distintas actividades
referentes al desarrollo del proyecto. Su funcionamiento es muy similar al de otras aplicaciones
Windows.
Formulario: Es el principal objeto contenedor de Visual Basic donde se pueden “dibujar” las
interfaces a modo de ventanas y que pueden contener otros objetos que tienen diversos
comportamientos. Así como en Word existe el documento en blanco sobre el cual, el usuario
comienza a escribir, en Visual Basic existe el formulario.
Cuadro de Herramientas: Es una sección que aparece como una “pestaña” al lado izquierdo
de la ventana principal del IDE. Al clickear sobre ella, se pueden observar una serie de iconos
que representan “clases”, las cuales pueden crear objetos dentro del formulario. Se clasifican
por categorías y abarcan desde etiquetas y cuadros de texto hasta objetos para acceso a
datos.
Orígenes de Datos: Es una sección que permite configurar la accesibilidad hacia bases de
datos (por ejemplo, SQL Server). Abarca la creación de orígenes de datos, creación de bases
de datos, tablas y demás elementos relacionados para utilizarlos dentro de la solución o
proyecto.
Explorador de soluciones: Proporciona una vista organizada de los proyectos y sus archivos,
así como acceso rápido a los comandos relativos a ellos. Normalmente, una barra de
herramientas asociada a esta ventana ofrece los comandos que se utilizan con más frecuencia
con el elemento resaltado en la lista.
Ventana Propiedades: Utilice esta ventana para ver las propiedades de los elementos
seleccionados. También puede utilizarla para ver las propiedades de archivos, proyectos y
soluciones.
Barra de Estado: Muestra el estado de la ejecución de un proceso o actividad dentro del
entorno de trabajo.
LOS OBJETOS BÁSICOS DE VB.NET
Visual Basic.NET permite insertar una gran diversidad de objetos que están dotados de
distintas funcionalidades. A continuación, se presentan algunos de ellos:
OBJETO
DESCRIPCIÓN
Permite activar la selección de objetos dentro del formulario.
Su función es permitir al usuario desplegar un conjunto de acciones al clickear sobre él.
Es muy común encontrar botones de comando como Aceptar o Cancelar. No permite el
ingreso de datos por el usuario en tiempo de ejecución
(Botón de comando)
Inserta una etiqueta de texto que sirve para identificar otros objetos. No permite el
ingreso de datos por el usuario en tiempo de ejecución
(Etiqueta)
(Cuadro
Crea un cuadro combinado (textbox+listbox) en el cual, se puede escribir texto y
seleccionar elementos de una lista. Presentan una flecha hacia abajo en la parte
derecha del cuadro que al ser clickeada, muestra la lista.
combinado)
El cuadro de lista presenta un listado de elementos de los cuales se puede elegir uno o
varios según se requiera, pero no permite escritura como en el caso del combobox.
(Cuadro de lista)
(Cuadro
máscara)
de
texto
y
Es un cuadro de texto, pero con una máscara de entrada. Se puede utilizar para
restringir el ingreso de ciertos caracteres (por ejemplo, una fecha en formato específico)
u ocultar los caracteres ingresados mostrando otros (como una contraseña).
Permite la inserción de imágenes dentro de un formulario. Por ejemplo, una fotografía.
Algunos formatos soportados son el bmp, jpg y png.
(Caja de
dibujo)
(Cuadro
Es el objeto primordial para ingreso de texto. Representa un recuadro donde el usuario
puede ingresar un valor que se almacena como una cadena de caracteres.
de texto)
(Botón
de opción)
(Barra
Los Botones de opción se utilizan para crear conjuntos de opciones dentro de las cuales,
sólo se podrá elegir una de ellas, siendo mutuamente excluyentes. Por ejemplo, una
persona no puede tener simultáneamente el sexo “Masculino” y “Femenino”.
Es una barra de progreso que permite mostrar el avance de un proceso en ejecución. Su
uso es típico en los programas de instalación.
de progreso)
ACCESO A DATOS DESDE VB.NET
En este curso, se creará una pequeña aplicación que conste de un formulario vinculado hacia
una base de datos de Microsoft Access 2010, de tal manera que será necesario que Visual
Basic .NET se “conecte” a ella. Para ello, el Visual Studio .NET provee una serie de
herramientas para acceso a datos, entre las cuales se encuentra el ADO.NET.
1. Para activar el ADO.NET, diríjase al menú
“Proyecto” y luego, haga click en “Agregar
Referencia”, de tal manera que se muestre la
siguiente figura:
Este cuadro de diálogo muestra la lista de
referencias que se pueden utilizar dentro de
las aplicaciones .NET, separados por fichas:
NET: Son las que corresponden a clases de
Visual Studio.NET
COM: Corresponden al “antiguo” modelo de
objetos OCX de versiones anteriores de Visual
Basic.
Proyecto: Corresponde a proyectos de VS.NET que pueden insertarse dentro de nuestra
aplicación y EXAMINAR la utilizaremos cuando queramos vincular una biblioteca (dll), objeto
(ocx) específico a nuestro proyecto.
2. Seleccione la ficha “NET” y allí, posiciónese sobre el ítem “adodb” tal como se muestra:
3. Finalmente, haga click en Aceptar y ya la
referencia habrá sido agregada al proyecto,
permitiendo vincular datos al mismo.
Nota: Si desea agregar varias referencias al
mismo tiempo, puede seleccionar varios
elementos
de
la
lista
manteniendo
presionada la tecla CTRL y clickeando sobre
cada ítem de ella.
3. Ya estamos listos para empezar a trabajar con datos desde Visual Basic .NET 2010.
Específicamente, en este curso aprenderemos cómo vincularnos con Access 2010 aunque
ADO.NET permite conectividad con numerosos motores de bases de datos como SQL Server y
MySQL entre otros.
Es importante que antes de conectarnos con cualquier motor de bases de datos, revisemos la
documentación respectiva, ya que cada uno tiene características propias y de compatibilidad
con Visual Studio.NET y más específicamente con VB.NET
INSERTANDO OBJETOS EN NUESTRO FORMULARIO
Se pretende crear una pequeña aplicación que conste de un formulario con acceso a datos
donde el usuario puede crear, editar, eliminar y consultar registros de una tabla de “alumnos”
dentro de una base de datos de Access llamada “central”. Primeramente, debemos saber cómo
se insertan los objetos en nuestro formulario.
1. Insertaremos un label en nuestro formulario. Para ello, abrimos el cuadro de controles (nos
posicionamos con el mouse sobre la pestaña “cuadro de herramientas” que está a la izquierda
de la pantalla) y allí se abrirá la paleta de controles.
2. Ubicamos el icono
(que es el objeto que deseamos insertar).
3. Haga doble click sobre el icono identificado en el paso anterior (Label) y allí se insertará un
objeto de tipo “Etiqueta” en la esquina superior izquierda del formulario.
4. Arrastre el objeto “Label1” un poco hacia abajo, tal como se
muestra en la siguiente figura:
5. También puede insertar un
objeto en el formulario yendo al
cuadro de herramientas y
haciendo un clic sobre el control
deseado, luego, ir al formulario y
arrastrar de izquierda a derecha
el puntero de forma tal que el
objeto quede dibujado sobre
éste.
MODIFICACIÓN DE LAS
PROPIEDADES
DE
LOS
OBJETOS
Una propiedad es una característica de un objeto. Así como los seres humanos tienen una
altura, color de ojos, color de cabello, etc; los objetos también poseen características que
varían en su valor. Por ejemplo, la altura viene dada por un número (1.80) y una unidad (cms),
mientras que el color viene dado por una “palabra” como “negro” o “verde”; lo que quiere decir,
que una propiedad de objeto recibe un valor, tal como a una variable se le asigna un dato.
Las propiedades de los objetos vienen preestablecidas por el lenguaje y son visibles en la
ventana “propiedades” de Visual Studio. Si queremos visualizar las propiedades de un objeto
cualquiera, debemos seleccionarlo (haciendo un clic sobre él) y observar la ventana
propiedades (la que aparece si presionamos F4)
Ahora, modifiquemos algunas propiedades del formulario que tenemos en la pantalla:
1. Haga un clic sobre el formulario (no sobre la etiqueta que acabamos de agregar)
2. Si no se ha mostrado la ventana propiedades en el lado derecho de la pantalla, actívela
presionando F4.
Las propiedades aparecen en orden alfabético A-Z y pueden ser modificadas en tiempo de
diseño. Las mismas, aparecen en inglés. Esto se debe a compatibilidad con otros lenguajes VS
e incluso versiones anteriores.
No es absolutamente necesario que las aprenda o memorice, ya que cada objeto tiene sus
propiedades típicas y esenciales. Basta con haber instalado el sistema de ayuda o consultar
vía internet en caso de alguna duda.
A continuación, se describen las partes de la ventana propiedades con mayor detalle:
Nombre del
objeto
seleccionado y
Espacio de
nombres
Nombres de las
propiedades
Valores
asignados a
cada propiedad
Descripción de
la propiedad
seleccionada
En la parte superior se muestra una lista desplegable con el nombre del objeto y el espacio de
nombres del cual proviene. En el caso de la figura, dado que se trata una aplicación para
Windows, se observa “System.Windows.Forms….”
Esta lista desplegable también puede ser utilizada para seleccionar un objeto del formulario
directamente desde la ventana propiedades (sin clickear sobre el objeto del formulario).
En la parte izquierda se visualizan los nombres de las propiedades del objeto, por ejemplo:
Text, Tag, WindowState, etc.
Al lado de cada propiedad se encuentra el valor asignado a ella. En el ejemplo, se visualiza la
propiedad “Text” y su valor “Form1”, así como también ShowInTaskBar con True. Cabe
destacar que algunas propiedades reciben una cadena de caracteres, otras valores lógicos
(True/False) o numéricos como en el caso de Height y Width (altura, anchura).
Algunos especialistas aseguran que las propiedades deben pensarse como variables debido a
que a éstas también se le asignan valores de diversos tipos. El tipo de datos de estos valores,
dependerá entonces de la naturaleza de la propiedad, por lo que se recomienda documentarse
un poco sobre su utilización.
3. Ahora bien, es el momento de modificar algunas propiedades de nuestro formulario. Si aún
no lo hemos seleccionado, hagamos un click sobre él e inmediatamente dirijámonos a la
ventana propiedades.
4. Busquemos la propiedad Text y coloquemos la frase “Mantenimiento de Alumnos” (sin
comillas). Esto cambiará el título de nuestra ventana.
5. Ahora, vayamos a la propiedad MaximizeBox y seleccionamos el valor False. Esto para
evitar que nuestro formulario tenga el botón Maximizar.
6. Luego, en la propiedad StartUpPosition seleccione el valor CenterScreen para que la
ventana aparezca en el centro de la pantalla cuando nuestra aplicación se ejecute. Recuerde
que aún estamos en tiempo de diseño.
7. Ahora, es el momento de asignar el Nombre del objeto (Name), propiedad de mucha
importancia, ya que a través de él, haremos referencia a dicho objeto a nivel de código. En el
caso de nuestro formulario, lo llamaremos frmAlumnos.
Así como los seres humanos tienen características únicas (por ejemplo el número de cédula)
que no es compartido por ningún otro, por lo menos en el mismo País, los objetos tienen una
propiedad que es el nombre (o name) cuyo valor no puede ser compartido por ningún otro
objeto dentro del mismo formulario. En otras palabras, dos o más objetos no pueden tener el
mismo nombre dentro del mismo formulario.
Para asignar el nombre a un objeto, deben seguirse una serie de reglas, entre las cuales
tenemos:
a. El nombre de un objeto no distingue entre mayúsculas y minúsculas. Es lo mismo escribir
“TXTCEDULA” que “txtCedula”, aunque por razones de estética, se recomienda el uso de
minúsculas para el prefijo, mayúscula para la inicial del nombre y el resto en minúsculas.
b. El nombre no puede quedar en blanco y tampoco empezar con números
c. El nombre no puede ser una palabra reservada o propia del lenguaje. Ejm: “function”
d. No deben tener caracteres especiales ($,#, ¡) por ejemplo.
e. Deben ser descriptivos de su contenido, aunque no demasiado largos para su comprensión
f. No deben tener espacios en blanco. Si necesita separar palabras, utilice el guion bajo (_)
g. Es altamente recomendado que se utilice un prefijo en el nombre del objeto y éste debe
estar asociado al tipo al que corresponde, naturaleza o funcionalidad.
Durante años, se han utilizado prefijos que sin ser estándares, se han vuelto costumbre y
obligación entre los programadores no sólo de Visual Basic, sino de otras herramientas. Ellos
son:
PREFIJO
frm
lbl
txt
cmd
cmb
opt
pgr
pic
msk
TIPO DE OBJETO
Formulario
Etiqueta (label)
Cuadro de texto (textbox)
Botón de comando (button o command button)
Cuadro combinado (combobox)
Botón de opción (Radiobutton)
Barra de progreso (Progressbar)
Cuadro de imagen (Picturebox)
Cuadro de texto enmascarado (Masked Textbox)
EJEMPLO
frmAlumnos
lblCedula
txtCedula
cmdGuardar
cmbEstadoCivil
optMasculino
pgrAvance
picFotoEmpleado
mskNumCuenta
El uso de los prefijos tiene su importancia en el hecho de que en un formulario pueden existir
muchos objetos de diversos tipos. Sería confuso llamar a un objeto “Cédula” y luego escribir
código asociado a él, ya que no sabríamos si se trata de un cuadro de texto o una etiqueta.
Entonces sería más descriptivo escribir txtCedula e identificar al objeto como un textbox sin
necesidad de tener que ir al formulario y visualizar el objeto en cuestión.
A continuación se muestran algunos nombres de objeto con errores comunes:
NOMBRE
frmFormularioPrincipal
2lblNombre
txtNombre Alumno
cmdCommand1
Sub
pic$Foto
TXTcedulaALUMNO
ERROR
Redundancia. Sólo con el prefijo frm sabemos que es un formulario
Comienza con un número
Tiene un espacio en blanco entre las palabras “Nombre” y “Alumno”
Aun cuando tiene prefijo, el nombre no es descriptivo de su función
La palabra “Sub” está reservada por el lenguaje Visual Basic
Contiene un carácter especial $
El nombre es correcto, pero no es muy estético y genera confusión
DIBUJANDO NUESTRA INTERFAZ
Ahora que sabemos cómo insertar objetos en nuestro formulario, comenzaremos a “dibujar”
todos los objetos que contendrá. Recordemos que ya tenemos una etiqueta llamada “Label1”.
1. Primeramente, hagamos un clic sobre ella y quedará seleccionada.
2. Luego, vayamos a la ventana propiedades (si no se muestra, presione F4).
3. Ubicamos la propiedad Name. El nombre a asignar será lblCedula
4. Ahora, vayamos a la propiedad
Text y coloquemos el valor
“Cédula” (sin comillas y puede
incluir el acento).
5. En este momento, el objeto
cambiará el texto de Label1 a
Cédula.
El formulario quedará como se
muestra en la siguiente figura:
Ahora, procedamos a agregar el resto de los objetos
que necesitamos para que nuestro formulario quede
listo para recibir el código. En la siguiente tabla se
indican los nombres de objetos, tipos y otras
propiedades que usted deberá ajustar.
Recuerde que para insertar un objeto debe ir al
cuadro de herramientas y hacer doble clic sobre el
icono del tipo de objeto que desea insertar, sea un
cuadro de texto, botón, etc.
Así mismo, en la tabla no aparece el label “Cédula” puesto que ya lo hemos agregado
anteriormente.
TIPO DE OBJETO
PROPIEDAD
VALOR
Label
Name
Text
lblNombre
“Nombre” (sin comillas)
Label
Name
Text
lblApellido
“Apellido” (sin comillas)
Label
Name
Text
lblDir
“Dirección” (sin comillas)
Label
Name
Text
lblTelf
“Teléfono” (sin comillas)
Label
Name
Text
lblTelf
“Teléfono” (sin comillas)
6. Ahora, es el turno de los cuadros de texto (textboxes). Nota: El texto de la propiedad Text se
borrará dejando la propiedad vacía.
TIPO DE OBJETO
PROPIEDAD
VALOR
TextBox
Name
Text
txtCedula
“” (Vacío)
TextBox
Name
Text
txtNombre
“”
TextBox
Name
Text
txtApellido
“”
TextBox
Name
Text
txtDir
“”
TextBox
Name
Text
txtTelf
“”
Nota: Todos los textboxes deberán tener además, la propiedad Enabled a False.
7. Procedamos ahora a incluir los botones de comando (buttons) que desplegarán las acciones
en el formulario.
TIPO DE OBJETO
PROPIEDAD
VALOR
Button
Name
Text
cmdAgregar
Agregar
TextBox
Name
Text
cmdModificar
Modificar
TextBox
Name
Text
cmdEliminar
Eliminar
TextBox
Name
Text
cmdBuscar
Buscar
TextBox
Name
Text
cmdBuscar
Buscar
TextBox
Name
Text
cmdCerrar
Cerrar
Name
Text
Enabled
cmdGuardar
Guardar
False
Name
Text
Enabled
cmdCancelar
Cancelar
False
TextBox
TextBox
Al terminar de ajustar las propiedades, sólo basta ajustar algunos detalles estéticos como el
tamaño de los cuadros de texto (trate de dejarlos todos del mismo tamaño). Para ello, utilice el
mouse como si de ajustar una imagen se tratara.
El producto final queda de la siguiente manera:
Es importante resaltar
que todos los botones
de comando deben
estar con la propiedad
Enabled establecida
a True, exceptuando
los
botones
cmdGuardar
y
cmdCancelar,
los
cuales deben estar
con
la
propiedad
Enabled establecida
a False.
Es un buen momento
para
guardar
los
cambios
en
el
proyecto. Presione el icono del disquete en la barra de herramientas (o CTRL+S)
UN VISTAZO A LAS PROPIEDADES QUE HEMOS UTILIZADO
Como se habrá dado cuenta, hemos utilizado algunas propiedades al momento de diseñar
nuestra interfaz. De allí, es importante conocer su significado de cada una de ellas y algunos
detalles que facilitarán nuestro trabajo.
Name: Indica el nombre del objeto. Este punto fue tratado extensivamente en un apartado
anterior. Aplica para todos los objetos.
MaximizeBox / MinimizeBox: Permite que el formulario muestre los botones de Maximizar y
Minimizar. Aplica al objeto Form.
Enabled: Activa o desactiva un objeto para que el usuario pueda posicionarse o escribir sobre
él. Aplica a los textboxes, combos, forms, entre muchos otros.
StartupPosition: Indica en qué posición se desea que el formulario se muestre cuando se
ejecute. Si se quiere que aparezca en el centro de la pantalla, seleccione “CenterScreen”.
ShowInTaskBar: Indica si el formulario debe mostrarse en la barra de tareas o no. Aplica al
objeto Forn.
Height / Width: Alto / Ancho de un objeto. Indican las dimensiones de un objeto. Aparecen
como detalle de la propiedad Size. Aplica para distintos tipos de objetos.
Text: Importante propiedad que almacena el valor ingresado en un textbox (el que el usuario
ingresa), o bien, el titulo o leyenda de un objeto. Por lo tanto, no debe confundirse con el
Name, ya que el Text es una cadena de caracteres que en la mayoría de los casos es visible
en tiempo de diseño y ejecución, además, permite el uso de espacios en blanco y caracteres
especiales.
En otras palabras, si deseamos saber qué valor ha ingresado el usuario en el cuadro de texto
con el nombre txtCedula, debemos leer la propiedad Text del referido objeto.
PERSPECTIVA DEL PROGRAMA (¿QUÉ DEBE HACER Y CÓMO LO HARÁ?)
El programa debe permitir el ingreso, actualización, eliminación y consulta de datos de los
alumnos de un colegio. Al inicio, todos los cuadros de texto deben estar desactivados y sólo se
activarán cuando el usuario desee agregar o modificar datos. En tal caso, los únicos botones
que deben quedar activos son Guardar y Cancelar, ya que durante una operación de edición o
agregación sólo se pueden almacenar los datos o deshacerlos.
Al inicio, los botones Nuevo, Modificar, Eliminar, Cerrar y Buscar, deben estar activos ya que se
espera que el usuario desencadene una de estas acciones, estando inactivos los botones
Guardar y Cancelar.
Luego de una operación de agregación o modificación, cuando el usuario selecciona Guardar o
Cancelar, se regresan todos los cuadros de texto a su estado inactivo y los botones Nuevo,
Modificar, Eliminar, Cerrar y Buscar, se activan; desactivando entonces a Guardar y Cancelar.
ADICIÓN DEL CÓDIGO A NUESTRO FORMULARIO.
Es el momento de codificar los objetos del formulario para conectarnos a nuestra base de datos
“central” (de Access 2010), específicamente a la tabla “alumnos”. Para ello, hagamos doble
click sobre cualquier área libre de nuestro formulario. Al hacer esto, aparecerá la siguiente
ventana:
Esta
es
la
ventana
“Código” donde podrá
agregar las instrucciones
necesarias para que su
aplicación funcione según
sus necesidades.
No elimine el código que
el IDE de Visual Studio ha agregado por usted, ya que son instrucciones propias de lenguaje
sobre los objetos que ha insertado.
En la figura se muestran las siguientes estructuras:
Public Class frmAlumnos
Private Sub frmAlumnos_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
End Sub
End Class
El Public Class nos indica que se ha definido una Clase llamada frmAlumnos. Una clase es
una plantilla u objeto base sobre la que se habrá de “hacer algo”. Recuerde algunas
definiciones básicas de la programación orientada a objetos.
El Public Class deberá terminar con su respectivo End Class.
Así mismo, se observa un Private Sub frmAlumnos_Load(….) que define un Procedimiento
de Evento llamado frmAlumnos_Load, es decir, un conjunto de instrucciones que se
ejecutarán cuando el formulario se “carga” en memoria.
Un Procedimiento de Evento es un conjunto de instrucciones o código que se ejecutará en
determinado momento y que no devuelve ningún valor. Por ejemplo, si se desea mostrar un
mensaje o cualquier otra acción que se nos pueda ocurrir. No debe confundirse con una
Función que es una serie de instrucciones pero que si devuelven valores. Por ejemplo, si
invocamos la función Raiz_Cuadrada(4), esperaremos que nos devuelva el valor 2.
Cuando se abre un Private Sub debe cerrarse con un End Sub. De lo contrario, se generará
un error. No debe borrar las líneas Private Sub ni End Sub.
Algunos Provedimientos de Evento (o Sub) reciben valores para que puedan hacer lo que
tienen programado. Visual Basic nos coloca automáticamente cuáles son esos valores
llamados Parámetros. Los podemos visualizar en la línea:
Private Sub frmAlumnos_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Entiéndase que los parámetros son los que están encerrados entre paréntesis y tampoco
deben ser cambiados por el programador, aunque los valores que reciben si pueden utilizarse a
conveniencia.
1. Ahora, ubíquese en la línea Public Class frmAlumnos y agregue unas 2 o 3 lineas de
código en blanco (presione ENTER al final de la palabra frmAlumnos) tal como lo haría en
Word, luego, agrégue las siguientes líneas de código:
Public db As New ADODB.Connection 'Declara variable publica de conexion
Public rst As New ADODB.Recordset 'Declara variable publica de recordset
Lo primero que observamos, es la declaración de dos variables públicas, una para abrir la
conexión hacia nuestra base de datos y otra para “abrir” la tabla o conjunto de registros que
necesitamos. Vayamos paso a paso…
En Visual Basic (con las librerías de ADO.NET) existe un objeto llamado Connection que es
invisible en tiempo de diseño y de ejecución, pero que nos permite conectarnos con algunos
motores de bases de datos (como Access). De allí que se declara una variable llamada db
como un objeto NUEVO (New) ADODB.Connection.
Este objeto también tiene propiedades que podemos utilizar (se verán posteriormente) y
muchas otras bondades.
Cabe destacar que una Variable podría definirse como un objeto de programa que almacena
un valor temporalmente (en memoria) y que podemos utilizar para realizar algún cálculo o
acción cualquiera. Por ejemplo, si deseásemos almacenar la edad de una persona en memoria,
podríamos declarar una variable llamada Edad y colocarle el valor 30 en números. Edad=30.
Así, quedaría establecido el valor 30 a la variable que hemos dispuesto.
Las variables pueden tener distintos tipos de datos y para nombrarlas se seguirán los mismos
lineamientos de los nombres de objetos. Los tipos de datos soportados por VB.NET 2010 se
muestran al final de esta guía
En el mismo orden de ideas, para declarar una variable de cualquier tipo se utiliza la palabra
reservada DIM y la siguiente sintaxis:
Dim Nombre_Variable AS [NEW] Tipo_de_Datos
Dim: Es la palabra “mágica” para declarar una variable
Nombre_Variable: Indica el nombre de la variable que se declara. Siga los mismos
convencionalismos que los nombres de objeto.
AS: Significa “como…” es decir, declarar la variable “X” como… (para luego indicar el tipo de
datos)
NEW: Palabra opcional utilizada para declarar variables de algunos tipos de objetos como
Connection y Recordset. Indica que la variable declarada hace referencia a un objeto.
Tipo_de_Datos: Indica el tipo de datos que se le asignará a la variable. Puede ser un String
(Cadena de caracteres), Byte, Date (Fecha) o cualquier tipo permitido.
2. Es el momento de agregar el código para abrir la conexión a la base de datos. Es importante
que tenga en cuenta lo siguiente:
El archivo de la base de datos debe llamarse “central.accdb” y debe estar ubicado en la carpeta
\debug del proyecto, en este caso:
C:\Documents and Settings\Administrador\Mis documentos\Visual Studio 2010\Projects\sistema\sistema\bin\Debug
De no ser así, podría generarse un error al momento de ejecutar el programa, ya que no podría
encontrar la base de datos.
3. Ahora, agregue las siguientes líneas de código dentro del procedimiento Private Sub
frmAlumnos_Load
db.ConnectionString = "Provider =Microsoft.ACE.OLEDB.12.0; Data Source =" &
Application.StartupPath & "\sistema.accdb; Persist Security Info =False;"
db.Open()
Nota: La instrucción db.ConnectionString se escribirá toda en una línea, ya que por razones de
espacio, en esta guía abarca 2 líneas. Así mismo, la instrucción db.open() debe estar en una
línea independiente de la anterior.
Al analizar un poco el código, se tiene que el objeto db tiene una propiedad llamada
ConnectionString que no es más que una Cadena de Conexión, es decir, una cadena de
caracteres de uso especial donde se le indica a Visual Basic (o mejor dicho, a ADO.NET) la
ubicación de la base de datos, el motor al cual pertenece e inclusive algunos parámetros de
seguridad.
La cadena de conexión utilizada en este ejemplo es válida para Access 2007 y 2010. Si se
desea utilizar versiones anteriores u otros motores de bases de datos como MySQL, SQL
Server, ORACLE o similar, debe buscar la documentación pertinente.
En la página http://www.connectionstrings.com/
podrá encontrar las cadenas de conexión
que necesite para numerosos gestores de bases de datos.
Las partes de la cadena de conexión son:
a. El Proveedor (Provider o motor de Bases de datos). En este caso es OLEDB.12.0
b. El Origen de Datos (Data Source). Es decir, la ruta donde se encuentra nuestro archivo de
bases de datos. Nótese que se utiliza la instrucción Application.StartupPath para obtener
automáticamente la ruta desde donde se está ejecutando nuestra aplicación, asumiendo que
es la misma donde se encuentra la base de datos.
c. Opciones Adicionales: Dependen de cada motor de bases de datos. Por ejemplo, si la base
de datos tiene contraseña, debemos especificar el Password.
4. Finalmente, se observa la instrucción db.Open que abrirá propiamente la conexión y la base
de datos quedará lista para ser utilizada por nuestro formulario.
Es importante resaltar que estas instrucciones se han colocado en el evento Load para que se
ejecuten cuando el formulario se carga en memoria.
5. Procedamos ahora a escribir el código del botón cmdAgregar, específicamente, en el
evento Click(). Para ello, hagamos doble click sobre nuestro botón cmdAgregar y veremos
que se abre la siguiente ventana:
6. Es el momento de copier el siguiente código en el procedimiento cmdAgregar_Click(..)
Me.txtApellido.Enabled = True
Me.txtNombre.Enabled = True
Me.txtCedula.Enabled = True
Me.txtDir.Enabled = True
Me.txtTelf.Enabled = True
Me.txtApellido.Text = ""
Me.txtNombre.Text = ""
Me.txtCedula.Text = ""
Me.txtDir.Text = ""
Me.txtTelf.Text = ""
Me.cmdAgregar.Enabled = False
Me.cmdModificar.Enabled = False
Me.cmdBuscar.Enabled = False
Me.cmdEliminar.Enabled = False
Me.cmdCerrar.Enabled = False
Me.cmdGuardar.Enabled = True
Me.cmdCancelar.Enabled = True
Básicamente, lo que se hace en este código es activar todos los cuadros de texto para que el
usuario pueda escribir sobre ellos (Enabled=True) y se limpia el contenido para que queden en
blanco (se establece la propiedad Text a “” que indica “vacío”).
Nótese el uso de la palabra reservada Me que no es más que una referencia al formulario
actual (en este caso, frmAlumnos). Recordemos que por herencia, el objeto formulario (Me),
”contiene” el resto de los objetos como cuadros de texto y botones.
Finalmente, se activan solamente los botones para Guardar y Cancelar ya que serán las
únicas opciones permitidas al agregar nuevos registros a la base de datos (Enabled=True) y
se desactiva el resto de los botones.
7. Ahora, haga doble clic sobre el botón cmdModificar y escriba el código en el evento
Click(…) que se muestra a continuación:
Me.txtApellido.Enabled = True
Me.txtNombre.Enabled = True
Me.txtDir.Enabled = True
Me.txtTelf.Enabled = True
Me.cmdAgregar.Enabled = False
Me.cmdModificar.Enabled = False
Me.cmdBuscar.Enabled = False
Me.cmdEliminar.Enabled = False
Me.cmdCerrar.Enabled = False
Me.cmdGuardar.Enabled = True
Me.cmdCancelar.Enabled = True
En este botón lo único que hacemos es activar los cuadros de texto (excluyendo txtCedula) ya
que cuando editamos un registro, no “debemos” cambiar el valor del campo clave de la tabla
por razones de integridad de datos. Además, es importante destacar que como estaríamos
editando un registro, sólo permitimos los botones cmdGuardar y cmdCancelar, dejando el
resto inactivo.
8. Ahora, agregamos el código del botón cmdCancelar, específicamente en el evento Click(..).
Hacemos doble clic sobre este botón y allí, copiamos el siguiente código:
Me.txtApellido.Enabled = False
Me.txtNombre.Enabled = False
Me.txtCedula.Enabled = False
Me.txtDir.Enabled = False
Me.txtTelf.Enabled = False
Me.txtApellido.Text = ""
Me.txtNombre.Text = ""
Me.txtCedula.Text = ""
Me.txtDir.Text = ""
Me.txtTelf.Text = ""
Me.cmdAgregar.Enabled = True
Me.cmdModificar.Enabled = True
Me.cmdBuscar.Enabled = True
Me.cmdEliminar.Enabled = True
Me.cmdCerrar.Enabled = True
Me.cmdGuardar.Enabled = False
Me.cmdCancelar.Enabled = False
Es importante revisar el hecho de que como se está cancelando la edición de un registro,
desactivamos los cuadros de texto, limpiamos su contenido para evitar que se muestren
valores de registros anteriores y en cuanto a la botonera, volvemos cada botón a su estado
inicial, desactivando a cmdGuardar y cmdCancelar, dejando activos a los demás. Esto
permitirá que el usuario puede agregar, modificar, eliminar o buscar según lo requiera.
9. Ahora, agregamos el código del botón cmdCerrar, específicamente en el evento Click(..).
Este servirá para terminar la ejecución de nuestra aplicación.
Application.Exit()
Es importante destacar que no es lo mismo cerrar una aplicación (Terminarla) que cerrar un
formulario (destruirlo o descargarlo de memoria). En este caso, se utiliza la instrucción
Application.Exit() para terminar nuestra aplicación, ya que por ahora sólo tiene un formulario.
Sin embargo, para aquellas aplicaciones donde tengamos muchos forms y sólo deseemos
cerrar el actual, dejando la ventana principal abierta, es conveniente utilizar la instrucción
Me.Close()
10. Procedamos Entonces a agregar el código del botón cmdGuardar (Evento Click( )). Es
importante resaltar que en este procedimiento, se conectará con la tabla alumnos de la base
de datos previamente creada. (sistema.accdb).
Antes de describir el código, veamos algunas estructuras básicas que utilizaremos…
Primeramente, la estructura condicional if la cual, permite evaluar una condición y tomar uno
de dos caminos posibles (nunca ambos). Su sintaxis es la siguiente…
If condición then
Instrucciones
Else
Instrucciones
End if
La condición se evalúa y si resulta verdadera, se ejecuta el primer bloque de instrucciones (el
que está antes del Else). De lo contrario, (es decir, si la condición es falsa, se ejecuta el
segundo bloque. También debe estar consciente de que el bloque Else es opcional
dependiendo del caso y en cualquier momento puede ejecutar Exit Sub para salir de ese
procedimiento sin continuar ejecutando el resto de las instrucciones.
Otra instrucción (o método) que debemos revisar es el MessageBox.Show() que dibuja
rápidamente un cuadro de mensaje en la pantalla. Recordemos que en Windows existen 4
tipos de mensajes: 1=Información (los que tienen el icono de i), 2=Advertencia (los que tienen
la exclamación), 3=Pregunta (tienen la interrogación) y 4=Errores críticos (los que tienen la “x”).
Así, la sintaxis general del MessageBox.Show() es la siguiente:
returnValue = MessageBox.Show(text, titulo, botones, icono)
text: Texto que se va a mostrar en el cuadro de mensaje.
título: Texto que se va a mostrar en la barra de título del cuadro de mensaje.
Botones: Uno de los valores MessageBoxButtons que especifica qué botones se mostrarán en el
cuadro de mensaje.
Icono: Valor que indica el icono a mostrar en el cuadro. Corresponde con uno de los valores de
la colección MessageBoxIcon Los valores permitidos por MessageBoxIcon son los siguientes:
Valor
Descripción
Asterisk
El cuadro de mensaje está compuesto por un símbolo que consiste en un letra 'i'
minúscula en un círculo.
Error
El cuadro de mensaje está compuesto por un símbolo que consiste en una X
blanca en un círculo con fondo rojo.
Exclamation El cuadro de mensaje está compuesto por un símbolo que consiste en un signo
de exclamación en un triángulo con fondo amarillo.
Hand
El cuadro de mensaje está compuesto por un símbolo que consiste en una X
blanca en un círculo con fondo rojo.
Information
El cuadro de mensaje está compuesto por un símbolo que consiste en un letra 'i'
minúscula en un círculo.
None
El cuadro de mensaje no contiene ningún símbolo.
Question
El cuadro de mensaje está compuesto por un símbolo que consiste en un signo
de interrogación en un círculo.
Stop
El cuadro de mensaje está compuesto por un símbolo que consiste en una X
blanca en un círculo con fondo rojo.
Warning
El cuadro de mensaje está compuesto por un símbolo que consiste en un signo
de exclamación en un triángulo con fondo amarillo.
Los valores permitidos por MessageBoxButtons son los siguientes
Valor
Descripción
AbortRetryIgnore
El cuadro de mensaje contiene los botones Anular, Reintentar y Omitir.
OK
El cuadro de mensaje contiene un botón Aceptar.
OKCancel
El cuadro de mensaje contiene un botón Aceptar y otro Cancelar.
RetryCancel
El cuadro de mensaje contiene un botón Reintentar y otro Cancelar.
YesNo
El cuadro de mensaje contiene un botón Sí y otro No.
YesNoCancel
El cuadro de mensaje contiene botones de Si, No y Cancelar
También debemos revisar el método Execute correspondiente al objeto ADODB.Connection
(en nuestro caso, la variable db que declaramos al inicio). Con Execute podemos ejecutar una
instrucción de SQL en nuestra base de datos. Dicha instrucción debe pasarse como una
cadena de caracteres así:
db.Execute(“DELETE * FROM alumnos”)
En este caso, el objeto db (que es una conexión de ADO), ejecuta la instrucción “DELETE *
FROM alumnos” que le hemos pasado como parámetro. También puede utilizarse con otras
instrucciones como INSERT INTO y UPDATE.
Así mismo, debemos conocer algunos métodos sobre el objeto recordset (en nuestro caso, la
variable se llama lrst).
lrst.open(), crea una nueva colección de registros en la memoria (recordset). Para abrirlo con
el open, se le debe pasar una instrucción SELECT de SQL. Su sintaxis general es como sigue:
rst.open (cadenaSQL, conexión, tipo_de_cursor,tipo_de_bloqueo)
El parámetro cadenaSQL indica una instrucción SELECT de SQL la cual permitirá abrir un
conjunto de registros de la(s) tabla(s) especificadas.
La variable conexión no es más que una variable tipo objeto que hace referencia a nuestra
conexión de ADO.NET (la que hemos declarado como pública en nuestro formulario).
El tipo_de_cursor se refiere al tipo de puntero de registros. Un puntero de registros,
apuntador o cursor es una variable dinámica que marca la posición de un registro dentro de la
tabla. Esto permite conocer la ubicación del mismo entre otras posibilidades. Existen varios
tipod de puntero, entre los cuales se encuentran el adOpenDynamic que se utiliza para
lectura-escritura de registros en las tablas. Puede utilizar instrucciones SQL combinadas con
INNER JOIN y funciones de todo tipo. Por suparte el adOpenForwardOnly es de sólo lectura y
se utiliza principalmente para las búsquedas de registros, ya que el tiempo de carga en
memoria es mucho menor que con el adOpenDynamic.
Para mayor información, consulte la ayuda de Visual Stuio.NET 2010. Las constantes descritas
anteriormente, pertenecen a la colección de objetos ADODB.CursorTypeEnum.
En lo que corresponde al tipo_de_bloqueo es el tipo de bloqueo de registros utilizado por el
recordset. En otras palabras, si un usuario está actualizando un registro dentro de la tabla
alumnos, habría que bloquear el mismo para evitar que otro usuario intentara modificarlo
simultáneamente, pero que al terminar de realizar la actualización sobre éste, que quedase
disponible para cualquier usuario. Es como si alguien quisiese utilizar nuestros zapatos
mientras nosotros los llevamos puestos. Obviamente esto no es posible a menos que nos los
quitemos y los dejemos disponibles para la otra persona que los desee utilizar.
El ejemplo anterior corresponde al bloqueo Optimista, es decir, sólo se bloquea el registro que
se está utilizando en ese momento y no se bloquea la totalidad de la tabla.
Por su parte, existe el bloqueo Pesimista que no es más que el bloqueo de toda la tabla para
evitar que otros usuarios puedan acceder a ella mientras nosotros la estamos utilizando. Esta
opción no es práctica en entornos multiusuario y debe utilizarse con cuidado. Para activar el
bloqueo optimista o pesimista, utilizamos las constantes adLockOptimistic y
adLockPessimistic respectivamente.
Existen otros modos de bloqueo que pueden ser revisados en la documentación de Visual
Studio.NET 2010 y pertenecen a la colección de objetos ADODB.LockTypeEnum.
lrst.addnew() agrega un nuevo registro en blanco al final de la tabla, el cual, esperará que se
genere un update() para actualizar los cambios físicamente.
lrst.update() realiza los cambios físicamente en la tabla. Si ha indicado previamente un
addnew() se creará un nuevo registro, pero si no lo hace, se asumirá una modificación.
lrst.recordcount() devuelve un número entero que indica la cantidad registros encontrados
mediante un open() de un recordset. Para que el valor obtenido sea correcto, se debe
establecer
la
propiedad
CursorLocation
del
recordset
a
ADODB.CursorLocationEnum.adUseClient. Esto indicará que nuestro puntero de registros
se encuentra en nuestra máquina cliente, ya que de lo contrario, se asumirá que el recordset se
ha creado en el servidor, lo que es falso y devolverá un valor errado de -1.
Para revisar mayor documentación sobre la propiedad CursorLocation del objeto Recordset,
revise la documentación de Visual Studio.NET 2010.
lrst.close() = Cierra un recordset. Es importante cerrar un recordset abierto, ya que si hemos
dejado el recordset en memoria y volvemos a disparar erróneamente un open() se generará un
error. Adoptaremos la regla “recordset que abre, recordset que cierra”.
lrst.Fields.Item("campo").Value se utilize para “capturer”, (leer o escribir) el valor que tiene en ese
momento el campo de la tabla. Entonces, si queremos que el campo nombre de nuestra tabla
alumnos reciba el valor que tiene el objeto txtCedula.Text, debemos escribir:
lrst.Fields.Item("nombre").Value = Trim(Me.txtNombre.Text)
El nombre del campo debe ir entre comillas y podríamos utilizar el índice numérico del campo en la
tabla, pero no es muy recomendable; así, lo que el usuario haya ingresado en el cuadro de texto
txtNombre (específicamente en la propiedad Text), se le asignará al campo “nombre” del
recordset que tenemos previamente abierto en la memoria.
Recuerde que los valores no se guardarán físicamente en la tabla si no se dispara un update().
Es importante tomar en cuenta la función Trim() cuya función es eliminar los espacios en blanco del
valor de una variable tipo cadena. En este caso, si guardamos el valor “ALFREDO
“ dentro del
objeto txtNombre (específicamente en la propiedad Text), se guardará la cadena completa
incluyendo los espacios en blanco; pero si utilizamos Trim(Me.txtNombre.Text) y previamente
hemos incluido el valor con espacios, sólo se guardará la cadena como tal y se ignorarán todos los
“blancos” que existan.
Bien, ahora es el momento de escribir el código del botón cmdGuardar, evento Click(..)
Dim sSQL As String
Dim lrst As New ADODB.Recordset
lrst.CursorLocation=ADODB.CursorlocationEnum.adUseClient
If Me.txtApellido.Text = "" Or Me.txtCedula.Text = "" Or Me.txtDir.Text = "" Or
Me.txtNombre.Text = "" Or Me.txtTelf.Text = "" Then
MessageBox.Show("Debe ingresar todos los datos para poder guardar", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
Else
sSQL = "SELECT * FROM alumnos WHERE cedula='" + Trim(Me.txtCedula.Text) + "'"
lrst.Open(sSQL, db, ADODB.CursorTypeEnum.adOpenDynamic,
ADODB.LockTypeEnum.adLockOptimistic)
If lrst.RecordCount > 0 Then
If MessageBox.Show("Ya existe esta cédula. ¿Reemplazar Registro?", "Registro
Existente", MessageBoxButtons.YesNo, MessageBoxIcon.Question) =
Windows.Forms.DialogResult.No Then
lrst.Close()
Exit Sub
Else
db.Execute("DELETE * FROM alumnos WHERE cedula='" + Trim(Me.txtCedula.Text)
+ "'")
End If
End If
lrst.AddNew()
lrst.Fields.Item("cedula").Value = Trim(Me.txtCedula.Text)
lrst.Fields.Item("nombre").Value = Trim(Me.txtNombre.Text)
lrst.Fields.Item("apellido").Value = Trim(Me.txtApellido.Text)
lrst.Fields.Item("dir").Value = Trim(Me.txtDir.Text)
lrst.Fields.Item("telf").Value = Trim(Me.txtTelf.Text)
lrst.Update()
MessageBox.Show("Registro Guardado", "Guardar", MessageBoxButtons.OK,
MessageBoxIcon.Information)
lrst.Close()
Me.cmdCancelar_Click(sender, e)
End If
Entonces, es poco lo que habría que acotar sobre el procedimiento de guardar. Primeramente,
se declara una variable tipo recordset (local) para abrir la tabla alumnos y se le establece que
el cursor se abre en el equipo cliente (ya este punto se ha abordado anteriormente). Luego, se
verifica que los cuadros de texto tengan algún valor ingresado en su propiedad text. De no ser
así, se emite un mensaje de error. Nótese el uso del operador lógico OR, ya que se leería
como: “Si el nombre, o el apellido, o la cédula, etc, están en blanco, hacer esto…”. Si existe
error en el ingreso de los valores requeridos, se muestra un error y no continua ejecutando el
procedimiento. Nótese el Exit Sub.
Luego, se abre un recordset dinámico de tipo optimista para verificar si previamente no se
ha ingresado un alumno con esa misma cédula (utilizamos el recordcount). De ser así,
muestra un mensaje preguntando si se desea reemplazar este registro. Si responde
afirmativamente, se ejecuta un DELETE al registro en cuestión para borrarlo y crearlo con los
nuevos datos; pero si responde negativamente, sencillamente se cierra el recordset() y se
dispara un Exit Sub para salir del procedimiento.
Luego, se procede a la creación del registro y para ello, utilizamos el método addnew() del
recordset. Procedemos a asignarle los valores de los textboxes a cada campo de dicho
recordset como se ha explicado anteriormente y al final disparamos un update() para que los
cambios se realicen físicamente. Por último, mostramos un mensaje informando que se ha
guardado correctamente; cerramos el recordset con el close() e invocamos al evento click()
del botón cancelar con el único objetivo de volver a todos los objetos del formulario a su estado
inicial.
11. Ahora, haga doble click sobre el botón cmdEliminar (evento Click()) y agregue el
siguiente código…
Dim lrst As New ADODB.Recordset
Dim lsql As String
lrst.CursorLocation = ADODB.CursorLocationEnum.adUseClient
If Trim(Me.txtCedula.Text) = "" Then
MessageBox.Show("Debe tener un registro en pantalla para eliminarlo", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
lsql = "SELECT * FROM alumnos WHERE cedula='" + Trim(Me.txtCedula.Text) + "'"
lrst.Open(lsql, db, ADODB.CursorTypeEnum.adOpenDynamic,
ADODB.LockTypeEnum.adLockOptimistic)
If lrst.RecordCount > 0 Then
If MessageBox.Show("¿Seguro que desea Eliminar el registro?", "Eliminar",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) =
Windows.Forms.DialogResult.Yes Then
db.Execute("DELETE * FROM alumnos WHERE cedula='" + Trim(Me.txtCedula.Text) +
"'")
MessageBox.Show("Registro Eliminado", "Eliminación", MessageBoxButtons.OK,
MessageBoxIcon.Information)
End If
End If
lrst.Close()
Aquí lo único destacable es que verificamos que tengamos un registro mostrándose en la
pantalla (para ello hacemos if Trim(Me.txtCedula.Text)=”” y de no ser así, mostramos un
error y salimos del procedimiento. Ahora, si tenemos un registro en pantalla, abrimos un
recordset para ubicarlo, y si el recordcount > 0, es decir, que si lo encontró, preguntamos si lo
deseamos eliminar. Al responder afirmativamente al cuadro de mensaje, se ejecuta un
DELETE de SQL (con db.execute) y se muestra el mensaje de eliminación satisfactoria.
12. Es el turno del botón cmdBuscar, evento click(..). Hagamos doble clic sobre este botón y
agreguemos el siguiente código:
Dim lsValor As String
Dim lrst As New ADODB.Recordset
Dim lsql As String
lrst.CursorLocation = ADODB.CursorLocationEnum.adUseClient
lsValor = InputBox("Ingrese la cédula a buscar: ", "Búsqueda de Registros")
If Trim(lsValor) = "" Then
MessageBox.Show("No se ha ingresado la cédula a buscar", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
lsql = "SELECT * FROM alumnos WHERE cedula='" + Trim(lsValor) + "'"
lrst.Open(lsql, db, ADODB.CursorTypeEnum.adOpenDynamic,
ADODB.LockTypeEnum.adLockOptimistic)
If lrst.RecordCount > 0 Then
Me.txtCedula.Text = Trim(lrst.Fields.Item("cedula").Value)
Me.txtApellido.Text = Trim(lrst.Fields.Item("apellido").Value)
Me.txtDir.Text = Trim(lrst.Fields.Item("dir").Value)
Me.txtNombre.Text = Trim(lrst.Fields.Item("nombre").Value)
Me.txtTelf.Text = Trim(lrst.Fields.Item("telf").Value)
Else
MessageBox.Show("No se encuentra el registro", "Búsqueda",
MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
lrst.Close()
En cuanto a este botón, lo primero que observamos es la declaración de la variable lsValor
que nos permitirá ingresar el valor de la cédula a buscar dentro de los registros existentes.
Observamos el uso de la función InputBox() la cual, nos permite dibujar rápidamente un
cuadro de mensaje donde el usuario podrá ingresar un valor dentro de un cuadro de texto que
ya está “dibujado” dentro de ese recuadro.
El valor ingresado mediante el InputBox() se le asigna a la variable lsValor y luego se abre un
recordset para buscar algún registro que coincida con el mismo (es decir, que se haya
registrado un alumno con esa cédula). De encontrar alguno, (recordcount > 0), procede a
mostrarlo. De no ser así, genera un mensaje de error.
Cabe destacar que para mostrar el valor de cada campo en los cuadros de texto
correspondientes, se utiliza la siguiente estructura:
Me.txtCedula.Text = Trim(lrst.Fields.Item("cedula").Value)
Lo que se hace aquí es leer el valor del campo en el recordset y luego pasárselo al cuadro de
texto correspondiente.
Actualice los cambios en el proyecto presionando el icono del disquete o CTRL+S
Ya puede ejecutar su aplicación. Presione F5 para iniciarla y pruebe agregar, modificar,
eliminar y consultar registros.
MENÚS EN VISUAL BASIC
En este apartado estudiaremos la manera de crear menús en Visual Basic.NET. Para ello, es
necesario que agreguemos otro formulario.
1. Vayamos al menú Proyecto y seleccionemos la primera opción: Agregar Windows Forms.
De esta manera, se agregará un formulario nuevo “en blanco”
2. En el cuadro de diálogo de “Agregar nuevo elemento”, seleccione Windows Forms y
coloque el nombre “frmMain.vb”
3. Ahora, aparecerá un nuevo formulario en blanco donde “dibujaremos nuestro menú”.
4. Vaya al cuadro de controles y seleccione el objeto MenuStrip. Al punto, aparecerá en la
parte inferior un contenedor con este objeto de nombre MenuStrip1
5. Haga un clic sobre el objeto MenuStrip1 y cámbiele el
nombre en la ventana Propiedades. Asígnele en Name
“mnuPrincipal”
6. Es el momento de incluir los ítems del menú. Para ello, haga
un clic sobre la barra superior que se aprecia tenuemente en el
formulario con la leyenda “Escriba aquí”
7. Cuando aparezca esta
leyenda, haga doble clic
sobre ella para activar el
modo de edición
8. Escriba el título del menú. En este caso, “Archivo”. Note que este no es el nombre del
objeto “menú” y en VB.NET todos los ítems del mismo deben tener un nombre asociado.
Entonces, el mismo entorno de VB le asignará nombres automáticamente (aunque los
podemos cambiar según nuestra conveniencia). Por ejemplo, en este primer ítem, si vamos a la
propiedad Name en la ventana propiedades, encontraremos que se llama
ArchivoToolStripMenuItem.
9. Una vez que hemos ingresado el ítem “Archivo” dentro del menú, hay que agregar los
ítems que conformarán la lista de opciones de este menú. Para ello, clickeamos en el recuadro
que aparece justo debajo de “Archivo” que también podemos editar y escribamos la palabra
“Alumnos”, y luego, agregamos otro ítem con el texto “Profesores” y “Salir”, quedando tal
como se muestra en la siguiente figura:
10. Agregue un menú al lado de la palabra
Archivo¸ es decir, tendrá el mismo nivel de éste,
conformando una barra de menú. La llamaremos
“Reportes”, tal como se muestra a continuación:
11. Ahora, justo debajo del menú Reportes, agregamos un ítem de menú llamado “Listado de
Alumnos” y otro denominado “Consulta de Alumnos”, tal como se muestra en la figura:
12. Es el momento de agregar código al menú. Para
ello, vayamos al menú Archivo, específicamente al
ítem Alumnos que acabamos de crear y hacemos
doble clic sobre él para abrir la ventana código
13. Agregue la siguiente línea de código en el procedimiento Click() del Item “Alumnos”
frmAlumnos.Show()
Este permitirá mostrar el formulario frmAlumnos que hemos creado previamente. Esa es la
función del método Show() de los formularios.
14. Ahora, presione CTRL+F4 para cerrar la ventana código y haga doble clic sobre el ítem
Salir del menú Archivo. Allí se abrirá el procedimiento Click() de este elemento de menú.
Agregue el siguiente código:
Application.Exit()
Este permitirá Salir de la aplicación, no sólo descargará el formulario actual de la memoria, sino
la aplicación completa.
15. Ahora, vaya al menú de VB.NET y ubique la opción Proyecto y luego Propiedades del
Sistema. Allí debemos establecer que nuestro formulario inicial ahora es frmMain.
16. En la ventana que aparece como propiedades del sistema, buscamos la opción
Formulario de Inicio y seleccionamos frmMain. Luego, damos CTRL+F4 y se guardarán los
cambios realizados.
Existen muchas otras opciones relacionadas con la gestión de menús, pero no serán
abordadas por razones de tiempo. Puede revisar en detalle la ayuda de VB:NET 2010 para
aclarar sus dudas.
REPORTES EN VB.NET
Un reporte es un documento impreso, por pantalla o guardado como archivo que representa
resultados del procesamiento de información de manera organizada a través de listados de
registros agrupados o no, con gráficos, cálculos y demás elementos de información.
En Visual Basic.NET se pueden agregar reportes a una aplicación. En este caso, crearemos el
Listado de Alumnos.
1. Para ello, vayamos al menú Proyecto de VB.NET y seleccionamos Agregar Nuevo
Elemento.
2. Luego, seleeccionamos el ítem Asistente para Informes y le asignamos el nombre
rptAlumnos.rdlc
3. Presionamos Agregar y se cerrará la ventana, mostrándonos el asistente.
4. El primer paso es indicar de dónde se tomarán los datos. Seleccionemos Base de Datos y
presionamos Siguiente.
5. En el siguiente paso, debemos
elegir el modelo de datos a utilizar.
El modelo de base de datos que elija
determina los tipos de objetos de
datos que utiliza el código de la
aplicación.
En este caso, elegimos la opción Conjunto de Datos y
presionamos Siguiente.
6. En el paso siguiente, debemos seleccionar la conexión
de datos que utilizaremos para el reporte y para ello,
hacemos click en el botón Nueva Conexión que aparece
del lado derecho superior de la pantalla.
7. Al presionar Nueva Conexión, aparecerá el cuadro de
diálogo para crear una nueva conexión a datos.
8. En este cuadro de diálogo, debe indicar con qué
motor de base de datos se conectará. En este
caso, será Microsoft Access y para ello, haga clic
en el botón Cambiar y aparecerá un cuadro de
diálogo como el siguiente:
9. Elija la opción Archivo de Base de datos de
Microsoft Access y presione Aceptar
10. Ahora, elija el archivo de Access que quiere enlazar con la aplicación que estamos
desarrollando. Para ello, Haga click en el botón Examinar del cuadro de diálogo Agregar
Conexión y busque el archivo sistema.accdb dentro de la carpeta siguiente:
C:\Documents and Settings\Administrador\Mis documentos\Visual Studio 2010
\Projects\sistema\sistema\bin\Debug
Y presione Aceptar para terminar de crear la conexión.
11. Al hacer lo anterior, volveremos al asistente, donde se mostrará nuestra cadena de
conexión (si presionamos el botón de “+” que aparece en la parte inferior del cuadro de
diálogo).
12. En este cuadro, presione el botón
Siguiente.
13. Es probable que reciba el siguiente
cuadro de diálogo solicitando que se
agregue la base de datos al proyecto.
Esto será especialmente útil cuando se
instale en otras PC. Responda Si
14. Ahora, se nos preguntará si deseamos guardar la conexión. Para ello, tildamos la casilla de
verificación y presionamos Siguiente
15. En este momento, debemos seleccionar la tabla alumnos que vincularemos al reporte y al
mismo tiempo, tenemos que guardar el DataSet. El DataSet es el conjunto de datos asociado al
informe que proviene de la(s) tabla(s) que hayamos seleccionado.
16. Para seleccionar la tabla alumnos
debemos clickear sobre el signo “+”
que está al lado de la categoría tablas
y
luego
aparece
propiamente
alumnos. Luego, clickeamos en
Finalizar.
Ahora, propiamente debemos diseñar
el informe. Se mostrará entonces la
siguiente ventana a manera de
resumen:
17. Ahora, haga clic en Siguiente para
empezar a diseñarlo.
18. Luego aparece la siguiente ventana
donde deberá indicar qué campos
desea estén reflejados en el informe.
Así:
19. Ahora, vaya a la lista campos
disponibles y arrastre los campos
cédula, nombre, apellido, dir y telf
hasta el cuadro Valores quedando asi:
20. Presione el botón Siguiente para
continuar con el siguiente paso.
21. Es el momento de elegir el diseño del reporte;
sin embargo, sólo tenemos disponible el
predeterminado. Presione Siguiente
22. Ahora, hacemos clic en
Finalizar
23. Al finalizar el asistente, aparecerá el reporte en modo diseño donde podremos hacer
algunos ajustes de estética y funcionalidad. A efectos de este curso, lo dejaremos sin mayores
cambios.
24. En este momento ya hemos diseñado el informe y el paso siguiente, es mostrarlo desde un
ítem de menú. Para ello, debemos crear un nuevo formulario. Recordemos que para hacerlo,
clickeamos en el menú Proyecto de Visual Basic y seleccionamos Agregar Nuevo Elemento.
25. Posteriormente, seleccionamos Windows
frmReporte.vb para el nuevo formulario.
Forms
y
especificamos
el
nombre
26. Vamos a la propiedad Name del nuevo formulario y verifiquemos que el nombre se ha
especificado a frmReporte
27. El paso siguiente es insertar un objeto ReportViewer dentro del formulario. Para ello,
vamos al cuadro de controles y buscamos el grupo Informe para luego, hacer doble click
sobre el objeto ReportViewer. Nuestro formulario quedará así:
28. En el panel Tareas de ReportViewer despliegue la lista Elegir Informe y seleccione
sistema.rptalumnos.rdlc.
29. Luego, seleccione el objeto ReportViewer que ha pegado en su formulario y cambiemos la
propiedad Anchor marcando las 4 opciones disponibles: Top, Left, Right, Bottom
Así mismo, teniendo el ReportViewer seleccionado, debemos buscar la propiedad
AutoSizeMode y cambiar su valor a GrowAndShrink. Con estos últimos ajustes, si
llegásemos a cambiar de tamaño al formulario, nuestro reporte adoptaría el nuevo tamaño.
30. Es un buen momento para guardar los cambios. Así mismo, vaya al formulario frmMain,
específicamente al ítem de menú Listado de Alumnos y haga doble clic sobre él para agregar
el código para mostrar el reporte.
Allí, sólo agregaremos la siguiente línea:
frmReporte.Show()
31. Y finalmente, guardamos los cambios y ejecutamos la aplicación con F5
CUADRÍCULAS EN VISUAL BASIC
Las cuadrículas son objetos muy importantes en Visual Basic y en cualquier lenguaje de
programación, ya que permiten mostrar una serie de registros de manera integral, al punto que
pueden responder a una serie de criterios indicados por el usuario. En VB.NET la plataforma
ADO.NET (que se utiliza para manipular datos), provee una herramienta o “clase” para utilizar
cuadrículas en las aplicaciones que desarrollamos. Esta se denomina DataGridView.
1. Agregue un nuevo formulario (vaya al menú Proyecto > Agregar Windows Forms) y
coloque el nombre frmConsulta.vb.
2. Vaya al cuadro de controles y busque la “clase” DataGridView que se encuentra dentro del
grupo Datos. Luego, inserte un objeto de este tipo haciendo doble clic sobre el icono del
DataGridView y su formulario quedará provisto de uno de ellos.
3. En este punto, observará un panel de tareas flotante como el que se muestra en la siguiente
figura:
4. Despliegue la lista Elegir origen de
datos y allí seleccione el que creamos
cuando
definimos
el
reporte.
AlumnosBindingSource.
En este momento, nuestra cuadrícula
cambiará de aspecto y adoptará la
estructura del origen de datos.
5. También es recomendable marcar la
opción Acoplar al contenedor primario y se ajustará el tamaño del grid al del formulario
quedando así:
6. Existen otras opciones como
habilitar la agregación, edición o
eliminación directamente sobre la
cuadrícula. Las dejaremos como
vienen
configuradas,
pero
en
desarrollos profesionales debemos
tener cuidado con ellas.
7. Finalmente, lo que corresponde
hacer es agregar una linea de código
para mostrar el formulario de consulta. Para ello, vaya al formulario frmMain y específicamente
al elemento de menú Consulta de Alumnos que está dentro del menú Reportes
8. Abra la ventana código (doble clic sobre el elemento Consulta de Alumnos) y allí escriba la
siguiente línea para mostrar el formulario frmConsulta.
frmConsulta.Show()
9. Es un buen momento para guardar los cambios y ejecutar el programa
IMÁGENES EN VB.NET
Otra de las posibilidades de Visual Basic.NET es la inclusión de imágenes dentro de la
aplicación. Por ejemplo, una fotografía en un formulario de empleados o el logotipo de la
empresa para la cual trabajamos en el formulario principal. Para ello podemos utilizar el objeto
PictureBox que se encuentra dentro de los controles comunes del cuadro de controles.
1. Vayamos al formulario frmMain e insertemos un PictureBox, así:
2. Debido a que sólo insertaremos un
PictureBox, no le cambiaremos el nombre y
quedará como PictureBox1
3. Podemos incrustar una imagen utilizando la
propiedad Image que está en la ventana
propiedades. Al ubicar dicha propiedad,
presionemos el botón de tres puntos
suspensivos y aparecerá la siguiente ventana:
4. Utilizaremos la opción Recurso Local y luego, clickeamos en el botón Importar.
5. Aparecerá el cuadro de diálogo Abrir donde ubicaremos una imagen y presionamos el botón
Aceptar
6. Existe una propiedad llamada SizeMode, la cual, configuraremos al valor StretchImage.
Esto con el fin de que la imagen se ajuste al tamaño del cuadro de imagen y no se deforme o
desproporcione. Esto es muy útil para fines de estética y presentación.
7. El producto final quedará así:
También existe otra manera de incluir imágenes
utilizando código, mediante la propiedad ImageLocation
la cual, permitirá indicar mediante una cadena de
caracteres, la dirección de la imagen que deseemos
insertar. Así:
Me.PictureBox1.ImageLocation = "C:\imagen.jpg"
Cabe destacar que la imagen debe existir en la ruta a la
cual apunta incluso cuando la aplicación se ejecuta
como un archivo .exe
Algunos formatos reconocidos son gif, png, jpg y bmp.
COMPILACIÓN DE UNA SOLUCIÓN.
Recordemos que una solución en VB.NET es un conjunto de proyectos o archivos que se
agrupan, ordenan y disponen con el fin de “solucionar” un problema. Entonces, cuando ya
tenemos listo nuestro(s) proyectos, ha llegado la hora de compilar nuestra solución.
La compilación es el proceso mediante el cual, se convierte el código fuente (de alto nivel) en
código objeto (binario). Pero recordemos que en VS.NET existe un código intermedio que se
denomina MSIL (Microsoft Intermediate Language) que realmente es “interpretado por el .NET
framework. También debemos generar el archivo .exe (archivo ejecutable) a través del cual,
ejecutaremos nuestra aplicación.
Para ello, vamos al menú de Visual Studio Generar y luego, en la primera opción Generar
Sistema.
En la barra de estado nos indicará que está iniciando la generación del ejecutable y también
cuando ya ha finalizado.
Esta acción producirá un archivo .exe pero antes de seguir, debemos aprender una regla de
oro: Para correr un archivo .exe generado en VB.NET, es necesario que el equipo tenga
instalado el .NET Framework actualizado. En nuestro caso, la versión 4.0.30319
EMPAQUETADO DE UNA SOLUCIÓN
El empaquetado consiste en agrupar todos los archivos requeridos para que nuestra aplicación
corra en un equipo sin necesidad de tener el Visual Studio instalado. En otras palabras, crear
un programa de instalación, tal como cualquier aplicación que funcione bajo Windows. Para
ello, procedamos de la siguiente manera:
1. Vamos al menú Archivo de Visual Basic y seleccionamos la plantilla Instalador de Visual
Studio. Luego, Asistente para proyectos de instalación. (la penúltima opción), tal como se
observa en la figura:
2. Le damos el nombre Instalador al proyecto y dejamos marcada la tilde Crear directorio
para la solución. Presionamos Aceptar.
3. Luego, se mostrará el asistente para instalación, así:
4. Ahora, corresponde elegir el tipo
de proyecto. Debemos seleccionar
la opción Crear un programa de
instalación de una aplicación
para Windows y presionamos
Siguiente
5. Luego, se le pedirá si desea agregar archivos adicionales al proyecto. Sencillamente
presione Siguiente.
6. Por último, aparece un
cuadro resumiendo todas
las
configuraciones
establecidas
para
el
instalador.
Presione
Finalizar.
En
este
aparecerá
la
pantalla:
momento,
siguiente
7. En este
momento,
debemos
incluir los
archivos que
deseamos
distribuir.
Hacemos clic
en la
categoría Carpeta de la aplicación en el panel izquierdo y luego hacemos clic con el botón
derecho sobre esta categoría, desplegando entonces los menús contextuales, así:
8. Seleccionamos Agregar > Archivo y aparecerá un cuadro de diálogo Abrir donde
buscaremos la carpeta C:\Documents and Settings\Administrador\Mis documentos\Visual
Studio 2010\Projects\sistema\sistema\bin\Debug
9. En esta carpeta debemos seleccionar los archivos que deseamos empaquetar, entre los
cuales se encuentran el .exe previamente generado y la base de datos central.accdb.
Sencillamente seleccionemos todos los archivos y agreguémoslos al proyecto de instalación,
quedando así:
10.
Ahora,
indiquemos
al
instalador que debe
crear
un
acceso
directo en el menú
inicio para nuestro
producto. Para ello,
hacemos
lo
siguiente:
11. Primero, nos
ubicamos en la categoría Carpeta de la Aplicación y cambiamos la propiedad AlwaysCreate
a True.
11. Ahora, vayamos a la categoría Menú Programas del Usuario y cambiamos la propiedad
AlwaysCreate a True. Al mismo tiempo, hacemos clic derecho sobre el área blanca de la
derecha y luego en Crear Acceso Directo. Cuidemos de haber seleccionado previamente la
categoría Menú Programas del Usuario, tal como se muestra en la figura:
12. Aparecerá un cuadro de diálogo donde debemos buscar el archivo .exe al cual apuntará el
acceso directo, así
13. Hacemos doble clic en la
Carpeta de la Aplicación y
luego
en
sistema.exe
y
presionamos Aceptar
14. Ahora, editamos el nombre
del acceso directo y lo llamamos
sencillamente Sistema.
15. Ahora, vamos al menú
Generar
y
seleccionamos
Generar Instalador.
16. El producto final se encuentra en C:\Documents and Settings\Administrador\Mis
documentos\Visual Studio 2010\Projects\Instalador\Instalador\Debug
17. Para instalar la aplicación, haga clic en el archivo Setup.exe o en el msi.
Ya ha creado una aplicación totalmente funcional, empaquetada y lista para distribuir!!!
APÉNDICE. TIPOS DE DATOS EN VB.NET
Tipo de Visual
Basic
Asignación de
almacenamiento
nominal
Intervalo de valores
Boolean
En función de la
True o False
plataforma de
implementación
Byte
1 byte
0 a 255 (sin signo)
Char (carácter
2 bytes
0 a 65535 (sin signo)
8 bytes
0:00:00 (medianoche) del 1 de enero de 0001 a 11:59:59 p.m. del 31 de
individual)
Date
diciembre de 9999.
Decimal
16 bytes
0 a +/-79.228.162.514.264.337.593.543.950.335 (+/-7,9... E+28) †sin
separador decimal; 0 a +/-7,9228162514264337593543950335 con 28
posiciones a la derecha del decimal;
el número distinto de cero más pequeño es +/0,0000000000000000000000000001 (+/-1E-28) †
Double (punto
8 bytes
flotante de
-1,79769313486231570E+308 a -4,94065645841246544E-324 †para los
valores negativos;
precisión doble)
4,94065645841246544E-324 a 1,79769313486231570E+308 †para los
valores positivos
Integer
4 bytes
Long (entero largo) 8 bytes
-2.147.483.648 a 2.147.483.647 (con signo)
-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (9,2...E+18 †)
(con signo)
Object
4 bytes en
Cualquier tipo puede almacenarse en una variable de tipoObject
plataforma de 32 bits
8 bytes en
plataforma de 64 bits
SByte
1 byte
-128 a 127 (con signo)
Short (entero
2 bytes
-32.768 a 32.767 (con signo)
4 bytes
-3,4028235E+38 a -1,401298E-45 † para los valores negativos;
corto)
Single (punto
flotante de
1,401298E-45 a 3,4028235E+38 † para los valores positivos
precisión simple)
String(longitud
En función de la
variable)
plataforma de
0 a 2.000 millones de caracteres Unicode aprox.
implementación
UInteger
4 bytes
0 a 4.294.967.295 (sin signo)
ULong
8 bytes
0 a 18.446.744.073.709.551.615 (1,8...E+19 †) (sin signo)
User-
En función de la
Cada miembro de la estructura tiene un intervalo de valores determinado
Defined(estructura) plataforma de
UShort
†
por su tipo de datos y es independiente de los intervalos de valores
implementación
correspondientes a los demás miembros.
2 bytes
0 a 65.535 (sin signo)
En la notación científica, "E" hace referencia a una potencia de 10. Por lo tanto, 3,56E+2 significa 3.56 x 102 o 356, y
3,56E-2 significa 3.56 / 102 o 0,0356.
Descargar