programacion visual.docx

76
CETIS 7 MIGUEL LERDO DE TEJADA CLAVE: 09DET0077L SISTEMA ABIERTO DE EDUCACION TECNOLOGICA INDUSTRIAL MATERIA: PROGRAMACION VISUAL CLAVE DE ASIGNATURA: 34 NOMBRE DE ALUMNO: EDGAR JAIR CASTAÑON PEREZ NUMERO DE CONTROL: 100530906A0576 ESPECIALIDAD: COMPUTACION PERIODO DE INGRESO: 10/05/2010

Upload: jair-castanon

Post on 28-Jan-2016

227 views

Category:

Documents


1 download

DESCRIPTION

.

TRANSCRIPT

Page 1: Programacion Visual.docx

CETIS 7 MIGUEL LERDO DE TEJADA

CLAVE: 09DET0077L

SISTEMA ABIERTO DE EDUCACION TECNOLOGICA INDUSTRIAL

MATERIA: PROGRAMACION VISUAL

CLAVE DE ASIGNATURA: 34

NOMBRE DE ALUMNO: EDGAR JAIR CASTAÑON PEREZ

NUMERO DE CONTROL: 100530906A0576

ESPECIALIDAD: COMPUTACION

PERIODO DE INGRESO: 10/05/2010

CLAVE DE PLAN DE ESTUDIOS: TCP – 00

Page 2: Programacion Visual.docx

UNIDAD I INTRODUCCION A VISUAL BASICA

1.1 ENTORNO DE DESARROLLO VISUAL BASIC

Cuando se arranca Visual Basic 6.0 aparece en la pantalla una configuración. En ella se pueden distinguir los siguientes elementos:

1. La barra de títulos, la barra de menús y la barra de herramientas de Visual Basic 6.0 en modo Diseño (parte superior de la pantalla).

2. Caja de herramientas (toolbox) con los controles disponibles (a la izquierda de la ventana).

3. Formulario (form) en gris, en que se pueden ir situando los controles (en el centro). Está dotado de una rejilla (grid) para facilitar la alineación de los controles.

4. Ventana de proyecto, que muestra los formularios y otros módulos de programas que forman parte de la aplicación (arriba a la derecha).

5. Ventana de Propiedades, en la que se pueden ver las propiedades del objeto seleccionado o del propio formulario (en el centro a la derecha). Si esta ventana no aparece, se puede hacer visible con la tecla.

6. Ventana FormLayout, que permite determinar la forma en que se abrirá la aplicación cuando comience a ejecutarse (abajo a la derecha).

Existen otras ventanas para edición de código (Code Editor) y para ver variables en tiempo de ejecución con el depurador o Debugger (ventanas Immediate, Locals y Watch). Todo este conjunto de herramientas y de ventanas es lo que se llama un entorno integrado de desarrollo o IDE (Integrated Development Environment).

Construir aplicaciones con Visual Basic 6.0 es muy sencillo: basta crear los controles en el formulario con ayuda de la toolbox y del ratón, establecer sus propiedades con ayuda de la ventana de propiedades y programar el código que realice las acciones adecuadas en respuesta a los eventos o acciones que realice el usuario. A continuación, tras explicar brevemente cómo se utiliza el Help de Visual Basic, se presentan algunos ejemplos ilustrativos.

1.1.1 BARRA DE MENUS

Page 3: Programacion Visual.docx

Los menús nos sirven para mostrar los comandos y las opciones de nuestra aplicación agrupados por finalidad. Además, al no tener que usar gran cantidad de botones, permiten ahorrar espacio dentro de nuestros formularios.

La barra de menús de Visual Basic 6.0 resulta similar a la de cualquier otra aplicación de Windows.

Además de los menús estándar Archivo, Edición, Ver, Ventana y Ayuda, contiene otros menús para tener acceso a funciones específicas de programación, como Proyecto, Formato o Depuración, Ejecutar, Consulta, Diagrama, Herramientas, Complementos, Ventana y Ayuda.

1.1.2 MENUS CONTEXTUALES

Los menús contextuales (menús emergentes) aparecen cuando el usuario hace click con el botón derecho sobre un elemento de la aplicación. El programa debe reconocer el evento MouseUp o MouseDown, ver si el usuario ha hecho un click con el botón derecho (argumento Button igual a 2) y llamar al método PopupMenu, que tiene la siguiente forma general:

PopupMenu menuName [,flags[,x[,y]]]

donde menuName es el nombre de un menú (con al menos un elemento), x y y son las coordenadas base para hacer aparecer el menú contextual, y flags son unas constantes que determinan más en concreto dónde y cómo se muestra el menú. Las constantes que determinan dónde aparece el menú son: vbPopupMenuLeftAlign (default), vbPopupMenuCenterAlign y vbPopupMenuRightAlign.

Por otra parte vbPopupMenuLeftButton (default) y vbPopupMenuRightButton determinan si el comando se activa con el botón izquierdo o con cualquiera de los dos botones. Las constantes se combina con el operador Or. El nombre del menú que aparece en el método PopupMenu debe haber sido creado con el Menu Editor, aunque puede tener la propiedad Visible a False, si no se desea que se vea.

Opciones del menú contextual

El hecho de tener siempre asociado un menú contextual con un determinado formulario, no impide que el menú contextual aparezca cuando se pulsa sobre uno de los controles situados en el formulario. Además se puede indicar la ubicación exacta del menú contextual.

En el ejemplo anterior de llamada al PopupMenu, los indicadores se encargan de definir la ubicación respecto a las coordenadas X y Y también introducidas y el comportamiento del menú contextual.

Los valores que puede tomar este parámetro respecto a la posición del menú son:

vbPopupMenuLeft.Align (valor 0): valor predeterminado que nos indica que el lado izquierdo del menú viene dado por el valor X.

vbPopupMenuCenter.Align (valor 4): En este caso el menú contextual se centra respecto a X.

vbPopupMenuRight.Align (valor 8): El lado derecho del menú se sitúa en X.

Los valores que puede tomar respecto al comportamiento a seguir son:

vbPopupMenuLeftButton (valor 0): Los elementos del menú contextual sólo reaccionan a los click del ratón cuando se use el botón primario del ratón. Este es el valor predeterminado.

vbPopupMenuRightButton (valor 2): Los elementos del menú contextual reaccionan a los click del ratón cuando se use el botón primario o secundario.

Page 4: Programacion Visual.docx

1.1.3 BARRA DE HERRAMIENTAS

La imagen de la barra de herramientas, tiene lo que se denomina barra estándar de herramientas, cada uno de estos controles realiza la siguiente función:

Cursor del ratón: sirve para quitar la selección del que hayamos pulsado por error. Picture: permite incluir gráficos, es parecido al image pero con variantes. Label (Etiqueta): sirve para poder poner mensajes o textos en la pantalla, pero no son editables por el

usuario. TextBox: caja de texto, permite que el usuario pueda escribir directamente. Frame: es un contenedor para los demás controles. CommandButton: Botón de comando, permite que el usuario pueda pulsar botones y

que realicen determinadas acciones

CheckBox: caja de chequeo, permite tener opciones sobre las que el usuario confirma o niega. OptionButton: botón de opción, permite tener varias opciones de las cuales seleccionar una. ComboBox: caja combinadam, permite tener varias opciones de las cuales seleccionar y ver una. ListBox: caja de lista, presenta una lista de opciones y permite seleccionar una o varias

de dichas opciones

HScroll: (Barra Horizontal de Scroll) se puede crear un barra de desplazamiento horizontal. VScroll: barra vertical de Scroll, permite tener una barra vertical para desplazamientos. Timer: es un controlador de tiempo. DriveBox: caja de unidades, permite indicar que unidades de almacenamiento tiene el ordenador. DirBox: caja de directorios, indica los directorios y subdirectorios de una ruta en concreto. FileList: indica una lista de los ficheros que se encuentran en un determinado directorio o

subdirectorio. Shape: permite incluir formas gráficas en el formulario, como un cuadrado, un círculo, etc. Line: permite incluir una línea en el formulario. Image: permite incluir imágenes como fotografías, dibujos, etc.. Data: permite la conexión con una base de datos y poder añadir, modificar, consultar, borrar, etc.

Page 5: Programacion Visual.docx

1.1.4 EXPLORADOR DE PROYECTOS

El explorador de proyectos es utilizado para desplazarse por los distintos componentes del proyecto.(formularios, módulos y componentes)

Cuenta con tres pequeños íconos en su parte superior izquierda:

Ventana de código:

1. Cuadro de Objeto: Despliega el nombre del objeto seleccionado en el formulario.2. Cuadro de Procedimiento: Muestra todos los eventos que tiene el objeto seleccionado en el

formulario.3. Ícono de Vista de Procedimiento: Muestra de a un procedimiento a la vez.4. Ícono de Vista completa del módulo: Muestra todo el código del módulo.5. Barra de Margen: Tiene algunos indicadores que permiten depurar el proyecto6. Barra de división: Permite dividir la ventana de código en dos paneles horizontales, lo que

facilita trabajar con varias partes diferentes de código.

Esta ventana se utiliza para visualizar e ingresar todo el código en el Visual basic. Se pueden abrir varias ventanas de código de acuerdo a la cantidad de formularios que existan. Para abrir la ventana de código

se puede ir al Menú Ver y seleccionar la opción Código o pulsar la tecla F7, También elegir el ícono en el explorador de proyectos. Una forma aún más fácil es hacer doble click sobre un control en el formulario.

Diseñador de formularios tercero alterna entre distintas carpetas.

Por cada componente aparecen en el explorador dos nombres:

Page 6: Programacion Visual.docx

1) El de la izquierda que es el nombre del objeto

2) El de la derecha (paréntesis) que es el nombre con el que se guardó el objeto en el disco.

1.1.5 VENTANAS DE PROPIEDADES

La ventana Propiedades contiene la lista de propiedades, eventos y métodos del formulario, entorno de datos, cursor, relación o control seleccionados. Estas propiedades se establecen o se modifican en tiempo de diseño o por medio de programación.

También puede seleccionar varios objetos y mostrar después la ventana Propiedades. En este caso, la ventana Propiedades muestra las propiedades que tengan en común los objetos seleccionados.

Puede abrir la ventana Propiedades desde el menú Ver. O bien, haga clic con el botón secundario del mouse en el Diseñador de formularios o en el Diseñador de entornos de datos, y elija Propiedades en el menú contextual del Diseñador de formularios.

UNIDAD II MANEJO DE FORMULARIOS VISUAL BASIC

2.1 GENERALIDADES

Visual Basic es un lenguaje de programación de los llamados "visuales", puesto que parte de la programación que se realiza con él se basa en la utilización de elementos visuales. La palabra "Visual" hace referencia al método que se utiliza para crear la interfaz gráfica de usuario. En lugar de escribir numerosas líneas de código para describir la apariencia y la ubicación de los elementos de la interfaz, simplemente podemos agregar objetos prefabricados en su lugar dentro de la pantalla, que ahorran mucho tiempo de programación y que sobrepasan el concepto de la programación convencional en cuanto a la estructura secuencial del programa.

Tradicionalmente el lenguaje Basic (Beginners All-Purpose Symbolic Instruction Code) se ha considerado como el lenguaje adecuado para principiantes en el mundo de la programación, si bien se le achaca que no tiene la potencia suficiente para cubrir todas las expectativas de los programadores avanzados. Cierto es que aunque nos permite la creación de componentes y trabajar con objetos, otros lenguajes tienen más potencia en la programación orientada a objetos, pero a medida que han avanzado en las versiones de Visual Basic, ha aumentado su versatilidad. Este curso pretende ser una iniciación a la programación en Visual Basic, que posteriormente puede implementarse con otros cursos avanzados en el sentido de profundizar en el concepto de la programación. La versatilidad a la que se hace alusión viene del hecho de que una vez realizado este curso se tiene la base suficiente para abordar otros aspectos de la programación actual. En primer lugar, podríamos abordar la programación de VBA (Visual Basic para Aplicaciones), que nos permitirá programar rutinas de código que nos proporcionarán mayor potencia y funcionalidad de nuestras aplicaciones ofimáticas, por ejemplo para los programas del paquete Microsoft Office: Microsoft Word, Microsoft Excel, Microsoft Access..., las macros que se pueden programar en estos programas se escriben en VBA, que es un lenguaje basado en Visual Basic, es decir una vez conocido este, aprender VBA consiste en tener en cuenta las especificaciones que hace sobre el Visual Basic que ya conocemos, la idea a transmitir es que no hay que aprender nada nuevo desde el principio, sino que con poco esfuerzo, rápidamente podemos empezar a crear nuestras propias macros.

2.1.1 DEFINICION DE PROYECTO, FORMULARIOS Y EVENTOS.

El formulario es el primer objeto o control que se visualiza en Visual Basic y constituye la pantalla o ventana sobre la que se colocan otros objetos o controles como etiquetas, controles de texto, botones, etc. y por supuesto el código necesario de nuestros programas, por lo tanto constituirán la Interfaz de usuario.

Page 7: Programacion Visual.docx

Al igual que todo control tiene sus propiedades, las mismas que podemos establecerlas en la ventana de propiedades.

Nota: Recuerde que para establecer las propiedades de cada objeto primero debemos dar click en el objeto o control y luego establecerlas en la ventana de propiedades

PROPIEDADES DEL FORMULARIO: Se detallarán las más utilizadas:

Name: En todo control la primera propiedad que debe establecerse es el nombre del objeto, es recomendable que en el caso del formulario las tres primeras letras sean Frm, precisamente para saber que se trata de un formulario, y luego seguida del nombre que se le quiere asignar, no admite espacios.

Como puede apreciar en la parte inferior de la ventana de propiedades se tiene una pequeña descripción de la propiedad elegida.

BackColor: Permite cambiar el color del fondo del formulario

BackgroundImage: Establece una imagen como fondo del formulario

BackgroundImageLayout: Diseño de la imagen de fondo: None, Tile, Center, Stretch, ZoomControlBox: Determina si la ventana tiene o no botones de control

Page 8: Programacion Visual.docx

Cursor: Cursor que aparecerá al pasar el puntero por el formulario, se visualizará sólo en tiempo de ejecución (f5)

FormBorderStyle: Establece el estilo del borde del formulario

Icon: Indica el ícono del formulario es decir aquel que va en la barra de título, se visualizará también en la barra de tareas de windows cuando el formulario se minimiza

MaximizeBox: Permite que el botón de maximizar que se encuentra en los botones de control se encuente habilitado o no (se puede utilizar o no)

MinimizeBox: Permite que el botón de minimizar que se encuentra en los botones de control se encuentren habilitado o no.

ShowIcon: Indica si un ícono se muestra o no en la barra de título del formulario

ShowInTaskbar: Determina si el formulario aparece en la barra de tareas de windows.

Text: Representa el texto que se visualizará en la barra de título (no confundir con el nombre)

WindowState: Determina el estado visual inicial del formulario: Normal, Maximized, Minimized

Más información

EVENTOS: Los eventos los podemos encontrar en la ventana de código, la misma que se presenta al dar doble clic sobre el objeto, en este caso el formulario

Si deseamos que cuando inicie el programa se presente un mensaje, deberemos escoger el evento Load, es decir, es lo primero que se ejecutará antes de presentarse el formulario, para lo cual debemos asegurarnos de que estamos en el objeto Form y buscar el evento Load, una vez realizado esto se nos presentará lo siguiente:

Public Class FrmInicialPrivate Sub FrmInicial_Load (ByVal sender As Object...) 

End SubEnd Class

Page 9: Programacion Visual.docx

Entre Private y End Sub debemos escribir todo lo que queremos que se ejecute, en el caso de nuestro ejemplo será:

Public Class FrmInicialPrivate Sub FrmInicial_Load (ByVal sender As Object...)Msgbox ("Bienvenido, el programa se ejecutará.")End SubEnd Class

Msgbox sirve para presentar un cuadro de mensaje y entre comillas (" ") se colocará el mensaje a presentarse

Para ver el resultado de este código, ejecutamos el proyecto con F5 y para detenerlo en el botón cerrar de los botones de control

Click: Este evento se ejcutará al dar click sobre el control en este caso sobre el formulario.

Si desearíamos que la ventana se maximize al dar click en el formulario, luego de escoger el objeto y el evento click, la codificación sería:

Private Sub FrmInicial_Click (ByVal sender as Object...)Me.WindowState= FormWindowState.MaximizedEnd Sub

Recuerde la sintaxis de las propiedades:

objeto.propiedad = valor

Cuando hablamos del mismo formulario el objeto será remplazado por Me, con los demás controles se utilizará el nombre (el que se establece en name)

Me.WindowState=FormWindowState.Maximized

MouseMove: Este evento indica que cuando pase el puntero del mouse por el formulario se ejecutará lo que este codificado en él. Por ejemplo si queremos queremos que cambie el color del fondo del formulario será:

Private Sub FrmInicial_MouseMove(ByVal sender As ObjectMe.BackColor=Color.RedEnd Sub

FormClosing: Este evento se ejecutará cuando se cierre la ventana. Por ejemplo si queremos visualizar un mensaje de agradecimiento cuando se cierre la ventana, la codificación será:

Private Su FrmInicial_Closing (ByVal sender As Object...)Msgbox("Gracias por preferirnos")End Sub

MÉTODOS: Por el momento veremos dos métodos del formulario

Show: Permite llamar o presentar otro formulario

Para utilizar este método, primero indicaré la manera de añadir un nuevo formulario a un proyecto: En el Menú Proyecto, Agregar Windows Form...

Page 10: Programacion Visual.docx

Al dar click en Agregar de la ventana anterior, se tendrá un nuevo formulario.

Si al hacer click en el primer formulario llamado FrmInicial queremos pasar al nuevo formulario al cual le pusimos de nombre FrmSiguiente, la codificación será la siguiente:

Private Sub FrmInicial _Click (ByVAl sender As Object....)FrmSiguiente.Show( )En Sub

CLOSE: Este método me permite cerrar la ventana. Por ejemplo si al dar click en el formulario FrmSiguiente quiero que finalice el programa la codificación será:

Private Sub FrmSiguiente_Click (ByVal sender As Object ...)Me.Close ( )End Sub

Recuerde que para realizar esta última codificación primero debía haber estado o dado click en el Formulario con el nombre de FrmSiguiente y luego entrar en la ventana de código del mismo y asegurarse que esté en el evento click del mismo.

2.1.2 PASOS PARA DESARROLLAR UNA APLICACIÓN DE WINDOWS

Para crear una nueva aplicación y agregarla a la solución actual, se utiliza el método AddFromTemplate del objetoDTE.Solution. Esta tarea asume que sabe cómo tener acceso al entorno integrado de desarrollo de macros (IDE) y cómo crear un proyecto de macros. Para obtener más información, vea Agregar proyecto de macros (Cuadro de diálogo).Nota Los pasos siguientes crearán un proyecto de Visual Basic. Para crear un proyecto de Visual C#, utilice el valor de enumeración prjKindCSharpProject en el paso 4.Para agregar un nuevo proyecto a la solución:

1. Cree un nuevo módulo de macro denominado NewProject.

2. Agregue al módulo una nueva macro, NewWindowProject. Esta macro agrega una nueva aplicación para Windows y devuelve una referencia al nuevo proyecto.

Function NewWindowProject() As Project ' Add code here to create new project.End Function

Page 11: Programacion Visual.docx

3. Seleccione la plantilla que necesite para un proyecto para Windows. Es posible crear varios tipos diferentes de proyectos, como se muestra en la tabla. Para una aplicación para Windows, utilice la plantilla WindowsApplication.vsz

Nombre de plantilla Tipo de proyecto

ClassLibrary.vsz Biblioteca de clases

ConsoleApplication.vsz Aplicación de consola

EmptyProject.vbproj Proyecto vacío

EmptyWebProject.vbproj Proyecto Web vacío

ImportProjectFolderVB.vszProyecto nuevo en carpeta existente

WebApplication.vsz Aplicación Web

WebControl.vsz Control Web

WebService.vsz Servicio Web

WindowsApplication.vsz Aplicación para Windows

WindowsControl.vsz Control de Windows

WindowsService.vsz Servicio de Windows

4. Utilice la propiedad TemplatePath para buscar la plantilla de proyecto. La ruta de acceso de la plantilla depende del lenguaje, así que se utiliza el valor prjKindVBProject (o prjKindCSharpProject).

Dim template As Stringtemplate = _ DTE.Solution.TemplatePath(VSLangProj.PrjKind.prjKindVBProject) _ & "WindowsApplication.vsz"

* Nota La plantilla ImportProjectFolderVB.vsz se utiliza para crear un proyecto en una carpeta ya existente. Si se proporciona una ruta de acceso UNC, se creará una aplicación para Windows. Si se proporciona una ruta de acceso URL, se creará un proyecto Web.

5. Llame al método AddFromTemplate (objeto Solution). En este caso, el nombre del proyecto se obtiene delZ usuario y se utiliza tanto para la ubicación como para el nombre de proyecto.

Dim newProject As ProjectDim name As String = InputBox("New name:")Dim folder As Stringfolder = System.Environment.GetFolderPath( _ Environment.SpecialFolder.Personal)newProject = DTE.Solution.AddFromTemplate( _ template, folder & "\" & name, name, True)

6. En el caso de un proyecto de Visual Basic o Visual C#, el método devuelve Nothing en lugar de una referencia al nuevo proyecto. Agregue código para buscar el nuevo proyecto en la colección DTE.Solution.Projects y, a continuación, devolver la referencia Project.

Dim aProject As ProjectFor Each aProject In DTE.Solution.Projects If aProject.Name = name Then newProject = aProject End IfNext

Page 12: Programacion Visual.docx

Return newProject

A continuación se muestra la macro completa:

Function NewWindowProject() As Project ' add code here to create new project. Dim template As String template = _ DTE.Solution.TemplatePath(VSLangProj.PrjKind.prjKindVBProject) _ & "WindowsApplication.vsz"

Dim newProject As Project Dim name As String = InputBox("New name:") Dim folder As String folder = System.Environment.GetFolderPath( _ Environment.SpecialFolder.Personal) newProject = DTE.Solution.AddFromTemplate( _ template, folder & "\" & name, name, True)

Dim aProject As Project For Each aProject In DTE.Solution.Projects If aProject.Name = name Then newProject = aProject End If Next Return newProjectEnd Function

7. Guarde la macro, cierre el IDE de macros y ejecute la macro desde el Explorador de macros.

2.2 CONTROL DE FORMULARIOS

En Visual Basic existen tres categorías generales de controles: Controles intrínsecos, Controles ActiveX, Objetos insertables

Controles intrínsecos

Estos controles se encuentran dentro del archivo ejecutable de Visual Basic. Los controles intrínsecos están siempre incluidos en el cuadro de herramientas, no como los controles Activex, que se pueden quitar o agregar al cuadro de herramientas. A continuación una lista de controles intrínsecos.

Nombre de control Nombre de clase Descripción

Casilla de verificación

CheckBox Presenta una opción de tipoVerdadero o Falso.

Cuadro combinado ComboBox Cambina un cuadro de texto y un cuadro de lista.

Botón de comando CommandButton Ejecuta un comando o una acción cuando el usuario hace clic en él.

Datos Data Permite conectar una base de datos existente y presentar información en ella en los formularios.

Cuadro de lista de directorios

DirListBox Presenta directorios y rutas de acceso.

Page 13: Programacion Visual.docx

Cuadro de lista de archivos

FileListBox Presenta una lista de archivos.

Cuadro de lista de unidades

DriveListBox Presenta una lista de unidades de disco validas.

Marco Frame Proporciona un contenedor visual y funcional para los controles.

Barras de desplazamiento horizontal y vertical

HScrollBar y VScrollBar

Permite que un usuario agregue barras de desplazamiento a controles que no las tienen de forma automática.

Imagen Image Presenta mapas de bits, iconos o metarchivos de Windows, archivos JPEG o GIF, y actúa como un botón de comando cuando se hace clic en él.

Etiqueta Label Presenta texto con el cual el usuario no puede interactuar ni modificar.

Línea Line Agrega un segmento de línea recta a un formulario.

Cuadro de lista ListBox Presenta una lista de elementos entre los que el usuario puede elegir.

Contenedor OLE OLE Incrusta datos en una aplicación de Visual Basic.

Botón de opción OptionButton El control OptionButton, como parte de un grupo de opciones con otros botones de opción. Presenta varias opciones entre las ue el usuario sólo puede elegir una.

Cuadro de imágen Picturebox Presenta mapas de bits, íconos o metarchivos de Windows y otros tipos de archivos graficos compatibles. También presenta texto o actúa como contenedor visual para otros controles..

Forma Shape Agrega un rectángulo, un cuadrado, una elipse o un circulo a un formulario, marco o cuadro de imagen.

Cuadro de texto TextBox Proporciona una área para escribir o presentar texto.

Cronómetro Timer Ejecuta eventos periódicos a intervalos de tiempo específicado.

 

Controles ActiveX

Son aquellos controles que existen como archivos independientes con extensión nombre de archivo .ocx. Entre éstos se incluyen los controles disponibles en todas las ediciones de Visual Basic (controles cuadrícula, cuadro combinado y lista enlazados a datos y varios más) y los que sólo están disponibles en la Edición Profesional y la Edición Empresarial (como Listview, Toolbar, Animation y Tabbed Dialog). A estos también se suman los controles Activex de otros fabricantes.

Nombre de Nombre de Descripción

Page 14: Programacion Visual.docx

control clase

Control de datos ADO

ADODC Crea una conexión a una base de datos de datos mediane ADO. Asignable a la propiedad DataSource de otros controles, como el control DataGrid.

Dialogo común CommonDialog Proporciona un conjunto de cuadros de diálogo estándar para operaciones como abrir y guardar archivos, establecer opciones de impresión y seleccionar colores y fuentes.

Cuadro combinado enlazado a datos

DataGrid Proporciona las mayorías de las opciones del control ComboBox estándar, así como mayor capacidad de acceso a datos.

Cuadrícula Apex enlazada a datos

DataGrid Control con apariencia de una hoja de cálculo vinculado aun origén de datos como un control de datos ADO. Es posible la lectura y la modificación del recordset.

Cuadro de lista enlazado a datos.

DataList Proporciona la mayoría de de las características del control ListBox estándar, asi como mayor capacidad de acceso a datos.

FlexGrid de Microsoft

MSFlexGrid Control con apariencia de hoja de cálculo de sólo lectura que se puede vincular al diseñador de entorno de datos para mostrar recordset jerárquicos

 

Objetos insertables

Como un objeto Worksheet de Microsoft Excel que contienen la lista de los empleados de su empresa, o un objeto Calendar de Microsoft Project que contiene la información del calendario de un proyecto. Puesto que estos objetos se pueden agregar al cuadro de herramientas, se les considera controles.

Convenciones de nomenclatura de los controles

Cuando crea un objeto (un formulario o un control) por primera vez, Visual Basic establece su propiedad Name a un valor predeterminado. Por ejemplo, todos los botones de comando tienen la propiedad Name establecida inicialmente a Commandn, donde n es 1, 2, 3 y así sucesivamente. Visual Basci llama al primer botón de comando de un formulario Command1, al segundo Command2 y al tercero Command3.

Puede mantener los nombres predeterminados; sin embargo, cuando tiene varios controles del mismo tipo, es más lógico modificar las propiedades Name para que sean algo más descriptivas. Como puede ser dificil distinguir entre el botón Command1 de miForm y el botón Command1 de SubForm, la convención de nomenclatura es recomendable, especialmente cuando una aplicación se compone de varios módulos de formulario, módulos estándar y módulos de clase.

Puede usar un prefijo para describir la clase, seguido de un nombre descriptivo del control. El uso de convención de nombres hace que el código sea más autodescriptivo y agrupa objetos similares alfabéticamente en el cuadro de lista Objeto. Por ejemplo:

chkSoloLectura

Page 15: Programacion Visual.docx

Los nombres de los formularios y los controles:

Deben empezar por una letra Sólo deben contener letras, números y el carácter de subrayado (_); no se permiten signos de

puntuación ni espacios en blanco. No pueden tener una longitud mayor de 40 caracteres

.

Valores de los controles

Todos los controles tienen una propiedad que se puede usar para almacenar u obtener valores mediante una referencia al control, sin mencionar el nombre de la propiedad.Este se denomina valor del control y normalmente es la propiedad más importante o la más frecuentemente utilizada del control.

Cuando quiera hacer una referencia a la propiedad de un control que es el valor de dicho control, puede hacerlo sin especificar el nombre de la propiedad. Por ejemplo, esta línea de código establece la propiedad Text de un cuadro de texto.

Text1 = "Este texto se asigna a la propiedad Text de Text1"

En este ejemplo, la propiedad Caption de Label1 se establece a la propiedad FileName de File1 cuando el usuario hace clic en un archivo del cuadro de lista de archivos:

Private File1_Click() Label1 = File1End Sub

En la tabla siguiente se enumeran las propiedades consideradas como valor de control.

Control Valor

CheckBox Value

ComboBox Text

CommandButton Value

CommonDialog Action

Data Caption

DataCombo Text

DataGrid Text

DataList Text

DirListBox Path

DriveListBox Drive

FileListBox FileName

FlexGrid Text

Frame Caption

HScrollBar Value

Image Picture

Page 16: Programacion Visual.docx

Label Caption

Line Visible

ListBox Text

OptionButton Value

PictureBox Picture

Shape Shape

TextBox Text

Timer Enabled

VScrollBar Value

 

Matrices de controles

Una matriz de controles en un grupo de controles que comparten el mismo nombre y el mismo tipo. También comparten los mismos procedimientos de evento. Las matrices de controles tienen al menos un elemento y pueden crecer hasta contener tantos elementos como permitan los recursos y la memoria del sistema; su tamaño dependen también de la memoria y de los recursos de Windows requeridos por cada control. El índice máximo que puede usar en una matriz de controles es 32 767. Los elementos de una misma matriz de controles tienen sus propio valor de propiedades. Entre los mas usados están los controles de menú y las agrupaciones de botones de opción.

¿Por qué usar matrices de controles?

Al agregar controles mediante matrices de controles se utilizan menos recursos que si simplemente se agregan al formulario múltiples controles del mismo tipo en tiempo de diseño. Las matrices de controles también son útiles cuando quiere que varios controles compartan código. Por ejemplo, si crea tres botones de opción como una matriz de controles, se ejecuta el mismo código independiente del botón en el que haga clic.

Si desea crear una instancia nueva de un control en tiempo de ejecución, dicho control tiene que ser miembro de una matriz de controles. En una matriz, los nuevos elementos heredan los procedimientos de evento comunes de toda la matriz.Mediante el mecanismo de las matrices de controles, cada nuevo control hereda los procedimientos de eventos comunes escritos para la matriz. Por ejemplo, si el formulario tiene varios cuadros de texto que reciben valores de fechas, puede definir una matriz de controles para que todos los cuadros de texto compartan el mismo código de validación.

Cuando crea una matriz de controles los valores de la propiedad Index de dicho control se agrega al momento de agregar los elementos de la matriz. Es la propiedad Index la que distingue cada elemento de otro dentro de la matriz de controles.

Cuando un elementos de la matriz reconoce un evento, Visual Basic llama a un procedimiento de evento común y pasa el argumento (el valor de la propiedad Index) para identificar qué control reconoce realmente el evento. Por ejemplo:

Private Opciones_Click (Index as Integer) Select Case Case 0 ... instrucciones para el primer elemento Case 1 ... instrucciones para el segundo elemento

Page 17: Programacion Visual.docx

End SelectEnd Sub

Agregar, eliminar un elemento de una matriz de controles en tiempo de ejecución

Puede agregar o quitar controles de una matriz de controles en tiempo de ejecución mediante las instrucciones Load y Unload. sin embargo, el control que va a agregar tiene que ser un elemento de una matriz de controles existente. Debe crear un control en tiempo de diseño con la propiedad Index establecida en la mayor parte de los casos a 0.Después, en tiempo de ejecución, utilice la siguiente sintaxis:

Load objeto(indice%)Unload objeto(indice%)

Donde:

objeto: Nombre del control que va a agregar o eliminar de la matriz de controles.indice%: El valor de índice del control dentro de la matriz.

Puede utilizar Unload para quitar cualquier control creado con Load. Sin embargo, no puede usar Unload para quitar controles creados en tiempo de diseño, independientemente de si forman parte o no de una matriz de controles.

Ejemplo:

En este ejemplo se permite al usuario agregar controles que cambian el color de fondo de la ventana. Agrege un formulario y despúes dibuje dos botones de opciones y dos botones de comando, como se ilustra en la tabla siguiente:

Objeto Propiedad Valor

Form1 Caption Ejemplo de matriz de controles

Option1 Name optButton

Index 0

Option2 Name optButton

Index 1

Primer botón de comando Name cmdAgregar

Caption &Agregar

Segundo botón de comando Name cmdEliminar

Caption &Eliminar

 

Ahora copie el siguiente código y ejecute el proyecto para ver como funciona:

Option ExplicitDim MaxID As Integer

Private Sub cmdAgregar_Click() MaxID = optButton.Count - 1 'Establece el total de botones existentes If MaxID > 3 Then Exit Sub 'Sólo se permiten 5 botones

Page 18: Programacion Visual.docx

MaxID = MaxID + 1 Load optButton(MaxID) 'Crea un nuevo control optButton(0).SetFocus 'Enfoque al primer botón 'Colocar el nuevo control debajo del último control optButton(MaxID).Left = optButton(MaxID - 1).Left optButton(MaxID).Top = optButton(MaxID - 1).Top + _ optButton(MaxID - 1).Height + 100 optButton(MaxID).Visible = True 'Mostrar el nuevo control 'Texto en el nuevo botón optButton(MaxID).Caption = "Opción " & MaxID + 1End Sub

Private Sub cmdEliminar_Click() If MaxID <= 1 Then Exit Sub 'No podrá eliminar los dos primeros botones Unload optButton(MaxID) 'Elimina el último botón MaxID = MaxID - 1 'Establece el recuento de botones optButton(0).SetFocus 'Reestablece la selección del botónEnd SubPrivate Sub optButton_Click(Index As Integer) Form1.BackColor = QBColor(Index + 1)End Sub

2.2.1 CREACION

Un formulario es una ventana o cuadro de diálogo que contiene un conjunto de controles insertados por nosotros desde la barra de herramientas o cuadro de control al cual se le denomina también conjunto de Controles Activex.

En el VBA a un formulario se le denomina USERFORM quizás recogiendo el nombre que tradicionalmente lo ha usado el lenguaje de programación Visual Basic.

Use la siguiente secuencia para insertar un formulario en la ventana del editor del Visual Basic.

La siguiente es una imagen de un UserForm:

Page 19: Programacion Visual.docx

En la figura anterior se muestra el formulario llamado UserForm1. Si se desea cambiar este nombre se debe hacer clic en la opción Name de la ventana de propiedades. Si se desea que el formulario se llame "Panel de ingreso de datos", entonces se debe hacer clic en la propiedad Caption de la ventana de propiedades y digitar dicho texto en el lado derecho de esta propiedad

2.2.2 MOVER Y AJUSTAR TAMAÑO

Si creó un diseño de informe que ya tiene controles, puede cambiar la colocación y el tamaño de los mismos. Puede cambiar cada control individualmente o puede seleccionar un grupo de ellos y tratarlos como una unidad.Para mover un control

Seleccione el control y arrástrelo hasta la nueva posición en una banda de informe.

El control se mueve en incrementos hasta su posición en el diseño. Los incrementos están basados en la configuración de la cuadrícula. Para reemplazar la cuadrícula, presione la tecla CTRL mientras arrastra el control.

Para seleccionar varios controles

Arrastre para dibujar un cuadro de selección alrededor de los controles deseados.

Aparecerán los controladores de selección alrededor de cada control. Mientras estén seleccionados puede moverlos, copiarlos o eliminarlos como un grupo.

Puede asociar un grupo de controles para realizar varias tareas si los identifica como un grupo. Por ejemplo, puede querer asociar un control de etiqueta y un control de campo con cualquier otro de forma que pueda

Page 20: Programacion Visual.docx

moverlos sin seleccionarlos por separado. Esta característica también es útil después de haber dado formato y alineado los controles, porque conserva sus posiciones con respecto a los demás.Para agrupar controles

1. Seleccione los controles que quiera tratar como un grupo.2. En el menú Formato, elija Agrupar.

Los identificadores de selección se trasladarán a la parte exterior de todo el grupo. Puede tratar el grupo de controles como una unidad.

Para desagrupar un grupo de controles

1. Seleccione el grupo de controles.2. En el menú Formato, elija Desagrupar.

Aparecerán controladores de selección alrededor de cada uno de los controles que estaban en el grupo.

Una vez que un control está en el diseño, puede cambiar su tamaño individualmente o puede ajustar el tamaño de un grupo de controles para que coincidan entre sí. Puede ajustar el tamaño de cualquier control de informe excepto las etiquetas; su tamaño lo determinan el texto, la fuente y su tamaño en puntos.Para cambiar el tamaño de un control

Seleccione el control y, a continuación, arrastre uno de los controladores de selección hasta conseguir el tamaño deseado.

Para ajustar el tamaño de varios controles

1. Seleccione los controles que quiere que tengan el mismo tamaño.2. En el menú Formato, elija Tamaño.3. Elija la opción adecuada para el ancho, el alto o el tamaño.

Los controles ajustan el tamaño de acuerdo con la opción seleccionada.Alinear controlesPuede alinear controles entre sí o puede situarlos tomando como referencia la cuadrícula que proporciona el Diseñador de informes. Puede alinear los controles por un extremo o por el centro.Para alinear controles entre sí

1. Seleccione los controles que desee alinear.2. En el menú Formato, elija Alinear.3. En el submenú, elija la opción de alineación apropiada. Visual FoxPro utiliza como delimitador el

control cuyo borde está más cercano a la dirección que eligió para alinear.

Para alinear controles manualmente

En el menú Formato, desactive Forzar a la cuadrícula.

También puede alinear controles mediante la herramienta Diseño. Con esta barra de herramientas puede alinear con respecto al control más alejado del lado seleccionado, manteniendo presionada la tecla CTRL mientras hace clic en el botón de alineación.Debe alinear los controles por un lado que todos los controles seleccionados tengan disponible y alejado de los demás. Los controles que están en una fila y se seleccionan para alinearse por su lado derecho o izquierdo, se apilarán unos encima de otros. De igual modo, los controles que están en una línea vertical y seleccionados para alinearse por la parte superior o inferior, se superpondrán.Para centrar controles dentro de una banda

Page 21: Programacion Visual.docx

1. Seleccione los controles que desee alinear.2. En el menú Formato, elija Alinear.3. En el submenú, elija Centrar verticalmente o Centrar horizontalmente.

Los controles se mueven hacia el centro horizontal o vertical de su respectiva banda.Posición del control con la barra de estado o la cuadrículaPuede colocar un control en una posición especifica de la página del informe mediante la barra de estado o la cuadrícula. De forma predeterminada, los controles se ajustan a la posición de la cuadrícula. Puede elegir desactivar la característica de ajuste, y mostrar u ocultar las líneas de cuadrícula. Las líneas de cuadrícula pueden ayudarle a colocar los controles en el diseño.Para colocar un control en una posición específica

1. En el menú Ver, elija Mostrar posición.2. Seleccione el control y mueva el control al lugar deseado usando la información sobre su posición que

aparece en la barra de estado.

Para mostrar las líneas de cuadrícula

En el menú Ver, elija Líneas de cuadrícula.

Aparecerá una cuadrícula en las bandas del informe.Para cambiar la medida de la cuadrícula

1. En el menú Formato, elija Configurar cuadrícula.2. En el cuadro de diálogo Configurar cuadrícula, escriba el número de píxeles para el ancho

(horizontal) y el alto (vertical) de cada cuadrado de la cuadrícula.

UNIDAD III PRINCIPIOS DE PROGRAMACION DE VISUAL BASIC

3.1 ELEMENTOS DEL LENGUAJE

Como todo lenguaje de programación, Visual Basic tiene un conjunto de variables y estructuras que el programador puede usar. Empezaremos introduciendo conceptos poco a poco ya que la extensión del lenguaje haría necesaria la dedicación de mucho tiempo para conocerlo todo antes de empezar a realizar el primer programa. A medida que avancemos se irán añadiendo conceptos, sólo los más importantes en cada caso ya que estudiarlos en profundidad haría del curso una labor muy tediosa. Sirva como ejemplo que el control Textbox tiene 43 propiedades, 24 eventos y 11 métodos. Cierto es que muchos elementos son comunes a otros controles, por eso sólo veremos los más significativos de cada uno. En cualquier caso, cuando el alumno desee conocer un determinado control con mayor profundidad puede recurrir a la ayuda, que sorprendentemente está muy bien organizada y clara.

3.1.1 CONSTANTES

Una constante es un nombre significativo que toma el lugar de un número o cadena que no cambia.Las constantes almacenan valores que, como su nombre indica, permanecen iguales durante la ejecución de una aplicación.Puede mejorar considerablemente la legibilidad del código y facilitar su mantenimiento mediante constantes.Utilícelas en código que contiene valores que reaparecen o que dependen de ciertos números que son difíciles de recordar o que no tienen un significado evidente.

Page 22: Programacion Visual.docx

Cómo crear y utilizar constantesVisual Basic contiene varias constantes predefinidas, que se utilizan principalmente para operaciones de impresión y presentación.Puede crear también sus propias constantes con la instrucción Const, utilizando las mismas directrices que en la creación de nombres de variables.Si Option Strict es On, debe declarar el tipo de constante explícitamente.El ámbito de una constante, que es el conjunto de todo el código que puede hacer referencia a ella sin calificar su nombre, es igual al de una variable declarada en la misma ubicación.Para crear una constante que exista en el ámbito de un procedimiento concreto, declárela dentro de dicho procedimiento.Para crear una constante disponible en toda la aplicación, declárela con la palabra clave Public en la sección de declaraciones de la clase.

NOTA: Aunque las constantes son de algún modo similares a las variables, no se pueden modificar ni asignárseles valores como a éstas últimas.

Las constantes que se utilizan en el código pueden ser definidas por el modelo de objeto para los controles o componentes con los que trabaja o definidas por el usuario, es decir, creadas por éste.Constantes en tiempo de compilación y en tiempo de ejecuciónUna constante en tiempo de compilación se calcula cuando se compila el código, mientras que una constante en tiempo de ejecución sólo se puede calcular mientras la aplicación está en ejecución.Una constante en tiempo de compilación tendrá el mismo valor cada vez que se ejecuta una aplicación, mientras que una constante en tiempo de ejecución puede cambiar cada vez.Las constantes en tiempo de compilación se requieren para casos como límites de matriz, expresiones de caso o inicializadores de enumerador.

3.1.2. VARIABLES

Las variables que podemos usar en Visual pueden ser de los siguientes tipos:

Integer: Número entero que oscila entre los valores -32.768 y 32.767

Long: Número entero (entero largo) que oscila entre los valores -2.147.483.648 y 2.147.483.647

Simple: Número real que oscila entre los valores -3.40E+38 y 3.40E+38

Double: Número real que oscila entre los valores -1.8E+308 y 1.8E+308

Variant: Puede representar diferentes tipos de datos en distintas situaciones.

String: Cadena de caracteres, sirve para almacenar textos, aproximadamente hasta 65000 caracteres.

Boolean: Sólo admite dos estados, Verdadero (True) (-1) o Falso (False) (0).

Date: Almacena fecha y hora.

Aún hay más tipos, pero en principio sólo vamos a usar estos, para lo cual deberemos seguir el siguiente proceso:

Primero para poder usar una variable debemos declararla, esto lo haremos mediante la sentencia Dim, esto nos crea la variable y reserva el espacio necesario para ella, utilizaremos la siguiente sintaxis:

Dim Nombre_de_la_variable As tipo

El nombre de la variable puede tener hasta 40 caracteres y debe empezar por letra.

Page 23: Programacion Visual.docx

El tipo debe ser uno de los disponibles, cuando escribamos la sentencia, al llegar al tipo veremos como nos sale un cuadro de lista donde nos muestra las posibilidades para el mismo, podemos escribirlo nosotros o con las flechas del cursor buscarlo y pulsando espacio o intro que lo escriba el sistema.

Podemos especificar la longitud: Dim Cadena As String*4, esta sentencia nos declara una variable de tipo string y longitud fija de 4 caracteres. Si no especificamos longitud, la cadena tendrá longitud variable.

Para declarar vectores basta con poner el tamaño entre paréntesis: Dim Vector(25) As Integer, declara un vector de 25 posiciones que van de la 0 a la 24, y del tipo Integer.

Otro aspecto a tener en cuenta es dónde hacemos la declaración, ya que si la hacemos dentro de un procedimiento específico, esta sólo tendrá validez dentro de él, si queremos que la variable pueda ser usada por varios procedimientos deberemos declararla en el área General.

El segundo paso es la inicialización del valor de la variable, cosa que deberemos hacer salvo que nos sirvan los valores por defecto: 0 para las numéricas y "" para las alfanuméricas. Esto deberemos hacerlo dentro de algún procedimiento ya que en el área General no es posible, aunque sea una variable común. La sintaxis adecuada es:

Nombre_de_la_variable = Valor o expresión

Nota: Si queremos usar variables del sistema como Date o Time que contienen la fecha y hora del sistema respectivamente, no es necesario que las declaremos.

Ejemplo.

Abrir Proyecto1, esto lo podemos hacer desde el menú Archivo / Abrir proyecto, o desde la ventana inicial cuando abrimos Visual Basic, buscándolo tanto en la solapa Existente como en la solapa Recientes.

El objetivo es incluir un contador que me informe del número de veces que he pulsado el botón, para ello necesitaremos usar una variable. Si declaro la variable en el procedimiento Private Sub Command1_Click(), esta se inicializará cada vez que pulsemos el botón, con lo que por mucho que la incrementemos, no conseguiremos que nos muestre el número de veces que lo hemos pulsado. Necesitamos declararla fuera del procedimiento, bien pues escribimos la declaración al inicio del código: Dim contador As Integer, fuera de cualquier procedimiento (área General), con esto conseguimos que sea una variable pública para nuestro formulario y que sólo se inicialice al ejecutar el programa. Además observaremos como el editor de código nos separa esta declaración del resto de procedimientos mediante una línea horizontal.

Modificamos el procedimiento Private Sub Command1_Click(), de forma que nos quede: Print "Has pulsado el botón"; contador; "veces", añadimos debajo de esta: contador = contador + 1 y ejecutamos. Comenzando por 0 veremos como se incrementa el número cada vez que pulsemos el botón.

El siguiente paso en la depuración del programa sería conseguir que comenzase por 1 y no por 0. Si inicializamos la variable contador a 1 en el procedimiento Private Sub Command1_Click(), tenemos el mismo problema que antes, no conseguimos que se incremente ya que cada vez que pulsemos, vuelve a valer 1. 

Podemos pensar que la solución está en inicializarla a 1 fuera de cualquier procedimiento, pero eso no es posible, ya que en lo que se conoce como el área General (donde hemos declarado la variable) sólo podemos declarar variables, pero no inicializarlas.

Page 24: Programacion Visual.docx

La solución está en usar un evento que se dispare automáticamente una sola vez al inicio de la ejecución de nuestro programa. Ese evento es el Load del objeto Form, este evento se dispara cada vez que se carga el formulario y en él se suelen poner los parámetros comunes y especificaciones iniciales del formulario.

En la ventana de código, desplegamos el cuadro combinado de la izquierda y veremos los objetos de los que disponemos, seleccionamos Form, en el cuadro combinado de la derecha veremos que automáticamente sale el evento Load y nos escribe en el código el encabezamiento y pie del procedimiento Private Sub Form_Load(). Si necesitásemos usar otro evento del objeto Form, bastaría con desplegar el cuadro combinado de la derecha donde veríamos todos los que tiene disponible ese objeto. En este procedimiento escribimos la inicialización de la variable a 1, quedándonos la ventana de código:

3.1.3. TIPOS DE DATOS

El tipo de datos de un elemento de programación hace referencia al tipo de datos que puede contener y a cómo se almacenan dichos datos.Los tipos de datos se aplican a todos los valores que pueden almacenarse en la memoria del equipo o participar en la evaluación de una expresión.Cada variable, literal, constante, enumeración, propiedad, parámetro de procedimiento, argumento de procedimiento y valor devuelto por un procedimiento tiene un tipo de datos.

Tipos de datos declaradosUn elemento de programación se define con una instrucción de declaración y su tipo de datos se especifica con la cláusula As.La tabla siguiente muestra las instrucciones utilizadas para declarar diversos elementos.

Elemento de programación

Declaración de tipos de datos

Variable En una Instrucción Dim (Visual Basic)Dim amount As DoubleStatic yourName As StringPublic billsPaid As Decimal = 0

Page 25: Programacion Visual.docx

Literal Con un carácter de tipo literal; vea "Caracteres de tipo literal" en Caracteres de tipo (Visual Basic)Dim searchChar As Char = "." C

Constante En una Instrucción Const (Visual Basic)Const modulus As Single = 4.17825F

Enumeración En una Instrucción Enum (Visual Basic)Public Enum colors

Propiedad En una Property (Instrucción)Property region() As String

Parámetro de procedimiento

En una Sub (Instrucción, Visual Basic), Function (Instrucción, Visual Basic) o Operator (Instrucción)Sub addSale(ByVal amount As Double)

Argumento de procedimiento

En el código de llamada; cada argumento es un elemento de programación que ya se ha declarado o una expresión que contiene los elementos declaradossubString = Left( inputString , 5 )

Valor devuelto por procedimiento

En una Function (Instrucción, Visual Basic) o Operator (Instrucción)Function convert(ByVal b As Byte) As String

3.1.4 TIPOS DE OPERADORES

Los operadores nos permiten operar, validar, comparar, asignar, distinguir, etc.., los datos e instrucciones de código de nuestros programas. A continuación los operadores mas importantes.

Operadores aritméticosEstos operadores nos permiten trabajar con cálculos matemáticos como la suma (+), resta (-), división (/) y multiplicación (*).

Operadores de comparaciónLos operadores de comparación se utilizan para comparar expresiones de cualquier tipo. Los mas importantes son: El operador de igualdad (=), menor que (<), mayor que (>), distinto a(<>)

Operador de concatenación (&) que se utiliza para unir cadenas de caracteres.Por ejemplo:nombre = "Jose"apellido = "Peralta"

nombrecompleto = nombre & apellido

'La variable nombrecompleto pasaría a contener la unión de las otras dos variables 'es decir Jose PeraltaNota: hay muchos mas operadores en Visual Basic, estos son los básicos.

3.1.4.1 ARITMETICOS Y CONCATENACION

Page 26: Programacion Visual.docx

Los operadores aritméticos se utilizan para realizar muchas de las operaciones aritméticas habituales que implican el cálculo de valores numéricos representados por literales, variables, otras expresiones, llamadas a funciones y propiedades, y constantes.También se clasifican como operadores aritméticos los operadores de desplazamiento de bits, que actúan al nivel de bits individuales de los operandos y cambian sus modelos de bits a la izquierda o la derecha.Operaciones aritméticasPuede sumar dos valores en una expresión con el + (Operador, Visual Basic) o restar un valor de otro con el - (Operador, Visual Basic), como se muestra en el siguiente ejemplo.

VB

Dim x As Integer x = 67 + 34 x = 32 - 12

La negación también utiliza el - (Operador, Visual Basic), pero con un solo operando, como se puede ver en el ejemplo siguiente.

VB

Dim x As Integer = 65 Dim y As Integer y = -x

La multiplicación y la división utilizan los * (Operador, Visual Basic) y / (Operador, Visual Basic), respectivamente, como se muestra en el ejemplo siguiente.

VB

Dim y As Double y = 45 * 55.23 y = 32 / 23

La exponenciación utiliza el ^ (Operador, Visual Basic), como se puede ver en el ejemplo siguiente.

VB

Dim z As Double z = 23 ^ 3 ' The preceding statement sets z to 12167 (the cube of 23).

La división de enteros se lleva a cabo con el \ (Operador, Visual Basic).La división de enteros devuelve el cociente, es decir, el número entero que representa el número de veces que puede se puede dividir dividendo entre el divisor sin tener en cuenta el valor del resto.El divisor y el dividendo deben ser tipos enteros (SByte, Byte, Short, UShort, Integer,UInteger, Long y ULong) para este operador.Todos los demás tipos deben convertirse antes a tipos enteros.El ejemplo siguiente ilustra la división de enteros.

VB

Dim k As Integer k = 23 \ 5 ' The preceding statement sets k to 4.

El módulo aritmético se calcula con el Mod (Operador, Visual Basic).Este operador devuelve el resto después de dividir el divisor por el dividendo un número integral de veces.Si tanto el divisor como el dividendo son tipos enteros, el valor devuelto es entero.Si el divisor y el dividendo son tipos de punto flotante, el valor devuelto es una variable de punto flotante.En el siguiente ejemplo se muestra este comportamiento.

VB

Dim x As Integer = 100 Dim y As Integer = 6 Dim z As Integer z = x Mod y ' The preceding statement sets z to 4. VB

Dim a As Double = 100.3 Dim b As Double = 4.13 Dim c As Double c = a Mod b ' The preceding statement sets c to 1.18.

Page 27: Programacion Visual.docx

Intento de dividir por ceroLa división por cero produce resultados diferentes dependiendo de los tipos de datos que se utilicen.En divisiones de enteros (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong), .NET Framework inicia una excepciónDivideByZeroException.En operaciones de división del tipo de datos Decimal o Single, .NET Framework también produce una excepción DivideByZeroException.En las divisiones de punto flotante que impliquen el tipo de datos Double, no se produce ninguna excepción y el resultado es el miembro de clase que representa NaN, PositiveInfinity o NegativeInfinity, dependiendo del dividendo.La siguiente tabla resume los diferentes resultados de intentar dividir un valor Double por cero.

Tipo de datos del dividendo

Tipo de datos del divisor

Valor del dividendo

Resultado

Double Double 0 NaN (no es un número definido matemáticamente)

Double Double > 0 PositiveInfinity

Double Double < 0 NegativeInfinity

Cuando se detecta una excepción DivideByZeroException, puede utilizar los miembros de la excepción para controlarla.Por ejemplo, la propiedad Message contiene el texto del mensaje de la excepción. Operaciones de desplazamiento de bitsUna operación de desplazamiento de bits realiza un desplazamiento aritmético sobre un modelo de bits.El patrón está contenido en el operando de la izquierda, mientras que el operando de la derecha especifica el número de posiciones que debe desplazarse el modelo.Puede desplazar el modelo a la derecha con >> (Operador, Visual Basic) o a la izquierda con<< (Operador, Visual Basic).

El tipo de datos del operando del modelo debe ser SByte, Byte, Short, UShort, Integer, UInteger, Long o ULong.El tipo de datos del operando de cantidad de desplazamiento debe ser Integer o se debe ampliar a Integer.Los desplazamientos aritméticos no son circulares, lo que significa que los bits desplazados a un extremo del resultado no se vuelven a introducir en el otro extremo.Las posiciones de bits que quedan vacantes debido a un desplazamiento se establecen de la siguiente manera:

0 para un desplazamiento aritmético a la izquierda 0 para un desplazamiento aritmético a la derecha de un número positivo 0 para un desplazamiento aritmético a la derecha de un tipo de datos sin signo

(Byte, UShort, UInteger, ULong) 1 para un desplazamiento aritmético a la derecha de un número negativo

(SByte, Short, Integer o Long)El ejemplo siguiente desplaza un valor Integer tanto a la izquierda como a la derecha.

VB

Dim lResult, rResult As Integer Dim pattern As Integer = 12 ' The low-order bits of pattern are 0000 1100. lResult = pattern << 3 ' A left shift of 3 bits produces a value of 96. rResult = pattern >> 2 ' A right shift of 2 bits produces value of 3.

Los desplazamientos aritméticos nunca generan excepciones de desbordamiento.

Page 28: Programacion Visual.docx

Operaciones bit a bitAdemás de ser operadores lógicos, Not, Or, And y Xor también realizan operaciones aritméticas bit a bit cuando se utilizan en valores numéricos.Seguridad de tiposNormalmente, los operandos deben ser del mismo tipo.Por ejemplo, si está realizando sumas con una variable Integer, debe sumarla a otra variable Integer y asignar el resultado a una variable que también sea del tipo Integer.Una manera de asegurar unas buenas prácticas de codificación con seguridad de tipos consiste en usar la Option Strict (Instrucción).Si establece Option Strict On, Visual Basic realiza automáticamente las conversiones con seguridad de tipos.Por ejemplo, si intenta agregar una variable Integer a una variable Double y asignar el valor a una variable de tipoDouble, la operación se realizará normalmente, porque un valor Integer puede convertirse a Double sin pérdida de datos.Por otra parte, las conversiones no seguras de tipos, causan un error del compilador con Option Strict On.Por ejemplo, si intenta agregar una variable Integer a una variable Double y asignar el valor a la variable Integer, se produce un error del compilador, porque una variable Double no se puede convertir implícitamente al tipo Integer.Sin embargo, si establece Option Strict Off, Visual Basic permite que se efectúen conversiones implícitas de restricción, aunque pueden dar como resultado la pérdida inesperada de datos o de precisión.Por esta razón, es recomendable utilizar Option Strict On al escribir el código de producción.

Operadores de concatenaciónLos operadores de concatenación unen varias cadenas en una sola.Existen dos operadores de concatenación: + y &.Ambos efectúan la operación de concatenación básica, como se aprecia en el siguiente ejemplo.Estos operadores también concatenan variables de String, como indica el siguiente ejemplo.

VB

Dim a As String = "abc" Dim d As String = "def" Dim z As String = a & d Dim w As String = a + d ' The preceding statements set both z and w to "abcdef".

Diferencias entre los dos operadores de concatenaciónEl propósito principal del + (Operador, Visual Basic) es sumar dos números,aunque también puede concatenar operandos numéricos con operandos de cadena.El operador + posee un conjunto de reglas complejo que establecen si hay que sumar, concatenar, señalar un error de compilador o generar una excepción InvalidCastException en tiempo de ejecución.El & (Operador, Visual Basic) se define únicamente para operandos de String y siempre amplía sus operandos a String, independientemente de la configuración de Option Strict.El uso del operador & es recomendable para concatenar cadenas, ya que se está expresamente definido para cadenas y reduce las probabilidades de generar una conversión inintencionada.

Rendimiento: String y StringBuilderSi realiza una cantidad considerable de manipulaciones en una cadena (como concatenaciones, eliminaciones y reemplazos), el rendimiento puede verse beneficiado si usa la clase StringBuilder del espacio de nombresSystem.Text.Esta clase toma una instrucción extra para crear e inicializar un objeto StringBuilder, así como otra instrucción para convertir su valor final a una String, pero este tiempo se puede recuperar, ya que el rendimiento deStringBuilder es más rápido.

3.1.4.2 RELACIONAL

Los operadores relacionales comparan valores entre sí. Los operadores de comparación son =, <>, <, >, <= y >=. Todos los operadores relacionales dan como resultado un valor Boolean.Los operadores relacionales tienen el siguiente significado general:

Page 29: Programacion Visual.docx

El operador = comprueba si dos operandos son iguales. El operador <> comprueba si dos operandos no son iguales. El operador < comprueba si el primer operando es menor al segundo operando. El operador > comprueba si el primer operando es mayor que el segundo operando. El operador <= comprueba si el primer operando es menor o igual que el segundo operando. El operador >= comprueba si el primer operando es mayor o igual que el segundo operando.

Los operadores relacionales se definen para los tipos siguientes:

Byte, Short, Integer y Long. Los operadores comparan los valores numéricos de dos operandos de números enteros.

Single y Double. Los operadores comparan los operandos según las reglas de la norma IEEE 754. Decimal. Los operadores comparan los valores numéricos de los dos operandos decimales.

Sólo los operadores de igualdad (=) y desigualdad (<>) se definen para los tipos siguientes:

Boolean. El operador = devuelve True si los dos operandos son True o los dos operandos son False. El operador <>devuelve False si los dos operandos son True o los dos operandos son False.

Date. Los operadores devuelven el resultado de la comparación de los valores de fecha y hora. Char. Los operadores devuelven el resultado de la comparación de los valores Unicode. Aunque hay

una ambigüedad lógica en la resolución de los operadores relacionales cuando se resuelve con un operando Char y Short (porque los tipos se consideran equivalentes), en la práctica se puede elegir cualquier operador porque los dos operadores son semánticamente equivalentes.

Cadena. Los operadores devuelven el resultado de la comparación de dos valores utilizando una comparación binaria o una comparación de texto. La comparación utilizada se determina por el entorno de compilación y la instrucciónOption Compare. Una comparación binaria determina si es igual el valor numérico Unicode de los caracteres o si lo son cada uno de los caracteres de cada cadena. Una comparación de texto realiza una comparación de texto Unicode basada en la referencia cultural actual en uso en .NET Framework. Cuando se realiza una comparación de cadenas, una referencia nula es equivalente al literal de cadena "".

RelationalOperatorExpression ::=   Expression = Expression |   Expression < > Expression |   Expression < Expression |   Expression > Expression |   Expression < = Expression |   Expression > = Expression

3.1.4.3 LOGICOS

Los operadores lógicos comparan expresiones Boolean y devuelven un resultado Boolean.Los operadores And, Or,AndAlso, OrElse y Xor son binarios porque toman dos operandos, mientras que el operador Not es unario porque toma un solo operando.Algunos de estos operadores también pueden realizar operaciones lógicas bit a bit en valores enteros.

Operador lógico unarioEl Not (Operador, Visual Basic) realiza la negación lógica en una expresión Boolean.Produce el contrario lógico de su operando.Si la expresión se evalúa como True, Not devuelve False; si la expresión se evalúa como False, Not devuelveTrue. Debido a que Object es la clase base de todos los tipos de referencia en .NET Framework, este comportamiento es heredado por los tipos de referencia que no reemplazan el método ToString.

Page 30: Programacion Visual.docx

VB

Dim x, y As Boolean x = Not 23 > 14 y = Not 23 > 67 ' The preceding statements set x to False and y to True. Operadores lógicos binariosEl And (Operador, Visual Basic) realiza la conjunción lógica de dos expresiones Boolean.Si ambas expresiones se evalúan como True, And devuelve True.Si al menos una de las expresiones se evalúa como False, And devuelve False.El Or (Operador, Visual Basic) realiza la disyunción o inclusión lógicas de dos expresiones Boolean.Si una de las expresiones o ambas se evalúan como True, Or devuelve True.Si ninguna de las expresiones se evalúa como True, Ordevuelve False.Xor (Operador, Visual Basic) realiza la exclusión lógica de dos expresiones Boolean.Si exactamente una expresión, pero no ambas, se evalúa como True, Xor devuelve True.Si ambas expresiones se evalúan como True o como False, Xordevuelve False.En el siguiente ejemplo se muestra cómo utilizar los operadores And, Or y Xor.

VB

Dim a, b, c, d, e, f, g As Boolean a = 23 > 14 And 11 > 8 b = 14 > 23 And 11 > 8 ' The preceding statements set a to True and b to False. c = 23 > 14 Or 8 > 11 d = 23 > 67 Or 8 > 11 ' The preceding statements set c to True and d to False. e = 23 > 67 Xor 11 > 8 f = 23 > 14 Xor 11 > 8 g = 14 > 23 Xor 8 > 11 ' The preceding statements set e to True, f to False, and g to False.

Cortocircuitar las operaciones lógicasEl AndAlso (Operador, Visual Basic) es muy similar al operador And, ya que también realiza la conjunción lógica de dos expresiones Boolean.La diferencia clave entre ambos es que AndAlso presenta un comportamiento de evaluación "cortocircuitada".Si la primera parte de una expresión AndAlso se evalúa como False, la segunda parte de la expresión no se evalúa porque no puede modificar el resultado final y AndAlso devuelve False.De igual forma, el OrElse (Operador) (Visual Basic) realiza la disyunción lógica de evaluación cortocircuitada de dos expresiones Boolean.Si la primera parte de una expresión OrElse se evalúa como True, la segunda parte de la expresión no se evalúa porque no puede modificar el resultado final y OrElse devuelve True.Inconvenientes de las evaluaciones cortocircuitadasCortocircuitar puede mejorar el rendimiento ya que no se evalúa una expresión que no puede modificar el resultado de la operación lógica.Sin embargo, si esa expresión realiza acciones adicionales, al cortocircuitar se pasan por alto esas acciones.Por ejemplo, si la expresión incluye una llamada a un procedimiento Function, no se llama a ese procedimiento si la expresión se cortocircuita y el código adicional incluido en Function no se ejecuta.Por consiguiente, la función únicamente se puede ejecutar de vez en cuando y no se puede probar correctamente.También, la lógica del programa puede depender del código en la Function.En el ejemplo siguiente se muestra la diferencia entre And, Or y sus homólogos de evaluación cortocircuitada.

VB

Dim amount As Integer = 12 Dim highestAllowed As Integer = 45 Dim grandTotal As Integer

VB

If amount > highestAllowed And checkIfValid(amount) Then ' The preceding statement calls checkIfValid(). End If If amount > highestAllowed AndAlso checkIfValid(amount) Then ' The preceding statement does not call checkIfValid(). End If If amount < highestAllowed Or checkIfValid(amount) Then ' The preceding statement calls checkIfValid(). End If If amount < highestAllowed OrElse checkIfValid(amount) Then ' The preceding statement does not call checkIfValid(). End If VB

Page 31: Programacion Visual.docx

Function checkIfValid(ByVal checkValue As Integer) As Boolean If checkValue > 15 Then MsgBox(CStr(checkValue) & " is not a valid value.") ' The MsgBox warning is not displayed if the call to ' checkIfValid() is part of a short-circuited expression. Return False Else grandTotal += checkValue ' The grandTotal value is not updated if the call to ' checkIfValid() is part of a short-circuited expression. Return True End If End Function

En el ejemplo anterior, observe que una parte de código importante dentro de checkIfValid() no se ejecuta cuando se cortocircuita la llamada.La primera instrucción If llama a checkIfValid() aunque 12 > 45 devuelve False, porque Andno cortocircuita.La segunda instrucción If no llama a checkIfValid(), porque cuando 12 > 45 devuelve False,AndAlso cortocircuita la segunda expresión.La tercera instrucción If llama a checkIfValid() aunque 12 < 45 devuelveTrue, porque Or no cortocircuita.La cuarta instrucción If no llama a checkIfValid(), porque cuando 12 < 45 devuelveTrue, OrElse cortocircuita la segunda expresión.

Operaciones bit a bitLas operaciones bit a bit evalúan dos valores enteros en formato binario (base 2).Comparan los bits en las posiciones correspondientes y, a continuación, asignan valores basados en la comparación.En el siguiente ejemplo se muestra cómo se utiliza el operador And.

VB

Dim x As Integer x = 3 And 5

En el ejemplo anterior se establece el valor de x en 1.Esto pasa por las siguientes razones:

Los valores se tratan como binarios:3 en formato binario = 0115 en formato binario = 101

El operador And compara las representaciones binarias, una posición binaria (bit) a la vez.Si los dos bits en una posición dada son 1, entonces se coloca un 1 en esa posición del resultado.Si uno de los dos bits es 0, entonces se coloca un 0 en esa posición del resultado.En el ejemplo anterior, esto funciona como sigue:011 (3 en formato binario)101 (5 en formato binario)001 (el resultado, en formato binario)

El resultado se trata como decimal.El valor 001 es la representación binaria de 1, por lo que x = 1.

La operación Or bit a bit es similar, excepto en que se asigna 1 al bit resultante si cualquiera de los bits comparados es 1. Xor asigna 1 al bit del resultado si exclusivamente uno de los bits comparados (no ambos) es 1. Not toma un solo operando e invierte todos los bits, incluido el bit de signo, y asigna ese valor al resultado.Esto significa que para números positivos sin signo, Not siempre devuelve un valor negativo y, para números negativos, Not siempre devuelve un valor positivo o cero.Los operadores AndAlso y OrElse no admiten las operaciones bit a bit.

3.2 ESTRUCTURAS DE CONTROL

Page 32: Programacion Visual.docx

En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las

instrucciones de un programa.

con las estructuras de control se puede:

De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-Else) De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias (Select-Case) Ejecutar un grupo de sentencias mientras se cumpla una condición (Do-While) Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-Until) Ejecutar un grupo de sentencias un número determinado de veces (For-Next)

Todas las estructuras de control tienen un único punto de entrada y un único punto de salida. las estructuras

de control se puede clasificar en: secuenciales, iterativas y de control avanzadas. esto es una de las cosas

que permite que la programación se rija por los principios de la programación estructurada.

los lenguajes de programación modernos tienen estructuras de control similares. básicamente lo que varía

entre las estructuras de control de los diferentes lenguajes es su sintaxis, cada lenguaje tiene una sintaxis

propia para expresar la estructura.

El término "estructuras de control", viene del campo de la ciencia computacional. cuando se presentan

implementaciones de java para las estructuras de control, nos referimos a ellas con la terminología de la

especificación del lenguaje java, que se refiera a ella como instrucciones.

Estructura de control

las estructuras de control, denominadas también sentencias de control, permiten tomar decisiones y realizar

un proceso repetidas veces. se trata de estructuras muy importantes, ya que son las encargadas de controlar

el flujo de un programa, según los requerimientos del mismo.

3.2.1 SELECTIVAS

Las estructuras selectivas permiten tomar decisiones lógicas, de allí que se suelan denominar también

estructuras de decisión o alternativas. Son instrucciones que le permite al compilador de VB seguir una serie

de flujos según sea las expresiones que evalúa.

If…Then

Ejecuta de forma condicional un grupo de instrucciones, dependiendo del valor de una expresión.

Page 33: Programacion Visual.docx

Si la condición es verdadera, se ejecuta las instrucciones contenidas; pero si es falsa entonces no hace

nada.

1 If < condicion > Then

2 < instrucciones >

3 End If

Ejemplo:

1 If n < 0 Then

2 MsgBox "n es negativo."

3 End If

If…Then…Else

Ejecuta de forma condicional un grupo de instrucciones, dependiendo del valor de una expresión.

Si la condición es verdadera, se ejecuta las instrucciones contenidas en el primer bloque; pero si es falsa

entonces no hace nada.

Si la instrucción es falsa ejecuta el segundo bloque de instrucciones.

1 If < condicion > Then

2 < instrucciones >

3 Else

4 < instrucciones >

5 End If

Ejemplo:

Page 34: Programacion Visual.docx

1 If edad >= 18 Then

2 MsgBox "Usted tiene DNI"

3 Else

4 MsgBox "Usted aún no tiene DNI"

5 End If

Select…Case

Ejecuta uno de varios grupos de instrucciones, según el valor de una expresión.

Es muy conveniente cuando se necesitan usar una serie de instrucciones If…Then…Else, lo que haría ilegible

o compleja la navegación del código.

1 Select Case < expression >

2 Case < valor 1 >

3 < instrucciones >

4 Case Else

5 < instrucciones >

6 End Select

La instrucción Case Else se ejecuta si no se cumple ninguna de las anteriores.

Ejemplo:

01 Select Case dia

02 Case 1, 2, 3

03 Print "Es principio de semana"

Page 35: Programacion Visual.docx

04 Case 4

05 Print "Hoy es Miércoles"

06 Case 5, 6

07 Print "Terminando la semana"

08 Case  7

09 Print "Fin de semana"

10 Case Else

11 Print "No es día válido"

12 End Select

3.2.1.1 IF..THEN, IF…THE…ELSE

Ejecuta condicionalmente un grupo de instrucciones en función del valor de una expresión.

Sintaxis

' Multiple-line syntax: If condition [ Then ] [ statements ] [ ElseIf elseifcondition [ Then ] [ elseifstatements ] ] [ Else [ elsestatements ] ] End If ' Single-line syntax: If condition Then [ statements ] [ Else [ elsestatements ] ]

Elementoscondition

Requerido.Expresión.Debe evaluarse en True o False, o en un tipo de datos que sea implícitamente convertible aBoolean.Si la expresión es una variable Valores NULLBoolean que evalúa Nada, se trata la condición como si la expresión no es True, y ejecuta el bloque Else .

Then

Obligatorio en la sintaxis de una línea, opcional en la sintaxis de varias líneas.statements

Page 36: Programacion Visual.docx

Opcional.Se ejecutan una o más instrucciones que siguen a If...Then que se ejecutan si condition se evalúa comoTrue.

elseifcondition

Obligatorio si ElseIf está presente.Expresión.Debe evaluarse en True o False, o en un tipo de datos que sea implícitamente convertible a Boolean.

elseifstatements

Opcional.Se ejecutan una o más instrucciones que siguen a ElseIf...Then que se ejecutan si elseifcondition se evalúa como True.

elsestatements

Opcional.Una o más instrucciones que se ejecutan si ninguna expresión condition o elseifcondition anterior se evalúa como True.

End If

Termina el bloque If...Then...Else.

Sintaxis de varias líneasCuando se encuentra una instrucción If...Then...Else, se prueba condition.Si condition es True, se ejecutan las instrucciones que están a continuación de Then.Si condition es False, cada instrucción ElseIf (si hay alguna) se evalúa en orden.Cuando se encuentra una elseifcondition que sea True, se ejecutan las instrucciones que siguen inmediatamente a la instrucción ElseIf asociada.Si elseifcondition se evalúa como True, o si no hay ninguna instrucción ElseIf, se ejecutan las instrucciones situadas después de Else.Después de la ejecución de las instrucciones que siguen a Then, ElseIf o Else, la ejecución continúa con la instrucción que sigue a End If.Las cláusulas ElseIf y Else son opcionales.Puede tener tantas cláusulas ElseIf como desee en una instrucciónIf...Then...Else, pero no puede aparecer ninguna cláusula ElseIf después de una cláusula Else. If...Then...Else las instrucciones se pueden anidar una dentro de otra.Con la sintaxis de varias líneas, la instrucción If debe ser la única instrucción incluida en la primera línea.Las instrucciones ElseIf, Else y End If pueden ir precedidas solamente por una etiqueta de línea.El bloque If...Then...Elsedebe terminar con una instrucción End If.

Sugerencia: La Instrucción Select...Case (Visual Basic) puede ser más útil al evaluar una única expresión que tiene varios valores posibles.

Sintaxis de una única líneaPuede utilizar la sintaxis de una sola línea para pruebas cortas y sencillas.Sin embargo, la sintaxis de varias líneas proporciona más estructura y flexibilidad y, generalmente, es más fácil de leer, mantener y depurar.Lo que sigue a la palabra clave Then se examina para determinar si una declaración es un If de una sola línea.Si aparece cualquier otra cosa que no sea un comentario después de Then en la misma línea, ésta se trata como una instrucción If de una sola línea.Si no está presente Then, debe ser el comienzo de una instrucción If...Then...Else de varias líneas.En la sintaxis de una línea, puede que se ejecuten varias instrucciones como resultado de una decisión If...Then.Todas las instrucciones deben estar en la misma línea y separarse con dos puntos.En el ejemplo siguiente se muestra el uso de la sintaxis de varias líneas de la instrucción If...Then...Else.

VB

Dim count As Integer = 0 Dim message As String If count = 0 Then message = "There are no items." ElseIf count = 1 Then message = "There is 1 item." Else message = "There are " & count & " items." End If

El ejemplo siguiente contiene instrucciones If...Then...Else anidadas.

Page 37: Programacion Visual.docx

VB

Private Function CheckIfTime() As Boolean ' Determine the current day of week and hour of day. Dim dayW As DayOfWeek = DateTime.Now.DayOfWeek Dim hour As Integer = DateTime.Now.Hour ' Return True if Wednesday from 2 to 4 P.M., ' or if Thursday from noon to 1 P.M. If dayW = DayOfWeek.Wednesday Then If hour = 14 Or hour = 15 Then Return True Else Return False End If ElseIf dayW = DayOfWeek.Thursday Then If hour = 12 Then Return True Else Return False End If Else Return False End If End Function

En el ejemplo siguiente se muestra el uso de la sintaxis de una única línea.

VB

' If A > 10, execute the three colon-separated statements in the order ' that they appear If A > 10 Then A = A + 1 : B = B + A : C = C + B

3.2.1.2 SELECT CASE

Tambien existen ocasiones o programas donde se exige evaluar muchas condiciones a la vez, en estos casos o se usa una condicion compuesta muy grande o se debe intentar convertir el problema a uno que se pueda resolver usando la instruccion SELECT CASE.

Esta instruccion es una instruccion de decision multiple donde el compilador prueba o busca el valor contenido en una variable ENTERA,CHARACTER, STRING contra una lista de constantes apropiadas, es decir enteras, character o strings, cuando el computador encuentra el valor de igualdad entre variable y constante entonces ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo de instrucciones asociados a un default, aunque este ultimo es opcional.

El formato en visual basic net de esta instruccion es el siguiente;

capturar o asignar variable de condicion

Select Case variableopcion

case const1 instruccion(es)

case const2 instruccion(es)

case const3 Instruccion(es)

Case Else instruccion(es)

End Select

prog6.aspx

<HTML> <FORM RUNAT=SERVER> DAME UNA LETRA<ASP:TEXTBOX ID=LETRA RUNAT=SERVER/><BR> ANIMALITO<ASP:TEXTBOX ID=ANIMALITO BACKCOLOR=AZURE RUNAT=SERVER/><BR> <ASP:BUTTON TEXT=OK ONCLICK=EVENTO1 RUNAT=SERVER/><BR> </FORM></HTML> <SCRIPT LANGUAGE=VB RUNAT=SERVER> SUB EVENTO1(Sender As Object, E As EventArgs) SELECT CASE LETRA.TEXT CASE "A" ANIMALITO.TEXT = "AGUILA" CASE "B", "b" ANIMALITO.TEXT = "BACA" CASE "C" DIM ALFA AS INTEGER ALFA = 100 + 5 ' observar como se

Page 38: Programacion Visual.docx

encadenan strings usando simbolo & ANIMALITO.TEXT = ALFA & " CABALLO" CASE ELSE ANIMALITO.TEXT="NO HAY" END SELECT END SUB </SCRIPT>

Es el primer modelo de visual basic net aspx, el otro modelo VB les toca a ustedes y la unica nota digna de tomar en cuenta es que se pueden usar mas de dos instrucciones en cada case.

Observar el caso “b”, observar como se pueden usar mas de dos constantes, sorry por lo de BACA pero el unico animalito que me acorde fue el BURRO y luego mis alumnos se sienten ofendidos.

Corrida:

3.2.2 REPETITIVAS

Las estructuras de bucles de Visual Basic permiten ejecutar una o varias líneas de código de forma repetitiva.Puede repetir las instrucciones de una estructura de bucles hasta que una condición sea True, una condición sea False, un número de veces especificado o una vez para cada objeto de una colección.En el siguiente ejemplo se muestra una estructura de bucle que ejecuta un conjunto de instrucciones hasta que una condición se convierta en verdadera.

Page 39: Programacion Visual.docx

Ejecutar un conjunto de instrucciones hasta que una condición se convierta en verdadera.

3.2.2.1 FOR…NEXT

Repite un grupo de instrucciones un número de veces especificado.

SintaxisFor counter [ As datatype ] = start To end [ Step step ] [ statements ] [ Continue For ] [ statements ] [ Exit For ] [ statements ] Next [ counter ]

Elementos

Parte Descripción

counter Se requiere en la instrucción For.Variable numérica.Variable de control para el bucle.Para obtener más información, vea Argumento de contador más adelante en este tema.

datatype Opcional.Tipo de datos de counter.Para obtener más información, vea Argumento de contador más adelante en este tema.

start Requerido.Expresión numérica.Valor inicial de counter.

End Requerido.Expresión numérica.Valor final de counter.

step Opcional.Expresión numérica.Cantidad en la que se incrementa counter cada vez que se recorre el bucle.

statements Opcional.Una o más instrucciones entre For y Next que se ejecutan un número especificado de veces.

Continue For

Opcional.Transfiere el control a la siguiente iteración del bucle.

Page 40: Programacion Visual.docx

Exit For Opcional.Transfiere el control fuera del bucle For.

Next Requerido.Termina la definición del bucle For.

Nota: La palabra clave de To se utiliza en esta instrucción para especificar el intervalo del contador.También puede utilizar esta palabra clave en Instrucción Select...Case (Visual Basic) y en declaraciones de matriz.

Ejemplos simplesUtiliza una estructura de For…Next cuando desea repetir un conjunto de instrucciones un número fijo de veces.En el ejemplo siguiente, la variable de index comienza con un valor de 1 y se incrementa con cada iteración del bucle, finalizando después de que el valor de index alcanza 5.VB

For index As Integer = 1 To 5 Debug.Write(index.ToString & " ") Next Debug.WriteLine("") ' Output: 1 2 3 4 5 En el ejemplo siguiente, la variable de number comienza en 2 y se decrementa en 0,25 en cada iteración del bucle, finalizando después de que el valor de number alcance 0. El argumento de Step de -.25 reduce el valor en 0,25 en cada iteración del bucle.VB

For number As Double = 2 To 0 Step -0.25 Debug.Write(number.ToString & " ") Next Debug.WriteLine("") ' Output: 2 1.75 1.5 1.25 1 0.75 0.5 0.25 0

Sugerencia: Instrucción While...End While (Visual Basic) o Instrucción Do...Loop (Visual Basic) funcionan bien cuando no se sabe de antemano el número de veces que se ejecutan las instrucciones del bucle. Sin embargo, cuando espere ejecutar el bucle un número concreto de veces, For...Next es una mejor elección.Determina el número de iteraciones cuando se entra en el bucle por primera vez.

Bucles anidadosSe pueden anidar bucles For colocando un bucle dentro de otro.En el ejemplo siguiente se muestran estructurasFor...Next anidadas con valores de incremento diferentes.El bucle externo crea una cadena para cada iteración del bucle.El bucle interior disminuye una variable de contador de bucle por cada iteración del bucle.

VB

For indexA = 1 To 3 ' Create a new StringBuilder, which is used ' to efficiently build strings. Dim sb As New System.Text.StringBuilder() ' Append to the StringBuilder every third number ' from 20 to 1 descending. For indexB = 20 To 1 Step -3 sb.Append(indexB.ToString) sb.Append(" ") Next indexB ' Display the line. Debug.WriteLine(sb.ToString) Next indexA ' Output: ' 20 17 14 11 8 5 2 ' 20 17 14 11 8 5 2 ' 20 17 14 11 8 5 2

Cuando los bucles de anidamiento, cada bucle deben tener una variable única de counter.También puede anidar distintos tipos de estructuras de control unos dentro de otros.

Exit For y Continue ForLa instrucción de Exit For inmediatamente sale del bucle de For…Next y transfiere el control a la instrucción que sigue a la instrucción de Next.la instrucción Continue For transfiere el control inmediatamente a la siguiente iteración del bucle.

En el siguiente ejemplo se muestra el uso de las instrucciones Continue For y Exit For.

Page 41: Programacion Visual.docx

VB

For index As Integer = 1 To 100000 ' If index is between 5 and 7, continue ' with the next iteration. If index >= 5 And index <= 8 Then Continue For End If ' Display the index. Debug.Write(index.ToString & " ") ' If index is 10, exit the loop. If index = 10 Then Exit For End If Next Debug.WriteLine("") ' Output: 1 2 3 4 9 10 Puede incluir cualquier número de instrucciones Exit For en un bucle For...Next.Cuando se utiliza dentro de buclesFor…Next anidados, Exit For sale del bucle más profundo y transfiere el control al siguiente nivel de anidamiento.Exit For suele usarse después de que se evalúe alguna condición (por ejemplo, en una estructura de If…Then…Else).Puede que desee utilizar Exit For para las siguientes condiciones:

Continuar la iteración es innecesario o imposible.Un valor de error o una solicitud de finalización podría crear esta condición.

Una instrucción de Try…Catch…Finally detecta una excepción.Puede utilizar Exit For al final del bloque Finally .

Tiene un bucle infinito, que es un bucle que puede ejecutar un número grande o incluso infinito de veces.Si se detecta este tipo de condición, se puede utilizar Exit For para escapar del bucle.

Implementación técnicaCuando comienza un bucle For...Next, Visual Basic evalúa startend y step.Visual Basic evalúa estos valores únicamente en este momento y después asignará start a counter.Antes de que el bloque de la instrucción se ejecuta, Visual Basic compara counter a end.Si counter ya es mayor que el valor de end (o más pequeño si step es negativo), el bucle de For y el control pasa a la instrucción que sigue a la instrucción de Next.Si no, se ejecuta el bloque de instrucciones.Cada vez que Visual Basic encuentra la instrucción Next, incrementa counter en el valor indicado en step y vuelve a la instrucción For.Compara de nuevo counter con end y, otra vez, ejecuta el bloque o sale del bucle, según el resultado.Este proceso continúa hasta que counter sobrepasa end o se encuentra una instrucción Exit For.El bucle no detiene hasta que counter haya pasado end.Si counter es igual a end, el bucle continúa.La comparación que determina si se ejecuta el bloque es counter <= end si step es positivo y counter >= end si step es negativo.Si cambia el valor de counter mientras dentro de un bucle, el código podría ser más difícil de leer y depuración.Cambie el valor de start, end, o step no afecta a los valores de iteración que se determinados cuando el bucle primero se escribió.Si se anida bucles, el compilador señala un error si encuentra la instrucción de Next de un nivel de anidamiento externo antes de la instrucción de Next de un nivel interno.Sin embargo, el compilador sólo puede detectar este error superpuesto si se especifica counter en cada instrucción Next.Step (argumento)El valor de step puede ser positivo o negativo.Este parámetro determina el procesamiento de bucles según la tabla siguiente:

Valor de step El bucle se ejecuta si

Positivo o cero

counter <= end

Negativo counter >= end

El valor predeterminado de step es 1.Argumento de contadorLa siguiente tabla se indica si counter define una nueva variable local cuyo ámbito al bucle completo de For…Next.Esta determinación depende de si datatype está presente y si counter está definido.

Page 42: Programacion Visual.docx

¿datatypepresente?

¿ counterya se ha definido?

Resultado (si counter define una nueva variable local cuyo ámbito al bucle completo de For...Next )

No Si No, porque counter ya está definido.Si el ámbito de counter no es local al procedimiento, una advertencia en tiempo de compilación se produce.

No No Sí.Se deduce el tipo de datos de start, de end, y las expresiones de step.Para obtener información sobre la inferencia de tipos, vea Option Infer (instrucción) y Inferencia de tipo de variable local (Visual Basic).

Si Si Sí, pero solo si la variable existente de counter se define fuera del procedimiento.Esa variable sigue siendo independiente.Si el ámbito de la variable existente de counter es local al procedimiento, se produce un error de compilación.

Si No Sí.

El tipo de datos de counter determina el tipo de la iteración, que debe ser uno de los tipos siguientes: Un Byte, SByte, UShort, Short, UInteger, Integer, ULong, Long, Decimal, Single, o Double. Una enumeración que se declara utilizando una Instrucción Enum (Visual Basic). Interfaz Object. Un tipo T que tiene los siguientes operadores, donde B es un tipo que puede utilizarse en una

expresión Boolean.Public Shared Operator >= (op1 As T, op2 As T) As BPublic Shared Operator <= (op1 As T, op2 As T) As BPublic Shared Operator - (op1 As T, op2 As T) As TPublic Shared Operator + (op1 As T, op2 As T) As T

Puede especificar opcionalmente la variable de counter en la instrucción de Next.Esta sintaxis mejora la legibilidad del programa, especialmente si ha anidado bucles de For.Debe especificar la variable que aparece en la instrucción correspondiente de For.Las expresiones start, end y step pueden evaluarse como cualquier tipo de datos que se amplíe al tipo de counter.Si utiliza un tipo definido por el usuario para counter, podría tener que definir el operador de conversión de CType para convertir tipos de start, de end, o de step al tipo de counter.El ejemplo siguiente elimina todos los elementos de una lista genérica.En lugar de Instrucción For Each...Next (Visual Basic), el ejemplo muestra una instrucción de For…Next que recorra en orden descendente.El ejemplo utiliza esta técnica porque el método de removeAt hace elementos después del elemento quitado para tener un valor de índice mínimo.VB

Dim lst As New List(Of Integer) From {10, 20, 30, 40} For index As Integer = lst.Count - 1 To 0 Step -1 lst.RemoveAt(index) Next Debug.WriteLine(lst.Count.ToString) ' Output: 0 El ejemplo siguiente se recorre en iteración una enumeración que se declara mediante Instrucción Enum (Visual Basic).

VB

Public Enum Mammals Buffalo Gazelle Mongoose Rhinoceros Whale End Enum Public Sub ListSomeMammals() For mammal As Mammals = Mammals.Gazelle To Mammals.Rhinoceros

Page 43: Programacion Visual.docx

Debug.Write(mammal.ToString & " ") Next Debug.WriteLine("") ' Output: Gazelle Mongoose Rhinoceros End Sub En el siguiente ejemplo, los parámetros de la instrucción utilizan una clase que tiene sobrecargas de operador para los operadores +, -, >= y <=.

VB

Private Class Distance Public Property Number() As Double Public Sub New(ByVal number As Double) Me.Number = number End Sub ' Define operator overloads to support For...Next statements. Public Shared Operator +(ByVal op1 As Distance, ByVal op2 As Distance) As Distance Return New Distance(op1.Number + op2.Number) End Operator Public Shared Operator -(ByVal op1 As Distance, ByVal op2 As Distance) As Distance Return New Distance(op1.Number - op2.Number) End Operator Public Shared Operator >=(ByVal op1 As Distance, ByVal op2 As Distance) As Boolean Return (op1.Number >= op2.Number) End Operator Public Shared Operator <=(ByVal op1 As Distance, ByVal op2 As Distance) As Boolean Return (op1.Number <= op2.Number) End Operator End Class Public Sub ListDistances() Dim distFrom As New Distance(10) Dim distTo As New Distance(25) Dim distStep As New Distance(4) For dist As Distance = distFrom To distTo Step distStep Debug.Write(dist.Number.ToString & " ") Next Debug.WriteLine("") ' Output: 10 14 18 22 End Sub

3.2.2.2 WHITE…WHEN

Ejecuta una serie de instrucciones siempre que una condición dada sea True.

SintaxisWhile condition [ statements ] [ Continue While ] [ statements ] [ Exit While ] [ statements ] End While

Elementos

Término Definición

condition Requerido.Expresión Boolean.Si condition es Nothing, Visual Basic la trata como False.

statements Opcional.Una o más instrucciones a continuación de While, que se ejecutan cada vez que conditiones True.

Continue While

Opcional.Transfiere el control a la siguiente iteración del bloque de While .

Exit While Opcional.Transfiere el control fuera del bloque While.

End While Requerido.Termina la definición del bloque While.

Page 44: Programacion Visual.docx

ComentariosUtilice una estructura While...End While si desea repetir un conjunto de instrucciones un número indefinido de veces, siempre que una condición sea True.Si desea más flexibilidad con respecto a la ubicación donde prueba la condición o al resultado para el que la prueba, quizá prefiera Instrucción Do...Loop (Visual Basic).Si desea repetir las instrucciones un número fijo de veces, Instrucción For...Next (Visual Basic) suele ser mejor opción.

Nota: La palabra clave While también se utiliza en Instrucción Do...Loop (Visual Basic), Skip While (Cláusula, Visual Basic) yTake While (Cláusula, Visual Basic).

Si condition es True, se ejecutan todas las statements hasta que se encuentra la instrucción End WhileEl Control se devuelve a While el fragmento, y condition se comprueba de nuevo.Si condition aún es True, se repite el proceso.Si esFalse, el control que se va a extraer que sigue el fragmento de End While .El fragmento de While comprueba siempre la condición antes de iniciar el bucle.La ejecución en bucle continúa mientras el resultado de la condición sea True.Si condition es False cuando primero entra en el bucle, no ejecuta incluso una vez.condition resultados general de una comparación de dos valores, pero puede ser cualquier expresión que se evalúa comoBoolean (Tipo de datos, Visual Basic) un valor (True o False).Esta expresión puede incluir un valor de otro tipo de datos, como un tipo numérico, convertido en Boolean.Se pueden anidar bucles While colocando un bucle dentro de otro.También puede anidar distintos tipos de estructuras de control dentro de otras.

Salida mientrasEl fragmento de Salida mientras puede proporcionar otra forma de salir de un bucle de While .DeExit While transfiere el control inmediatamente al extraer que sigue el fragmento de End While .Normalmente se utiliza Exit While después de que se evalúe alguna condición (por ejemplo, en una estructura deIf...Then...Else ).Por ejemplo, puede ser conveniente salir de un bucle si se detecta una condición que hace que sea innecesario o imposible continuar la iteración, como puede ser un valor erróneo o una solicitud de finalización.Puede utilizar Exit While cuando se prueba para una condición que podría provocar un bucle infinito, que es un bucle que puede ejecutar un número muy grande o incluso infinito de veces.Puede utilizar Exit While para que el bucle.Puede poner cualquier número de instrucciones Exit While en cualquier lugar del bucle While.Cuando se utiliza dentro de bucles While anidados, Exit While transfiere el control fuera del bucle más profundo y al siguiente nivel de anidamiento.De Continue While de extraer transfiere el control inmediatamente a la siguiente iteración del bucle.

En el ejemplo siguiente, las instrucciones del bucle continúan ejecutándose hasta que la variable index es superior a 10.

VB

Dim index As Integer = 0 While index <= 10 Debug.Write(index.ToString & " ") index += 1 End While Debug.WriteLine("") ' Output: 0 1 2 3 4 5 6 7 8 9 10 En el siguiente ejemplo se muestra el uso de las instrucciones Continue While y Exit While.

VB

Dim index As Integer = 0 While index < 100000 index += 1 ' If index is between 5 and 7, continue ' with the next iteration. If index >= 5 And index <= 8 Then Continue While End If ' Display the index. Debug.Write(index.ToString & " ") ' If index is 10, exit the loop. If index = 10 Then Exit While End If End While Debug.WriteLine("") ' Output: 1 2 3 4 9 10

Page 45: Programacion Visual.docx

En el ejemplo siguiente se leen todas las líneas de un archivo de texto.El método OpenText abre el archivo y devuelve unStreamReader que lee los caracteres.En la condición de While , el método de Peek de StreamReader determina si contiene caracteres adicionales.

VB

Private Sub ShowText(ByVal textFilePath As String) If System.IO.File.Exists(textFilePath) = False Then Debug.WriteLine("File Not Found: " & textFilePath) Else Dim sr As System.IO.StreamReader = System.IO.File.OpenText(textFilePath) While sr.Peek() >= 0 Debug.WriteLine(sr.ReadLine()) End While sr.Close() End If End Sub

UNIDAD IV ELABORACION Y MANIPULACION DE UNA BASE DE DATOS

4.1 CREACION DE UNA BASE DE DATOS

Para crear una base de datos SQL Server Compact 3.5 y tener acceso a ella mediante Visual Basic Express, debe instalar primero SQL Server Compact 3.5. Si no lo instaló al instalar Visual Basic Express, debe hacerlo antes de continuar.

Para crear una base de datos1. En el menú Archivo, haga clic en Nuevo proyecto.2. En el cuadro de diálogo Nuevo proyecto, en el panel Plantillas, haga clic en Aplicación de Windows

Forms.3. En el cuadro Nombre, escriba PrimeraBaseDeDatos y, a continuación, haga clic en Aceptar.

Se abre un nuevo proyecto de formularios Windows Forms.4. En el menú Proyecto, haga clic en Agregar nuevo elemento.5. En el cuadro de diálogo Agregar nuevo elemento, haga clic en Base de datos local.6. En el cuadro Nombre, escriba PrimeraBaseDeDatos y, a continuación, haga clic en Agregar.

Se abrirá el Asistente para la configuración de orígenes de datos.7. En el Asistente para la configuración de orígenes de datos, haga clic en Cancelar.

Una nueva base de datos, PrimeraBaseDeDatos.sdf, se agrega al proyecto y aparece en el Explorador de soluciones.

Agregar una tablaComo puede observar, crear una base de datos es fácil. En su estado actual, la base de datos no es útil dado que no contiene datos. En el siguiente procedimiento, se agregará una tabla a la base de datos, en este caso, una tabla para almacenar información de direcciones.

Para agregar una tabla a la base de datos1. En el menú Ver, haga clic en Explorador de bases de datos.2. En el Explorador de bases de datos, expanda PrimeraBaseDeDatos.sdf (haga clic en el signo más) y,

a continuación, seleccione Tablas.3. Haga clic con el botón secundario en Tablas y, a continuación, en Crear tabla.

Se abre la ventana Nueva tabla.4. En el cuadro Nombre escriba Direcciones.5. Seleccione el campo vacío situado bajo Nombre de columna y escriba Nombre.6. En el campo Tipo de datos, haga clic en nvarchar en la lista desplegable.7. Establezca el valor del campo Longitud en 50; la columna Permitir valores null se establece

automáticamente en Sí.Ahora se ha definido la primera columna en la nueva tabla.

8. Repita los tres pasos anteriores para agregar cuatro columnas más con los valores siguientes:

Page 46: Programacion Visual.docx

a. Nombre de columna: Apellido, Tipo de datos: nvarchar, Longitud: 50b. Nombre de columna: Calle, Tipo de datos: nvarchar, Longitud: 50c. Nombre de columna: Ciudad, Tipo de datos: nvarchar, Longitud: 50d. Nombre de columna: Teléfono, Tipo de datos: nvarchar, Longitud: 50

9. Haga clic en Aceptar para crear la tabla y cerrar la ventana Nueva tabla.

Agregar claves principalesAhora tiene una tabla en la base de datos que puede usar para almacenar datos de nombres, direcciones y teléfonos para la libreta de direcciones. El último paso es agregar claves principales para evitar registros duplicados.Una columna de clave, también conocida como clave principal, designa una columna de la tabla que siempre contiene valores únicos. En esa columna de la tabla sólo puede haber una fila que contenga un valor dado; si intenta insertar otra fila que contenga ese mismo valor, aparecerá un error.Si no hay una columna que sirva de clave principal, puede usar más de una columna. En el caso de la tabla Direcciones, designe las columnas Nombre y Apellido como claves principales. Aunque podría conocer a varias personas con el mismo nombre o apellido, es menos probable que conozca a dos personas que compartan el nombre y el apellido.

Para agregar claves principales a la tabla1. En el Explorador de bases de datos, expanda el nodo Tablas.2. Haga clic con el botón secundario en la tabla Direcciones y, a continuación, haga clic en Editar

esquema de tabla.Se abre la ventana Editar tabla.

3. En la fila Nombre, cambie Permitir valores null a No y Clave principal a Sí.4. En la fila Apellido, cambie Permitir valores null a No y Clave principal a Sí.

Nota: Permitir valores null se establece en No porque cualquier campo que se designe como clave principal debe contener un valor.

5. Haga clic en Aceptar para guardar estos valores y cerrar la ventana Editar tabla.

Agregar datosAhora tiene una base de datos que contiene una única tabla, Direcciones. Por supuesto, una base de datos no es muy útil a menos que contenga datos. En el siguiente procedimiento, va a agregar algunos datos a la tabla Direcciones. Si lo desea, puede sustituir los nombres y las direcciones de las personas que conoce por aquellos proporcionados en el ejemplo.

Para agregar datos a la tabla1. En el Explorador de base de datos, expanda el nodo Tablas, seleccione el nodo Direcciones y, a

continuación, en el menú Datos, haga clic en Mostrar datos de tabla.Se abrirá una ventana de tabla de datos.

2. En la ventana de tabla de datos, en el campo Nombre, escriba Sandeep.Nota: Observe que al abrir la ventana de tabla de datos por primera vez, el valor NULL aparece en todos los campos;null es un término de la base de datos que significa que el campo está vacío.

3. En el campo Apellido, escriba Kaliyath.4. En el campo Calle, escriba 123 45th Ave. E.5. En el campo Ciudad, escriba Seattle.6. Seleccione el campo Teléfono, escriba 2065550100 y presione la tecla TAB.

Ahora ha definido el primer registro en la tabla Direcciones.7. Repita los pasos 2 a 6 para agregar dos registros más que contengan los valores siguientes:

a. Nombre: Michael, Apellido: Alexander, Calle: 789 W. Capital Way, Ciudad: Tacoma, Teléfono:2065550101.

b. Nombre: Andrea, Apellido: Dunker, Calle: 234 Moss Bay Blvd, Ciudad: Kirkland, Teléfono: 2065550102.

8. En el menú Archivo, haga clic en Guardar todo para guardar el proyecto y la base de datos.

Page 47: Programacion Visual.docx

Mientras escribía los datos, quizá haya observado unos iconos pequeños de signo de exclamación junto a los datos. Al usar la tecla TABULADOR para pasar a la fila siguiente, los iconos desaparecieron. Este icono significa que los datos no se han guardado en la base de datos. Al dejar la fila en la que estaba escribiendo datos, los datos de toda la fila se guardan en la base de datos de manera automática.

Pasos siguientesEn esta lección ha creado una base de datos, ha agregado una tabla de base de datos y, a continuación, ha agregado registros a la tabla en el entorno de desarrollo integrado (IDE). En la siguiente lección, aprenderá a utilizar una base de datos en el programa.

4.1.1 TIPOS DE DATOS QUE SOPORTAN LAS TABLAS

En la tabla siguiente se muestran los tipos de datos de Visual Basic .NET, los tipos compatibles con Common Language Runtime, su asignación de almacenamiento nominal y sus intervalos de valores.

Tipo de Visual Basic

Estructura de tipo Common Language Runtime

Asignación de almacenamiento nominal

Intervalo de valores

Boolean Boolean En función de la plataforma de implementación

True o False

Byte Byte 1 byte 0 a 255 (sin signo)

Char (carácter individual)

Char 2 bytes 0 a 65535 (sin signo)

date DateTime 8 bytes 0:00:00 (medianoche) del 1 de enero de 0001 a 11:59:59 p.m. del 31 de diciembre de 9999.

Decimal 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 flotante de precisión doble)

Double 8 bytes -1,79769313486231570E+308 a -4,94065645841246544E-324 † para los valores negativos;4,94065645841246544E-324 a 1,79769313486231570E+308† para los valores positivos

Integer Int32 4 bytes -2.147.483.648 a 2.147.483.647 (con signo)

Page 48: Programacion Visual.docx

Long (entero largo) Int64 8 bytes -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (9,2...E+18 †) (con signo)

Objeto Object (clase) 4 bytes en plataforma de 32 bits8 bytes en plataforma de 64 bits

Cualquier tipo puede almacenarse en una variable de tipo Object

SByte SByte 1 byte -128 a 127 (con signo)

Short (entero corto) Int16 2 bytes -32.768 a 32.767 (con signo)

Single (punto flotante de precisión sencilla)

Single 4 bytes -3,4028235E+38 a -1,401298E-45 † para los valores negativos;1,401298E-45 a 3,4028235E+38 † para los valores positivos

String(longitud variable)

String (clase) En función de la plataforma de implementación

0 a 2.000 millones de caracteres Unicode aprox.

UInteger UInt32 4 bytes 0 a 4.294.967.295 (sin signo)

ULong UInt64 8 bytes 0 a 18.446.744.073.709.551.615 (1,8...E+19 †) (sin signo)

User-Defined(estructura)

(hereda deValueType)

En función de la plataforma de implementación

Cada miembro de la estructura tiene un intervalo de valores determinado por su tipo de datos y es independiente de los intervalos de valores correspondientes a los demás miembros.

UShort UInt16 2 bytes 0 a 65.535 (sin signo)

† En notación científica, E hace referencia a una potencia de 10. Por consiguiente, 3,56E+2 significa 3.56 x 102 ó 356 y 3,56E-2 significa 3.56 / 102 ó 0,0356.

Nota: En las cadenas que contienen texto, utilice la función StrConv para pasar de un formato de texto a otro.

Consumo de memoriaAl declarar un tipo de datos básico, no debe suponerse que su consumo de memoria es igual a su asignación de almacenamiento nominal. Esto se debe a las consideraciones siguientes:

Asignación de almacenamiento. Common Language Runtime puede asignar el almacenamiento en función de las características actuales de la plataforma en la que se ejecuta la aplicación. Si la memoria está casi completa, se pueden empaquetar los elementos declarados de la forma más estrecha posible. En otros casos, se podrían alinear las direcciones de memoria a los límites del hardware naturales para optimizar el rendimiento.

Page 49: Programacion Visual.docx

Ancho de plataforma. La asignación de almacenamiento en una plataforma de 64 bits es diferente a la asignación en una plataforma de 32 bits.

Tipos de datos compuestosLas mismas consideraciones se aplican a cada miembro de un tipo de datos compuesto, como una estructura o una matriz. No se pueden sumar simplemente todas las asignaciones de almacenamiento nominales de los miembros de tipo.Además, existen otras consideraciones, como las siguientes:

Sobrecarga. Algunos tipos compuestos tienen requisitos adicionales de memoria. Por ejemplo, una matriz utiliza memoria adicional para la matriz en sí y para cada dimensión. En una plataforma de 32 bits, esta sobrecarga corresponde a 12 bytes y 8 bytes por cada dimensión. En una plataforma de 64 bits, los requisitos se duplican.

Diseño de almacenamiento. No debe suponerse que el orden de almacenamiento en la memoria es igual al orden de declaración. Ni siquiera pueden hacerse predicciones sobre la alineación de bytes, como un límite de 2 bytes o de 4 bytes. Si define una clase o estructura y necesita controlar el diseño de almacenamiento de sus miembros, puede aplicar el atributo StructLayoutAttribute a la clase o estructura.

Sobrecarga de objetosUna variable Object que haga referencia a un tipo de datos básico o compuesto, utiliza 4 bytes además de los datos contenidos en el tipo de datos.

4.2 VINCULACION DE UNA TABLA CON UN FORMULARIO

La vinculación le permite conectarse a datos de otra base de datos sin importarlos, de modo que puede ver y

modificar los datos más recientes en el origen de ambos y bases de datos de destino sin crear ni mantener

dos copias de los mismos datos. Puede vincular únicamente a las tablas de otra base de datos de Access. No

se puede vincular a las consultas, formularios, informes, macros o módulos.

Cuando se vincula a una tabla de una base de datos de Access, Access crea una nueva tabla, denominada

tabla vinculada, que mantiene un vínculo a los campos y registros de origen. Los cambios que realice a los

datos de la base de datos de origen se reflejan en la tabla vinculada en la base de datos de destino y

viceversa. Sin embargo, no puede cambiar la estructura de una tabla vinculada en la base de datos de

destino. En otras palabras, no puede realizar cambios a una tabla vinculada, como agregar o eliminar un

campo o modificar el tipo de datos de un campo.

Prepararse para vincular tablas de una base de datos de Access

1. Busque la base de datos de origen.

El formato de archivo puede ser MDB, MDE, ACCDB o ACCDE. Si la base de datos está protegida con

contraseña, se le pedirá que escriba la contraseña durante la operación de vinculación.

2. Identifique las tablas que desea vincular.

Puede vincular a tablas, pero no se puede vincular a las consultas, formularios, informes, macros o módulos.

Si es la primera vez que se vincula a las tablas de otra base de datos de Access, consulte la siguiente tabla

para algunas sugerencias útiles.

Page 50: Programacion Visual.docx

Elemento Descripción

Varios objetos Puede crear vínculos a varias tablas en una sola operación de vinculación. Se crea una

tabla vinculada por cada tabla de origen.

Tablas

vinculadas

como origen

No se puede vincular a una tabla que ya es una tabla vinculada en la base de datos de

origen.

Por ejemplo, si la tabla Empleados1 a la que desea vincular a la base de datos de ventas

es realmente una tabla vinculada en la que se vincula a la tabla Employees de la base de

datos Nómina, no puede utilizar la tabla Empleados1 de la base de datos de ventas como

la tabla de origen. En su lugar debe vincularse directamente a la tabla Employees de la

base de datos de nóminas.

Tabla nueva o

existente

Cada operación de vinculación crea una nueva tabla vinculada por cada tabla de origen.

No se puede sobrescribir o anexar a una tabla existente mediante una operación de

vinculación.

Relaciones Si selecciona varias tablas de origen, las relaciones entre las tablas se trasladan

automáticamente a la base de datos de destino. Sin embargo, no puede cambiar ni

eliminar la relación en la base de datos de destino.

Campos de

búsqueda

Si un campo en la tabla de origen busca valores en otra tabla, olvide vincular a la tabla

relacionada si desea que el campo de destino muestre valores de búsqueda. Si no se

vincula a la tabla o consulta relacionadas, el campo de destino muestra sólo los

identificadores de búsqueda.

1. Cierre la base de datos de origen. Asegúrese de que ningún otro usuario tiene abierta en modo exclusivo la

base de datos.

2. Abra la base de datos de destino. Asegúrese de que la base de datos de destino no es de sólo lectura y que

tiene los permisos necesarios para agregar objetos y datos a la base de datos.

NOTA  Si desea crear los vínculos en una base de datos, debe crear una base de datos en blanco (uno que

no contiene las tablas, formularios o informes) antes de iniciar la operación de importación.

Haga clic en el Botón de Microsoft Office   y, a continuación, haga clic en nuevo.

La operación no sobrescribir o modificar cualquiera de las tablas o los objetos. Si ya existe un objeto con el

mismo nombre que el objeto de origen en la base de datos de destino, Access anexa un número (1, 2, 3 etc.)

en el nombre de la tabla vinculada. Por ejemplo, si vincula a la tabla envíos desde una base de datos que ya

tiene una tabla denominada envíos, la tabla vinculada se denominará Envíos1. Si el nombre Envíos1 ya está

en uso, la tabla nueva se denominará Envíos2 y así sucesivamente.

Recuerde que si desea anexar los registros de la tabla de origen a una tabla en la base de datos de destino,

debe utilizar una consulta de datos anexados en lugar de ejecutar una operación de vinculación.

Page 51: Programacion Visual.docx

Para obtener más información acerca de las consultas de datos anexados, vea el artículo crear una consulta

de datos anexados.

Vincular a los datos

1. En la ficha Datos externos, en el grupo Importar, haga clic en acceso. 

NOTA  La ficha Datos externos está disponible sólo cuando está abierta una base de datos.

2. En el cuadro de texto nombre de archivo, escriba el nombre de la base de datos de origen o haga clic

enExaminar para mostrar el cuadro de diálogo Abrir archivo.

3. Haga clic en Vincular al origen de datos creando una tabla vinculada y, a continuación, haga clic

enAceptar.

4. En el cuadro de diálogo Vincular tablas, seleccione las tablas que desea establecer el vínculo.

Para cancelar una selección, haga clic en la tabla.

5. Haga clic en Aceptar para finalizar la operación.

Access crea las tablas vinculadas.

6. Abra las tablas vinculadas en la vista Hoja de datos para asegurarse de que los datos son correctos.

4.3. CREACION DE CONSULTAS CON SQL

Para ejecutar una instrucción SQL que devuelve filas, puede ejecutar una consulta TableAdapter configurada para ejecutar una instrucción SQL (por ejemplo, CustomersTableAdapter.Fill(CustomersDataTable)).Si la aplicación no utiliza TableAdapters, llame al método ExecuteReader en un objeto de comando, estableciendo su propiedad CommandType en Text. (El objeto "Command"" hace referencia al comando concreto para el Proveedor de datos de .NET Framework que utiliza su aplicación. Por ejemplo, si su aplicación utiliza el proveedor de datos de .NET Framework para el servidor SQL Server, el objeto de comando sería SqlCommand.)

Los ejemplos siguientes muestran cómo ejecutar instrucciones SQL que devuelvan filas desde una base de datos utilizando TableAdapters u objetos de comando. Para obtener más información sobre cómo realizar consultas con TableAdapters y comandos, vea Rellenar los conjuntos de datos con datos.Ejecución de instrucciones SQL que devuelven filas mediante un TableAdapterEste ejemplo muestra cómo crear una consulta de TableAdapter mediante Asistente para la configuración de consultas de TableAdapter y, a continuación, proporciona información acerca de cómo declarar una instancia de TableAdapter y ejecutar la consulta.

Nota: Es posible que tu equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos.

Para crear una instrucción SQL que devuelve filas mediante un TableAdapter1. Abra un conjunto de datos en el Diseñador de Dataset. 2. Si no tiene uno ya, cree un TableAdapter. 

Page 52: Programacion Visual.docx

3. Si ya tiene una consulta en su TableAdapter que utiliza una instrucción SQL para devolver filas, pase al procedimiento siguiente, "Para declarar una instancia del TableAdapter y ejecutar la consulta". De lo contrario, continúe con el paso 4 para crear una nueva consulta que devuelva filas.

4. Haga clic con el botón secundario del mouse en el TableAdapter deseado y utilice el menú contextual para agregar una consulta.El Asistente para la configuración de consultas de TableAdapter se abre.

5. Deje el valor predeterminado de Usar instrucciones SQL y, a continuación, haga clic en Siguiente.6. Deje el valor predeterminado de SELECT que devuelve filas y, a continuación, haga clic

en Siguiente.7. Escriba su instrucción SQL o utilice el Generador de consultas para que le ayude a crear una y, a

continuación, haga clic en Siguiente.8. Proporcione un nombre para la consulta.9. Finalice el asistente; la consulta se agrega al TableAdapter.10. Compilar el proyecto.

Para declarar una instancia de TableAdapter y ejecutar la consulta1. Declare una instancia de TableAdapter que contenga la consulta que desea ejecutar.

o Para crear una instancia mediante las herramientas en tiempo de diseño, arrastre el TableAdapter que desee desde el Cuadro de herramientas. (Los componentes del proyecto aparecen ahora en el Cuadro de herramientas debajo de un encabezado que coincide con el nombre del proyecto.) Si el TableAdapter no aparece en el Cuadro de herramientas, quizá deba compilar el proyecto.O bien

o Para crear una instancia de código, reemplace el código siguiente con los nombres de DataSet y TableAdapter.Dim tableAdapter As New DataSetTableAdapters.TableAdapter

Nota: La búsqueda de TableAdapters no se realiza realmente dentro de sus clases de conjunto de datos asociadas. Cada conjunto de datos tiene una colección correspondiente de TableAdapters en su propio espacio de nombres. Por ejemplo, si tiene un conjunto de datos denominado SalesDataSet, habrá un espacio de nombres SalesDataSetTableAdapters que contiene sus TableAdapters.

2. Llame a su consulta como llamaría a cualquier otro método del código. Su consulta es un método de TableAdapter.Reemplace el código siguiente con los nombres de su TableAdapter y realice la consulta. También necesita pasar todos los parámetros requeridos por la consulta. Si no está seguro de si su consulta requiere parámetros, o de qué parámetros requiere, compruebe IntelliSense para averiguar la firma necesaria de la consulta. Dependiendo de si la consulta toma o no parámetros, el código sería similar a:TableAdapter.Query()TableAdapter.Query(Parameters)TableAdapter.Query(DataTable, Parameters)

3. El código completo para declarar una instancia de TableAdapter y ejecutar la consulta debe parecerse al siguiente:

VB

NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = new NorthwindDataSetTableAdapters.CustomersTableAdapter(); tableAdapter.FillByCity(northwindDataSet.Customers, "Seattle");

Ejecución de instrucciones SQL que devuelven filas mediante un objeto de comando

El ejemplo siguiente muestra cómo crear un comando y ejecutar una instrucción SQL que devuelve filas. 

Page 53: Programacion Visual.docx

Este ejemplo utiliza el objeto SqlCommand y requiere: Referencias a los espacios de nombres System, System.Data, System.Data.SqlClient y System.Xml. Un conjunto de datos denominado sqlConnection1. Una tabla denominada Customers en el origen de datos al que se conecta sqlConnection1. (De lo

contrario, necesita una instrucción SQL válida para su origen de datos.)

Para ejecutar una instrucción SQL que devuelve filas mediante programación a través de un objeto de comando

Agregue el código siguiente a un método desde el que desee ejecutar el código. Para devolver las filas llame al método ExecuteReader del comando (por ejemplo, ExecuteReader). Los datos se devuelven en un objetoSqlDataReader. 

VB

SqlConnection sqlConnection1 = new SqlConnection("Your Connection String"); SqlCommand cmd = new SqlCommand(); SqlDataReader reader; cmd.CommandText = "SELECT * FROM Customers"; cmd.CommandType = CommandType.Text; cmd.Connection = sqlConnection1; sqlConnection1.Open(); reader = cmd.ExecuteReader(); // Data is accessible through the DataReader object here. sqlConnection1.Close();

SeguridadLa aplicación necesita permiso para tener acceso a la base de datos y ejecutar la instrucción SQL.

UNIDAD V DISEÑO DE MENUS Y ELABORACION DE REPORTES

5.1 CREAR REPORTES

Para crear reportes en Visual Basic vamos a crear primero el Data Environment (Entorno de Datos) el cual es

una herramienta para crear reportes tal como Crystal Reports o Access.

Creando el Data Environment

a) Haz clic en el botón Project de la barra de herramientas.

b) Haz clic en Add Data Environment

c) Y se abrirá el Data Environment mostrando el nombre del proyecto en su barra de título.

             

Page 54: Programacion Visual.docx

d) En la ventana aparece un pequeño icono de un reporte al cual puedes cambiarle el nombre fácilmente seleccionándolo y modificando su propiedad (Name) por otro como Reportes, etc.

e) Más abajo se puede ver otro objeto con una clavija eléctrica llamado Connection1 al cual también puedes cambiarle el nombre modificando su propiedad (Name) por otro como Alumnos, Maestros, etc.

            

f) Ahora haz clic con el botón derecho del ratón sobre la Connection1 y haz clic en Properties...

g) Y aparecerá la caja Propiedades de vínculo de datos, haz clic en la opción Conexión.

Page 55: Programacion Visual.docx

             

h) Haz clic en: Usar la cadena de conexión y haz clic en Generar.

i) Y aparecerá la caja Seleccionar origen de datos, haz clic en la opción Origen de datos de equipo.

          

j) Selecciona el tipo de base de datos en donde se creó la base de datos, en nuestro caso MS Access Database y haz doble clic ahí.

Page 56: Programacion Visual.docx

k) Y aparecerá la caja Conexión, haz clic en el botón Base de datos...

           

l) Y aparecerá la caja Seleccionar base de datos, localiza la carpeta en donde se halla tu base de datos, selecciónala y haz clic en Aceptar.

            

m)  Enseguida se vuelve a mostrar la caja Conexión también haz clic en Aceptar.

n) Y se mostrará la caja Propiedades de vínculo de datos, mostrando en la caja de texto Cadena de conexión bajo Usar la cadena de conexión la ruta de la base de datos que hemos conectado, para finalizar la conexión haz clic en Aceptar.

            

Page 57: Programacion Visual.docx

o) Y volveremos al Entorno de Datos.

5.1.1 UNA TABLA

Las tablas temporales son objetos en servidores de bases de datos que sólo existen mientras laconexión con la base de datos está abierta. Cuando manipulas los datos y pierdes la conexión desde el código Visual Basic a la base de datos, la tabla temporal se borra de la memoria del servidor. Una tabla temporal se denota usando el símbolo de la almohadilla (#). Este proceso puede hacerse directamente desde el código.

1. Crea una sentencia SQL y asígnala a una variable. El lenguaje SQL se usa para crear y consultar tablas en tu base de datos. El siguiente código crea una sentencia SQL: Dim sql As String sql = "create table #temp (nombre_cliente varchar(50))" El código crea una tabla de clientes temporal con el nombre de columna "nombre_cliente" definido.

2. Crea tu conexión de base de datos. La conexión de base de datos toma la ubicación de tu base de datos y tu nombre de usuario y contraseña y conecta con el servidor en la red. El siguiente código crea la conexión a la base de datos y la abre para usarla con el código: set connection = New ADODB.Connection connection.ConnectionString = "Provider=SQL Server Provider;"Data Source=servidor;Persist Security Info=False;uid=nombreusuario;pwd=contraseña" connection.Open Cambia "servidor" por el nombre o dirección IP de tu servidor de base de datos. Cambia "nombreusuario" y "contraseña" por los valores usados para conectar con el servidor.

3. Ejecuta la sentencia SQL para crear una tabla temporal en tu base de datos. La siguiente sentencia crea la tabla: connection.Execute sql

4. Guarda los cambios en el código y pulsa la tecla F5. La tecla F5 compila tu código y lo ejecuta en el debugger compilador de Visual Basic. Prueba el código y verifica que la tabla se ha creado en tu base de datos.

5.1.2 DIRECCIONAMIENTO DEL REPORTE A IMPRESORA

Visual Basic 6.0 permite obtener por la impresora gráficos y texto similares a los que se pueden obtener por la pantalla, aunque con algunas diferencias de cierta importancia. Existen dos formas de imprimir: la primera mediante el método PrintForm, y la segunda utilizando el objeto Printer, que es un objeto similar al objeto PictureBox. Ambos métodos tienen puntos fuertes y débiles que se comentarán a continuación.

Método PrintForm El método PrintForm permite imprimir un formulario con sus controles y con los resultados de los métodos gráficos (PSet, Line y Circle) y del método Print. Para ello la propiedad AutoRedraw del formulario tiene que estar puesta a True, y los métodos citados tienen que estar llamados desde un evento distinto del Paint. Lo único que no se dibuja del formulario es la barra de título. Este sistema de impresión es muy sencillo de utilizar, pero tiene el inconveniente de que el resultado se imprime con la misma resolución de la pantalla (entre 50 y 100 puntos por pulgada), no aprovechando por tanto la mayor resolución que suelen tener las impresoras (300, 600 ó más puntos por pulgada).

Objeto Printer Este segundo sistema tiene la ventaja de que permite aprovechar plenamente la resolución de la impresora, pero no permite dibujar controles sino sólo los métodos gráficos habituales (PSet, Line y Circle), el método Print y un método no visto hasta ahora que es PaintPicture. Para Visual Basic 6.0 la impresora es un objeto gráfico más, similar a los formularios y a las cajas gráficas PictureBox. Como tal objeto gráfico tiene sus propiedades generales (DrawStyle, BackColor, ForeColor, etc.), además de otras propiedades específicas de la impresora, como DeviceName, DriverName, Orientation, Copies, etc. Para más información puede utilizarse el Help, buscando Printer object. En principio se utiliza la impresora por defecto del PC, pero Visual Basic mantiene una Printers Collection, que es algo así como un array de impresoras disponibles. A partir de esta Printers Collection se puede cambiar a la impresora que se desee. El objeto Printer tiene un método llamado

Page 58: Programacion Visual.docx

EndDoc para enviar realmente a la impresora el resultado de los métodos gráficos. El método PaintPicture permite incorporar el contenido de ficheros gráficos a un formulario, PictureBox o Printer. Su forma general es:

object.PaintPicture pictProp X, Y, Width, Height

donde pictProp indica el gráfico (coincide con la propiedad Picture de PictureBox), X e Y indican las coordenadas de inserción y los dos últimos parámetros las dimensiones (opcionales).

5.2 DISEÑO DE MENU

El objeto Menu de Visual Basic 6.0 se reemplaza por el control MenuStrip o ContextMenuStrip en Visual Basic 2008. Los nombres de algunas propiedades, métodos, eventos y constantes son diferentes y, en algunos casos, existen diferencias de comportamiento.

En Visual Basic 6.0, se crea un objeto Menu mediante el Editor de menús. Los objetos Menu están vinculados al formulario para el que se han creado pero se pueden modificar en tiempo de ejecución o mostrar como menús contextuales. Los menús creados con el objeto Menu no admiten de forma nativa sombreado, iconos o controles incrustados; sólo se pueden crear menús de estilo "sencillo" de Windows 98.

En Visual Basic 2008, el objeto Menu se reemplaza por los componentes MenuStrip y ContextMenuStrip. Los menús se pueden crear en tiempo de diseño utilizando la edición en contexto o se pueden crear en código. Los componentes MenuStrip y ContextMenuStrip permiten crear modernos menús de estilo barra de herramientas de Office, con compatibilidad completa para áreas sombreadas, iconos y controles incrustados como listas desplegables.

Mostrar menús contextuales

En Visual Basic 6.0, puede mostrar un menú contextual llamando al método PopupMenu y pasándole cualquier objeto Menu de nivel superior. Por ejemplo, si tiene un menú Edición denominado mnuEdit con submenús Cortar, Copiar y Pegar, puede mostrar un menú contextual con los comandos Cortar, Copiar y Pegar llamando a PopupMenu mnuEdit.

En Visual Basic 2008, los menús contextuales se muestran mediante un componente ContextMenuStrip independiente. No hay equivalente para el método PopupMenu, no obstante, puede seguir compartiendo comandos entre MenuStrip y ContextMenuStrip al crear ContextMenuStrip en tiempo de diseño y al compartir controladores de eventos.

5.2.1 PASOS PARA DESARROLLAR UN MENU

Para crear un menú debemos ir a Herramientas/Editor de Menús, o tgambién podemos acceder mediante Ctrl+E. Allí se abrirá un formulario como el que vemos a continuación:

Page 59: Programacion Visual.docx

Para crear el menú debemos completar los cam- pos que aparecen en el editor:

• Caption: Es el título del menú, por ejemplo en Visual basic, el primer título de la barra de menus es "Archivo".

• Name: Es el nombre con el que vamos a identificar el elemento del menú, generalmente se usa el propio caption precesido de mnu.

• Index: Está relacionado con la posibilidad de crear arreglos.• HelpContextID: Identifica una ayuda sobre la opción de menú. Si el usuario utiliza F1 podrá utilizar la ayuda

en pantalla correspondiente• ShortCut: Para el elemento del menú con el que estemos trabajando podemos elegir una combinación de

teclas. En el formulario de ejemplo este se encuentra en (ninguno), pero abriendo Shortcut se puede elegir entre una cantidad de combinaciones.

• NegotiatePosition: Selecciona la propiedad NegotiatePosition del menú.• Checked: Los elementos del menú pueden tener a su izquierda un tilde, esta propiedad también se puede

activar desde el código.• Enabled: Tiene dos posibilidades True o False. Si no está tildado estará en False y el elemento del menú

se verá grisado no pudiendo usarse.• Visible: Al igual que el anterior puede estar en True (cuando está tildado) o en False en cuyo caso no se

verá.• WindowsList: Es para aplicaciones con varios formularios o ventanas. Estas pueden manejarse desde el

menú. Si WindowsList está tildada (True), el menú puede presentar una lista con las ventanas abiertas• Flecha derecha: Pasa el menú seleccionado a un nivel jerárquico inferior. Crea cuatro niveles de

submenús como máximo.• Flecha izquierda: Pasa el menú seleccionado a un nivel jerárquico superior. Crea cuatro niveles de

submenús como máximo.• Flecha arriba: Mueve el elemento seleccionado hacia arriba.• Flecha abajo: Mueve el elemento seleccionado hacia abajo.• Lista Menús: Es un cuadro de lista que muestra en orden jerárquico todos los elementos del menú. Los

elementos de los submenús aparecen corridos hacia la derecha y con unos puntitos para indicar su jerarquía.(menú, submenú, subsubmenú, subsubsubmenú, según el caso, cada uno un poco más hacia la derecha)

• Siguiente: Selecciona la línea siguiente (hacia abajo) y sirve para segujir agregando elementos al menú..• Insertar: Inserta una línea en el cuadro de lista, pero a diferencia de "siguiente" lo hace encima de la línea

seleccionada.• Eliminar: Borra la línea seleccionada.• Aceptar: Aplica los cambios efectuados de forma que desaparece el editor de menús y aparece el nuevo

menú en el formulario que estamos usando.• Cancelar: Cierra el Editor de menús sin que se efectúe cambio alguno.

5.3 CREACION DE PROJECT

Para su primer programa de Visual Basic, creará una aplicación de exploración web que abra una página web. El primer paso para crear un programa de Visual Basic es abrir Visual Studio y crear un proyecto. Éste será siempre el primer paso para la creación de cualquier programa de Visual Basic.

En el menú Inicio de Windows , haga clic en Visual Basic 2008 Express.Aparecerá la pantalla de bienvenida a Visual Basic Express. Se trata de la interfaz de Visual Basic 2008 Express, que también recibe el nombre de entorno de desarrollo integrado o IDE.

1. En el menú Archivo, haga clic en Nuevo proyecto.Aparece el cuadro de diálogo Nuevo proyecto.

2. Seleccione Aplicación de Windows Forms y haga clic en Aceptar.Se muestra un nuevo formulario en el IDE y se agregan los archivos necesarios para el proyecto a la ventanaExplorador de soluciones. Si es el primer proyecto de Aplicación de Windows Forms que crea, recibirá el nombre de "WindowsApplication1".

Page 60: Programacion Visual.docx

Información detalladaAcaba de crear un proyecto para el programa de exploración web. Un proyecto en Visual Basic es un lugar para almacenar partes del programa y mantenerlas organizadas.Cuando crea un nuevo proyecto por primera vez, sólo existe en la memoria. Si cierra el entorno de desarrollo integrado (IDE) de Visual Basic, se le pide que guarde o descarte el proyecto. Cuando lo guarde, puede darle un nombre más significativo.Al abrir el cuadro de diálogo Nuevo proyecto, había diversos tipos de proyectos entre los cuales elegir. El programa de exploración Web es una Aplicación para Windows normal; es decir, un programa que se puede ejecutar desde el menúInicio.Al crear el proyecto, aparecía un formulario (también conocido como diseñador de formularios) en el entorno de desarrollo integrado (IDE). Este formulario representa una ventana que se mostrará cuando se ejecuta el programa. Muchos programas muestran más de una ventana, por lo que un proyecto puede contener múltiples formularios.

Referencias: https://msdn.microsoft.com/es-es/library/eyzd6e34(v=vs.90).aspx, https://msdn.microsoft.com/es-MX/library/2x7h1hfk.aspx, http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=140:tipos-de-variables-en-visual-basic-integer-single-double-string-object-boolean-etc-ejemplos-cu00308a&catid=37:curso-aprender-a-programar-visual-basic-desde-cero&Itemid=61, http://www.adrformacion.com/curso/visualbasic/leccion2/ElementosLenguaje.htm, https://msdn.microsoft.com/es-es/library/ktwtk9ff(v=vs.90).aspx