Vous êtes sur la page 1sur 57

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO

VISUAL BASIC 6.0

Realizado por:
Ing. Vernica Granizo R.

Junio 2006

VISUAL BASIC 6.0


El Entorno Integrado de Desarrollo (IDE) Cuando se inicia Visual Basic, se crea un proyecto nuevo con un formulario. El IDE de Visual Basic consta de los siguientes elementos:

Barra de Mens: Presenta los comandos que se usan para trabajar con Visual Basic. Adems de los mens estndar Archivo, Edicin, Ver, Ventana y Ayuda, contiene otros mens para tener acceso a funciones especficas de programacin, como Proyecto, Formato o Depuracin. Barra de Herramientas: Contienen los botones que se utilizan con mayor frecuencia cuando se trabaja con un proyecto. Simplifica la eleccin de opciones de los mens Archivo, Edicin, Ver y Ejecutar; adems, en el rea derecha presenta la ubicacin (coordenadas) y el tamao del objeto seleccionado Ventana de Formulario: Es el rea donde se disea la interfaz grfica, es decir, es donde se inserta electo grficos, como botones, imgenes, casilla de verificacin, cuadros de listas, etc. Cuadro de Herramientas: presenta todos los controles necesarios para disear una aplicacin, como cuadros de texto, etiquetas, cuadros de listas, botones de comandos, etc. Ventana de Proyectos: Muestra los elementos involucrados en el proyecto, como formularios, mdulos, controles oxc, etc. Cada elemento puede seleccionarse en forma independiente para su edicin. Ventana de Posicin del Formulario: muestra la ubicacin que tendr el formulario en la pantalla, cuando ejecute la aplicacin. Esta ubicacin puede cambiarse si se hace clic con el botn izquierdo del mouse. Ventana Propiedades: muestra todas las propiedades del control actualmente seleccionado, en este caso muestra las propiedades del Form1, luego podemos ver que abajo dice "Form1 Form", lo que est en negrita es el nombre del objeto, y lo que le sigue es el tipo de objeto, en este caso es un Formulario (Form).

Ventana de Cdigo: Funciona como un editor para escribir el cdigo (sentencias) de la aplicacin.

Botones del CUADRO DE HERRAMIENTAS NOMBRE TextBox Label CommandButton DESCRIPCION Mediante este control podremos realizar tanto la entrada como la salida de datos en nuestras aplicaciones. Este control es tambin uno de los ms utilizados, aunque su utilidad queda restringida a la visualizacin de datos en el mismo, no permitiendo la introduccin de datos por parte del usuario. Este control es el tpico botn que aparece en todas las aplicaciones y que al hacer click sobre l nos permite realizar alguna operacin concreta, normalmente Aceptar o Cancelar. Aunque segn el cdigo que le asociemos podremos realizar las operaciones que queramos. Este control proporciona un agrupamiento identificable para controles. Puede utilizar un Frame para subdividir un formulario funcionalmente por ejemplo, para separar grupos de controles OptionButton. El control CheckBox, o casilla de verificacin, permite elegir una opcin (activada / desactivada, True/False) que el usuario puede establecer o anular haciendo click. Una X en una casilla de verificacin indica que est seleccionada, activada, o con valor True. Cada casilla de verificacin es independiente de las dems que puedan existir en el formulario, pudiendo tomar cada una de ellas el valor True o False, a voluntad del operador. Este control nos permite elegir una opcin entre varias de las que se nos plantean. Cada opcin ser un control optionbutton diferente. Un control OptionButton muestra una opcin que se puede activar o desactivar, pero con dependencia del estado de otros controles OptionButton que existan en el formulario. Generalmente, los controles OptionButton se utilizan en un grupo de opciones para mostrar opciones de las cuales el usuario slo puede seleccionar una. Los controles OptionButton se agrupan dibujndolos dentro de un contenedor como un control Frame, un control PictureBox o un formulario. Para agrupar controles OptionButton en un Frame o PictureBox, dibuje en primer lugar el Frame o PictureBox y, a BOTON

Frame

Check Button (Botn de eleccin)

Option button (Botn de opcin):

continuacin, dibuje dentro los controles OptionButton. Todos los controles OptionButton que estn dentro del mismo contenedor actan como un solo grupo, e independientes de los controles OptionButton de otros grupos distintos. Aunque puede parecer que los controles OptionButton y CheckBox funcionan de forma similar, hay una diferencia importante: Cuando un usuario selecciona un OptionButton, los otros controles del mismo grupo OptionButton dejan de estas disponibles automticamente. Por contraste, se puede seleccionar cualquier nmero de controles CheckBox. Un control ListBox muestra una lista de elementos en la que el usuario puede seleccionar uno o ms. Si el nmero de elementos supera el nmero que puede mostrarse, se agregar automticamente una barra de desplazamiento al control ListBox. Un control ComboBox combina las caractersticas de un control TextBox y un control ListBox. Los usuarios pueden introducir informacin en la parte del cuadro de texto y seleccionar un elemento en la parte de cuadro de lista del control. En resumen, un ComboBox es la combinacin de un ListBox, que se comporta como si de un ListBox se tratase, y de un TextBox, con comportamiento anlogo a un TextBox sencillo, con la particularidad aqu de que el texto se le puede introducir por teclado, o elegir uno de los que figuran en la parte ListBox del Combo. Son dos controles similares, para introducir un dato cuasi-analgico en una aplicacin. Tienen un aspecto parecido al de un control de volumen de un equipo de msica. El HScrollBar est en posicin horizontal, y el VScrollBar en posicin vertical. Mediante estos controles se pueden introducir datos variando la posicin del cursor. Este objeto permite establecer temporizaciones. Presenta una novedad respecto a los controles estudiados hasta ahora. El control Timer solamente se ve durante el tiempo de diseo. En tiempo de ejecucin, el control permanece invisible. (Casi independiente. El timer no es un reloj exacto, pero se le parece) Utilice controles Shape en tiempo de diseo en lugar o adems de invocar los mtodos Circle y Line en tiempo de ejecucin. Puede dibujar un control Shape en un contenedor, pero no puede actuar como contenedor. (Esto quiere decir que un control Shape nunca le servir, por ejemplo, para albergar varios OptionButton y pretender que sean independientes de otros controles OptionButton que se encuentren fuera del control Shape. Este control no tiene Procedimientos. En realidad, solamente sirve para mostrar un determinado grfico, envolver grficamente a otros controles, pero no tiene ninguna aplicacin en cuanto a programa. Es un "adorno" para sus aplicaciones. Es un "adorno" para sus aplicaciones.

List box

Combo box

HScrollBar y VScrollBar

Timer Temporizador

Shape

Line

TERMINOS: Tiempo de diseo: Es el momento en el que se construye la aplicacin. Tiempo de diseo: Es el momento en el que se construye la aplicacin. Formulario: Un formulario sirve como una ventana que puede personalizar como la interfaz de su aplicacin o como un cuadro de dilogo que usa para obtener informacin del usuario. Un formulario puede existir individualmente o puede servir como un documento dentro de una interfaz de documento mltiple (MDI) Eventos: Es una accin como hacer clic, doble clic, presionar una tecla, mover el puntero del mouse, etc. Que el usuario debe realizar para que un objeto ejecute una accin determinada cada control

responde a diferentes eventos, algunos de ellos tienen caractersticas comunes. Los eventos pueden visualizarse en la ventana de cdigo. Para un formulario tenemos por ejemplo; el evento Load que se dispara cuando se carga el formulario; o el evento Click para un botn de comando, se dispara cuando se hace clic sobre l. Mtodos: Son procedimientos definidos en Visual Basic para realizar operaciones especificas sobre los objetos (Controles o Formularios). Los mtodos son un conjunto de procedimientos que permiten que un objeto ejecute una accin o tarea sobre s mismo. Por ejemplo, para un formulario tenemos el mtodo Hide que har que el formulario se oculte; o el mtodo Show que har que el formulario se vuelva a mostrar. Controles: Son los objetos que conforman la interfaz grafica de un programa; a travs de ellos, un usuario interacta con la aplicacin. Sus caractersticas pueden cambiarse por medio de la ventana propiedades Propiedades: Son los datos que hacen referencia a un objeto o formulario. Para un formulario tenemos por ejemplo, las propiedades BackColor (color de fondo), Height (altura) Objetos: Un objeto es una entidad que tiene asociado un conjunto de mtodos, eventos y propiedades. Ejemplo: TextBox es un objeto. Clases: Una clase no es nada ms que un Objeto, este objeto, tiene propiedades, funciones y mtodos. Podra decir que una clase en visual basic, es casi lo mismo que un control, pero ahora nace una nueva pregunta, cuando utilizar un control y cuando utilizar una clase. Mdulo: Un proyecto Visual Basic no slo est compuesto de Formularios, sino tambin de lo que se denominan mdulos. Un mdulo es un fichero Visual Basic donde escribimos parte del cdigo de nuestro programa, y digo parte, porque puede haber cdigo en el formulario tambin. Los mdulos estndar pueden contener cdigo que es comn a varios formularios en su aplicacin. Este cdigo es por omisin pblico, lo cual significa que fcilmente compartido con otros mdulos de cdigo, tales como un mdulo de formulario. Estos mdulos contienen declaraciones de procedimientos, tipos y variables. No pueden almacenar procedimientos de evento por que no contienen objetos. FORMULARIOS

El formulario es el principal medio de comunicacin entre el usuario y la aplicacin. Los usuarios interactan con los controles sobre el formulario para ingresarle datos y obtener resultados. Propiedades

BackColor: Color de fondo del formulario. BorderStyle: Estilo del borde del formulario. Caption: Texto en la barra de ttulo del formulario. ControlBox True/False: Determina si tiene o no el cuadro de control. Enabled True/False: Determina si est habilitado para responder a las acciones del usuario. Icon: Icono que se muestra cuando el formulario est minimizado. MaxButton True/False: Determina si tiene o no el botn Maximizar. MinButton True/False: Determina si tiene o no el botn Minimizar. Name: Nombre del formulario. WindowState: Estado inicial del formulario (normal, maximizado o minimizado)

Eventos Activate: Ocurre cuando el formulario se convierte en la ventana activa. Click: Ocurre cuando hace clic sobre el formulario. Load: Ocurre cuando se carga un formulario. Unload: Ocurre cuando un formulario est a punto de descargarse. Mtodos Hide: Oculta el formulario. Show: Hace visible el formulario. Controles Bsicos

Entre los controles ms comunes a utilizar en una aplicacin tenemos: Etiqueta (Label), Cuadro de Texto (TextBox) y Botn de Comando (CommandButton). Etiqueta (Label) Propiedades Alignment: Alineacin del texto dentro del control. AutoSize (True/False): Determina si el tamao del control se ajusta automticamente al texto que contiene. Caption: Texto que muestra el control.

Name: Nombre del control. Font: Establece la fuente, estilo y tamao para el texto del control.

Cuadro de Texto (Textbox) Propiedades Enabled (True/False): Establece un valor que determina si el control puede responder a eventos generados por el usuario. Font: Establece la fuentes, estilo y tamao para el texto del control. MaxLength: Establece la longitud mxima permitida para el texto en el control. MultiLine: Establece si el control puede aceptar mltiples lneas de texto. Name: Nombre del control. PasswordChar: Carcter utilizado para ocultar el texto que realmente contiene el control. Text: Texto que realmente contiene y muestra el control. Visible: Establece si el control ser visible para el usuario. Eventos Change: Ocurre cuando cambia el texto que contiene el control. GotFocus: Ocurre cuando el control recibe el enfoque. KeyDown: Ocurre cuando el usuario presiona una tecla mientras el control tiene el enfoque. LostFocus: Ocurre cuando el control pierde el enfoque. Mtodos Refresh: Actualiza el texto del control. SetFocus: Mueve el enfoque al control. Botn de Comando (Commandbutton) Propiedades Cancel True/False: Establece si el botn se comportar como el botn cancelar en el formulario y se invocar su evento Click cada vez que se presione la tecla ESC. Caption: Establece el texto que muestra el botn. Default True/False: Establece si el botn se comportar como el botn predeterminado en el formulario. Font: Establece la fuente, estilo y tamao para el texto del control. Name: Nombre del botn. Visible True/False: Establece si el botn ser visible para el usuario. Eventos Click: Ocurre cuando se hace clic sobre el botn. Mtodos SetFocus: Mueve el enfoque al botn.

MANEJO DE FORMULARIOS Normalmente la intefaz de una aplicacin est compuesta por varios formularios. Cuando Visual Basic inicia la aplicacin, automticamente se muestra el formulario de arranque, mientras que los otros formularios deben ser mostrados y ocultados a travs de cdigo. Mtodo Show: Muestra un formulario. Ejemplo: FrmEntrada.Show Mtodo Hide: Oculta un formulario, pero no lo descarga de memoria. Ejemplo: frmIngreso.Hide Sentencia Unload: Descarga un formulario de memoria.Use la palabra Me para referirse al formulario actual. Ejemplo:

Descarga el formulario actual Private Sub cmdCerrar_Click ( ) Unload Me End Sub Formularios Modales y No Modales Formulario Modal: No permite que el usuario interacte con otros formularios de la misma aplicacin hasta que no sea cerrado. Formulario NoModal: Permite al usuario cambiar a otros formularios de la misma aplicacin sin que los primeros sean cerrados. Ejemplos:

INTERFAZ DE MLTIPLES DOCUMENTOS (MDI MULTIPLE DOCUMENT INTERFASE) El Objeto MDIForm: Un formulario MDI es una ventana que acta como fondo de una aplicacin y es el contenedor de formularios que tienen su propiedad MDIChild establecida a True. Para crear un objeto MDIForm, elija Agregar formulario MDI en el men Proyecto, luego de agregarlo tenga en cuenta lo siguiente: Una aplicacin slo puede tener un objeto MDIForm, pero varios formularios secundarios MDI. Si un formulario secundario MDI tiene mens, la barra de mens del formulario secundario reemplazar automticamente a la barra de mens del objeto MDIForm cuando el formulario secundario MDI est activo. Un formulario secundario MDI minimizado se mostrar como un icono en el MDIForm. Un objeto MDIForm slo puede contener controles Menu y PictureBox, y controles personalizados que tengan una propiedad Align. Para colocar otros controles en un MDIForm, puede dibujar un cuadro de imagen en el formulario y despus dibujar otros controles dentro del cuadro de imagen. Un objeto MDIForm no puede ser modal. Los formularios secundarios MDI se disean de forma independiente del MDIForm, pero siempre estn contenidos en el MDIForm en tiempo de ejecucin. Formulario secundario MDI: Un formulario contenido dentro de un formulario MDI en una aplicacin con interfaz de mltiples documentos (MDI). Para crear un formulario secundario, establezca su propiedad MDIChild a True. Utilice esta propiedad al crear una aplicacin con interfaz de mltiples documentos (MDI). En tiempo de ejecucin, los formularios que tengan establecida a True esta propiedad se mostrarn dentro de un formulario MDI. Los formularios MDI secundarios pueden maximizarse, minimizarse y desplazarse, siempre dentro del formulario MDI primario. Cuando trabaje con formularios MDI secundarios, tenga en cuenta lo siguiente:

En tiempo de ejecucin, cuando un formulario MDI secundario se maximiza, su ttulo se combina con el del formulario MDI primario. En tiempo de diseo, los formularios MDI secundarios se muestran de la misma forma que el resto y slo se mostrarn dentro del formulario primario en tiempo de ejecucin. El icono de un formulario MDI secundario en la ventana Proyecto es distinto de los iconos de otros tipos de formularios. Los formularios MDI secundarios no pueden ser modales.

EL EDITOR DE MENS Esta herramienta permite crear mens personalizados para la aplicacin y definir sus propiedades. Para ingresar, estando en tiempo de diseo, haga clic en el men Herramientas y luego en la orden Editor de Mens o en el botn equivalente de la barra de herramientas estndar.

Opciones del cuadro de dilogo: Caption: Permite escribir el nombre del men que aparecer en la barra de mens o en un men. Para dar acceso al usuario a travs del teclado a un elemento del men, escribir el signo & delante de una letra. En tiempo de ejecucin, esta letra aparecer subrayada y el usuario tendr acceso al men si presiona las teclas ALT y la correspondiente a la letra subrayada. Name: Le permite escribir un nombre para el control elemento del men. Se utiliza para tener acceso el elemento del men en el cdigo. Flecha a la derecha: Pasa el men seleccionado a un nivel inferior. Puede crear hasta cuatro niveles de submens. Flecha a la izquierda: Pasa el men seleccionado a un nivel superior. Flecha arriba: Al dar clic en est ebotn el elemento seleccionado se mueve hacia arriba una posicin dentro del mismo nivel del men. Flecha abajo: Al dar clic en est ebotn el elemento seleccionado se mueve hacia abajo una posicin dentro del mismo nivel del men. Siguiente: Selecciona la lnea siguiente. Insertar: Inserta una lnea en el cuadro de lista, inmediatamente encima de la lnea actualmente seleccionada. Eliminar: Elimina la lnea actualmente seleccionada.

CUADRO DE MENSAJE Funcin MsgBox(): Los cuadros de mensaje ofrecen un modo simple y rpido de consultar a los usuarios por informacin simple o para permitirles tomar decisiones sobre el camino que su programa debe tomar. Puede usar esta funcin para mostrar diferentes tipos de mensaje y botones con los cuales el usuario da una respuesta.

MsgBox( prompt [, buttons] [, title ] [, helpfile, context] ) EL formato de la funcin MsgBox consta de los siguientes argumentos: Prompt (requerido): Texto que representa el mensaje a mostrarse en el cuadro de dilogo. Buttons (opcional): Especifican el tipo de botones que se pretenden mostrar, el estilo de icono que se va a utilizar. Title (opcional): Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si se omite title, en la barra de ttulo se coloca el nombre de la aplicacin. Valores: El argumento buttons puede asumir los siguientes valores:

El primer grupo de valores (0 a 5) describe el nmero y el tipo de los botones mostrados en el cuadro de dilogo; el segundo grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512, 768) determina el botn predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman nmeros para obtener el valor final del argumento buttons, se utiliza solamente un nmero de cada grupo. Nota: Estas constantes las especifica Visual Basic. Por tanto, el nombre de las mismas puede utilizarse en cualquier lugar del cdigo en vez de sus valores reales. Valores devueltos

Nota: Si desea omitir algn argumento, debe incluir el delimitador de coma correspondiente o utilizar argumentos con nombre. Ejemplos

VARIABLES TIPOS DE VARIABLES TIPO BOOLEAN BYTE INTEGER LONG SINGLE DOUBLE CURRENCY STRING DATE COMENTARIO Slo admite 2 valores TRUE o FALSE Admite valores entre 0 y 255 Admite valores entre -32768 y 32767 Admite valores entre -2.147.483.648 y 2.147.483.647 Admite valores decimales con precisin simple Admite valores decimales de doble precisin vlido para valores de tipo moneda cadenas de caracteres Fechas, permite operar con ellas

TIPOS DE DECLARACIN DE VARIABLES DIM: Es la forma mas comn de declarar una variable como Privada. Puede emplearse en un Procedimiento, Funcin, Formulario o Mdulo. La sintaxis es de la siguiente forma: Dim nombrevariable As Integer (o el tipo que sea) Declarando una variable con la sentencia DIM, en un formulario, Funcin, procedimiento o mdulo, el entorno de la variable ser el explicado anteriormente para una variable declarada como Privada. Es decir, esa variable no sale del formulario, procedimiento mdulo donde se declar. Cada vez que entremos al formulario, procedimiento o mdulo, esa variable tomar el valor cero (si es numrica) o nulo (si es string).

PRIVATE: Es la forma de declarar una variable como Privada. Puede emplearse solamente en la seccin de declaraciones de un Formulario o Mdulo. La sintaxis es de la siguiente forma: Private nombrevariable As Tipovariable Declarando una variable mediante la sentencia PRIVATE en un Formulario o Mdulo, esa variable puede usarse en todo ese Formulario o Mdulo (En todos sus Procedimientos y Funciones), pero NO fuera del Formulario o Mdulo donde se declar. La sentencia Private no puede usarse en un procedimiento o funcin.

PUBLIC: Es la forma de declarar una variable como Pblica. Puede emplearse solamente en la seccin de declaraciones de un Formulario o Mdulo. La sintaxis es de la siguiente forma: Public nombrevariable As Tipovariable

Declarando una variable de esta forma en la seccin de declaraciones de un Mdulo, esa variable puede usarse en cualquier parte del programa citndola simplemente por su nombre. Si se declara de esta forma en la seccin de declaraciones de un Formulario, esa variable puede usarse en todo el programa. Para nombrarla, si estamos en el Formulario donde se declar basta con citarla por su nombre. Si no estamos en ese Formulario, habr que citarla por el nombre del Formulario, seguido del nombre de la variable, separados por un punto : NombreFormulario.Nombrevariable En un Mdulo puede usarse tambin la sentencia Global en vez de Public: GLOBAL: Declara una variable que es vlida en todo el programa. La sintaxis es: Global nombrevariable As tipovariable La sentencia Global slo puede usarse en el apartado de declaraciones de un Mdulo. Mediante la sentencia Global la variable puede usarse en todo el espacio del programa. STATIC: Como se dijo anteriormente, una variable declarada en un procedimiento pierde su valor al salir de l. Lo peor es que una vez que el programa vuelva a entrar en ese procedimiento, la variable estar puesta a cero. Afortunadamente, esto ltimo tiene solucin. Si declarsemos una variable en un procedimiento o funcin, como esttica, esa variable, aunque no la podremos utilizar fuera de ese procedimiento o funcin, cuando volvamos a l conservar el valor que tena cuando lo abandonamos. Esta declaracin como esttica se realiza mediante la intruccin Static. Static nombrevariable As tipovariable Pese a que Visual Basic no obliga a declarar variables, es muy til hacerlo. De esta forma se tiene control sobre el programa. Si se quiere declarar varias variables un una sola lnea, la forma correcta de hacerlo es la siguiente : Dim Variable1 As String, Variable2 As String, Variable3 As String, Variable4 As String. NOTA.- No es recomendable declarar una variable a dos niveles. Es mucho mejor utilizar otro nombre para esa variable dentro del procedimiento donde se le declarara por segunda vez. A esta nota cabe exceptuar cuando declaramos variables para una operacin tipo contador For I = 1 To N Esa variable I es prctico declararla con el mismo nombre en cada Procedimiento donde se use. OPERADORES Los operadores que utiliza para las operaciones bsicas son: +: Suma - : Resta * : Multiplicacin / : Divisin \ : Divisin sin decimales Mod: Resto de una divisin ^ : Eleva a un exponente Ejemplos: Resultado = 12 + 15 ----> Resultado = 27 Resultado = 15 - 12 ----> Resultado = 3 Resultado = 15 * 12 ----> Resultado = 180 Resultado = 15 / 12 ----> Resultado = 1.25 Resultado = 15 \ 12 ----> Resultado = 1 Resultado = 15 Mod 12 ----> Resultado = 3 Resultado = 12 ^ 2 ----> Resultado = 144

resultado = ( ( 4 * 3 ) / 2 ) ^ 2 ----> Resultado = 36 Estos operadores se denominan Operadores aritmticos. Los operadores que realizan comparaciones se denominan Operadores relacionales. El resultado de las operaciones realizadas con estos operadores solamente admiten dos resultados: True o False. Estos operadores son: =: Igual <>: No igual >: Mayor >=: Mayor o igual que < :Menor que Estos operadores se suelen utilizar en estructuras de programa donde se tome una decisin. El operador = puede usarse tambin para comparar cadenas o fechas. Existen adems los Operadores Lgicos, estos operadores slo tienen sentido cuando se habla de variables Booleanas, es decir, aquellas que solamente pueden tomar los valores cero y uno. Los operadores lgicos son: And, Or, Not. Algunas funciones ms conocidas con nmeros son: Sqr: (Raz cuadrada): Devuelve la raz cuadrada de un nmero. Sin: (Seno):Devuelve el valor del seno de un ngulo (Expresado en radianes) Cos: (Coseno): Devuelve el coseno de un ngulo (En radianes). Tan: (Tangente): Devuelve la tangente de un ngulo SENTENCIAS CONDICIONALES Son aquellas que se realizan si se cumple una determinada condicin.

La sentencia condicional ms usada es IF.... THEN:

Si se cumple una condicin Entonces Realiza estas instrucciones Si no se cumple Realiza estas otras instrucciones Fin de la sentencia. Lo descrito anteriormente toma la forma: If condicin Then Instrucciones Else Otras instrucciones End If SELECT CASE: Selecciona, dependiendo del caso, un determinado juego de instrucciones. Select Case variable ' variable es una variable que puede tomar los valores (p.e.) de 1 a 4. Case 1 Instrucciones a ejecutar en caso de que variable = 1 Case 2 Instrucciones a ejecutar en caso de que variable = 2 Case 3 Instrucciones a ejecutar en caso de que variable = 3 Case 4 Instrucciones a ejecutar en caso de que variable = 4 End Select SENTENCIAS DE BUCLE. Un bucle es una sucesin repetitiva de instrucciones, que se estarn realizando mientras se cumpla una condicin o mientras no se cumpla otra condicin.

Mientras condicin Instrucciones Fin del bucle Existen dos formas de bucle: una, que realiza un nmero determinado de recorridos por el bucle. Es el denominado bucle por contador. Otra, realiza el bucle hasta que se cumpla (o deje de cumplirse) una condicin. Es el llamado bucle por condicin. FOR: Realiza un nmero determinado de recorridos por el bucle. Ejecuta el bucle tantas veces como se le indique. Ejemplo: En este bucle nos va a presentar las 26 letras maysculas del alfabeto ingls For N=65 To 90 Label1.caption = Label1.caption+ Chr ( N ) Next N FUNCIONES DE CADENAS Se denomina CADENA a una sucesin de caracteres. Una cadena puede tener uno o varios caracteres alfanumricos. Una cadena es tambin una sucesin de nmeros. Ejemplos: abcdefghijklmnopqrstuvwxyz1234567890 123456789 Para presentar un nmero en la pantalla, el ordenador debe convertirlo previamente a una cadena. Cuando introducimos un valor numrico por teclado o pantalla, el ordenador para hacer operaciones con l, debe transformarlo a un nmero. Estas consideraciones nos llevan a las dos primeras funciones con cadenas:

Str (nmero):Convierte un nmero a una cadena en numeracin decimal. Val (cadena numrica): Obtiene el valor (el nmero) correspondiente a esa cadena. Ejemplos: Variablenumerica = Val (TextBox1.Text) Este ejemplo convierte la cadena de caracteres (numricos) que hubiese en el TextBox1 en un nmero, y asocia este nmero a la variable Variablenumerica. Si el contenido del TextBox1 no fuesen caracteres numrico (abcd, por ejemplo), Variablenumerica tomara el valor 0. Label1.Caption = Str (Variablenumerica) Este ejemplo pondra en la etiqueta Label1 los caracteres correspondientes al valor que tuviese la variable Variablenumerica . NOTA: Siempre habr que convertir un nmero a una cadena cuando queramos presentarlo en la pantalla. Siempre habr que convertir a nmero la cadena de caracteres numricos que hayamos introducido por teclado o por pantalla, cuando queramos operar con ese nmero. Un Label, cuando tiene que presentar un nico nmero, no le pedir que se lo convierta a cadena, pues visual basic hace automticamente esa conversin. Sin embargo, cuando tiene que presentar un nmero, y adems un texto en el mismo Label, visual basic no realizar automticamente ese cambio, por lo que le dar un error. Se recomienda que convierta los nmeros a variables de cadena siempre que los quiera presentar en un Label o TextBox. Len (cadena): Devuelve la longitud de la cadena Resultado = Len (cadena) Resultado = 21 MATRICES Cuando utilizamos varias variables que tienen un significado similar para nosotros, pero que son distintas (Por ejemplo, el nombre de los alumnos de una clase) podemos utilizar una matriz. Esta

matriz est formada por tantos elementos como alumnos tenga la clase. El nombre asociado a cada uno de los elementos de la matriz puede ser: Alumno (n): Donde n es el nmero por orden de lista de ese alumno. Las matrices normalmente comienzan a numerar por el nmero 0. Este comienzo puede no ser el ms apropiado para la variable que estamos planteando, pues ningn alumno tiene el nmero de orden 0. Para hacer que una matriz comience a numerar por el 1 se debe definir mediante la instruccin: Option Base 1 que debe colocarse al comienzo del mdulo o formulario donde declaremos la matriz. Para declarar la matriz se hace como con todas las variables, especificando entre parntesis el nmero de elementos que componen la matriz: Dim Alumno (25) as String Hemos declarado que la variable alumno es una cadena, y que hay 25 elementos en esa matriz. Una matriz tambin se puede declarar de la siguiente forma : Dim Alumno(1 To 25) as String Donde le decimos que la variable Alumno tiene 25 elementos, que el primero tiene el ndice 1 y el ltimo tiene el ndice 25. Pero imaginemos que queremos meter en la misma matriz el nombre, primer apellido y segundo apellido del alumno. Necesitaremos declarar una matriz de 25 por 3. Como todos los elementos sern cadenas de caracteres, podemos declararla de la siguiente forma: Dim Alumno (1 To 25, 1 To 3) As String De esta forma, el primer apellido del alumno que ocupa el puesto nmero 15 de la clase, ser el elemento: Alumno (15, 2).

SQL SERVER 2000 Iniciar/parar el servidor Inicio > Todos los programas > Microsoft SQL Server > Administrador de servicios

Administracin del Servidor Inicio > Todos los programas > Microsoft SQL Server > Administrador Corporativo

Creacin de base de datos

Creacin de tablas

Asignacin de clave primaria

Diagramas de tablas

Relaciones Crear una columna que va a relacionar

Arrastra de una tabla a la otra para crear la relacin

Grabar todo y asignar un nombre al diagrama

Seguridad inicios de sesin en SQL Server

Ingresar un nombre y seleccionar Autenticacin de SQL Server e ingresar una contrasea

Ir a la pestaa Acceso a la base de datos, seleccionar la base y activar db_owner que significa propietario

Solicita ingresar nuevamente la clave e ingresar

Y se crea el nuevo inicio de sesin en el servidor y este puede ingresar a la base de datos que le asignamos, podemos ver que tiene permiso de ingresar a la base yndonos a los usuarios de la base de datos seleccionada

Respaldos de la base de datos

Restaurar base de datos

Seleccionar desde dispositivos

Aceptar todo

Visualizacin de datos de las tablas en sql.

Para abrir el Panel Sql en la misma consulta clic el icono sql

Para ejecutar

GESTION DE BASE DE DATOS


CONECTAR A UNA BASE DE DATOS DE SQL SERVER CON VB6 Pues aqu tienes un ejemplo para acceder a una base de datos de SQL Server, abrir una tabla y, para que el ejemplo no sea demasiado corto, mostraremos en un combo todos los campos (columnas) de dicha tabla. Seguramente en otras ocasiones pondr ejemplos ms completos que usen bases de datos de SQL Server, aunque, si te fijas, lo nico que diferencia el uso de este tipo de bases de datos y las de Access es la forma de conectarse al "proveedor" de la base de datos. Para este ejemplo, tendremos un formulario en el que colocaremos un botn llamado cmdAbrir y un ComboBox llamado cboCampos. Tambin necesitaremos una referencia a: Microsoft ActiveX Data Objects 2.0 Library o cualquier versin superior que tengas. En la parte general de declaraciones tendremos definidas dos variables, una de un objeto Connection y otra de un objeto Recordset. En el evento del botn cmdAbrir haremos todo el proceso de conectar a la base de datos, cargar el recordset con la tabla que queramos acceder y mostraremos los campos de dicha tabla en el combo. Aqu tienes el cdigo completo. Nota: He resaltado en negrita y en rojo los sitios en los que deberas indicar tus propios datos, es decir, el Data Source (fuente de datos), la base de datos (Initial Catalog) y la tabla a abrir. En este ejemplo, el Data Source usado en el ejemplo, es el que instala el SDK de .NET Framework.

Option Explicit Private cnn As ADODB.Connection Private rst As ADODB.Recordset Private Sub cmdAbrir_Click() Dim tField As ADODB.Field ' ' Por si ya estaba abierta... Set cnn = Nothing Set rst = Nothing ' ' Crear los objetos Set cnn = New ADODB.Connection Set rst = New ADODB.Recordset ' ' abrir la base usando las credenciales de Windows cnn.Open "Provider=SQLOLEDB; " & _ "Initial Catalog=pubs; " & _ "Data Source=(local)\NETSDK; " & _ "integrated security=SSPI; persist security info=True;" ' ' abrir el recordset indicando la tabla a la que queremos acceder

rst.Open "SELECT * FROM authors", cnn, adOpenDynamic, adLockOptimistic ' ' Asignar los nombres de los campos al combo With cboCampos .Clear For Each tField In rst.Fields .AddItem tField.Name Next .ListIndex = 0 End With ' ' Cerrar el recordset y la conexin rst.Close cnn.Close ' End Sub SENTENCIAS SQL

Seleccionar los datos a cargar de una tabla

Esta es la forma ms sencilla y habitual de usar las rdenes SQL. Normalmente usaremos este tipo de instrucciones para cargar los datos en un DataTable (si trabajamos con ADO.NET o en un Recordset si trabajamos con ADO o DAO). Por ejemplo: SELECT * FROM Clientes WHERE Provincia = 'Madrid' Este cdigo SQL selecciona los registros de la tabla Clientes que residan en Madrid. Los campos que devolvera seran todos, ya que hemos indicado * despus de SELECT. Si slo queremos que devuelva los datos contenidos en los campos Nombre, Apellidos y NIF haramos esto otro: SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' TIP: Por rendimiento, es recomendable devolver slo los campos que realmente necesitamos en lugar de devolver todos los campos.

Clasificar los datos seleccionados (ORDER BY)

Tambin podemos indicar que esos datos se devuelvan clasificados por cualquier campo, por ejemplo por los Apellidos de forma ascendente (la forma predeterminada): SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos Pero si queremos los datos de mayor a menor (descendente), le aadimos la instruccin DESC despus del campo por el que queremos clasificar: SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos DESC O si queremos que la clasificacin se haga usando dos campos, esos campos los indicaremos separados por comas: SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos, Nombre Y si queremos que el orden sea descendente, le aadimos a continuacin la instruccin DESC detrs de cada campo:

SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos DESC, Nombre DESC Tambin podemos clasificar en distinto orden los campos indicados tras ORDER BY, por ejemplo: SELECT * FROM Clientes ORDER BY Apellidos DESC, Nombre ASC, NIF DESC

Actualizar los datos segn un criterio (UPDATE) (02/May/04)

Si lo que quieres es actualizar el contenido de un campo cuando se cumpla un criterio indicado, en lugar de recorrer todas las filas, podemos usar UPDATE / SET, por ejemplo: UPDATE Clientes SET NPr = 28 WHERE Provincia = 'Madrid' Esto har que se asigne un valor 28 al campo NPr de todos los clientes que cumplan lo que se indica despus de WHERE, es decir que cumplan el criterio indicado. Tambin podemos indicar (despus de SET) varios campos a actualizar, separndolos por comas: UPDATE Clientes SET NPr = 28, Patrn = 'San Isidro' WHERE Provincia = 'Madrid' Una vez ejecutadas estas instrucciones SQL no se podr deshacer los cambios, al menos si estamos trabajando con Recordsets DAO o ADO, ya que si trabajamos con ADO.NET, esos datos slo se harn permanentes al actualizar "fsicamente" los datos con el DataAdapter.

Eliminar los datos segn un criterio (DELETE) (02/May/04)

De la misma forma que podemos actualizar la informacin mediante un criterio WHERE, podemos eliminar los registros de forma "masiva" usando la instruccin DELETE. Por ejemplo para eliminar todos los Clientes de Madrid: DELETE * FROM Clientes WHERE Provincia = 'Madrid'

Nota: Ni que decir tiene que este tipo de instrucciones SQL hay que usarla con muchsima precaucin, ya que si la tabla est ligada a otra, tambin se perdern los datos relacionados. Y una vez eliminados los datos... ya no se pueden recuperar. El uso de DELETE no elimina la tabla, aunque se eliminaran todos los registros.

El formulario de prueba: Crea un nuevo proyecto, se crear un proyecto con un formulario. Aade los siguientes controles para que el formulario quede con el aspecto que te muestro a continuacin, (que es el mismo del ltimo ejemplo de la entrega anterior):

Aspecto del formulario en tiempo de diseo Los controles usados son: En la parte superior: cmdMover, un array de 0 a 3 Label1, un array de 0 a 2, Text1, un array de 0 a 2 cmdAdd, cmdActualizar, cmdBorrar El segundo grupo: Label2, Text2, cmdBuscar Un Listview1 para mostrar los resultados de la bsqueda Una etiqueta (LblData) para mostrar algunos mensajes y el botn de salir es: cmdSalir Las referencias necesarias: En el men Proyecto/Referencias... selecciona Microsoft ActiveX Data Objects 2.6 Library -aunque tambin puedes seleccionar cualquiera de las otras que te muestra, (si es que te muestra alguna ms); a mi me aparecen las versiones 2.0, 2.1, 2.5 y 2.6, la nica que no deberas seleccionar es la 2.0 que ya est obsoletaUna vez aadida la referencia a los objetos ADO, puedes usar los objetos expuestos por esta librera. En este ejemplo usaremos dos de esos objetos, que sern los que en la mayora de los casos usemos: El objeto Connection y el objeto Recordset. El primero es el que permite acceder a la base de datos y el segundo ser el que acceda a los datos propiamente dicho, cuando veas el cdigo seguramente lo entenders y si no lo entiendes Los objetos ADO ms comunes: Normalmente, el objeto Connection suele declararse de forma que sea visible en todo el formulario. El objeto Recordset de ADO produce eventos, por tanto, si necesitamos acceder a esos eventos, declararemos la variable con WithEvents, de esa forma podemos interceptar los eventos que produzca de la misma manera que lo hacemos con el resto de controles. En el procedimiento Buscar, veremos cmo usar otro recordset, pero de la forma tradicional: sin eventos. Escribe este cdigo en las declaraciones generales del formulario:

Option Explicit ' En ADO, se usa el objeto Connection para abrir las bases de datos Private cnn As ADODB.Connection ' Necesitamos los eventos si queremos controlar algunas cosillas Private WithEvents rst As ADODB.Recordset Al cargar el formulario, creamos los objetos y asignamos la informacin correspondiente para abrir la base de datos y crear o llenar el Recordset. Como te dije, la base de datos se abre usando el objeto Connection, del cual usaremos el mtodo Open al cual hay que indicarle el "proveedor" y el nombre de la base de datos: Private Sub Form_Load() ' Text2 = "" ' ' Indicar el path correcto de la base de datos ' ACUERDATE DE PONER EL PATH CORRECTO! Const sPathBase As String = "C:\Program Files\Microsoft Visual Studio\VB98\BIBLIO.MDB" ' ' Crear los objetos Set cnn = New ADODB.Connection Set rst = New ADODB.Recordset ' ' Crear la conexin manualmente ' Usar "Provider=Microsoft.Jet.OLEDB.3.51;" para bases de Access 97 ' Usar "Provider=Microsoft.Jet.OLEDB.4.0;" para bases de Access 2000 With cnn .ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.3.51;" & _ "Data Source=" & sPathBase & ";" .Open End With ' Indicarle de que tabla vamos a leer los datos rst.Open "SELECT * FROM Authors", cnn, adOpenDynamic, adLockOptimistic ' ' Asignar los nombres de los campos a las etiquetas Label1(0).Caption = "Au_ID:" Label1(1).Caption = "Author:" Label1(2).Caption = "Year Born:" ' With ListView1 ' El tipo de Listview que queremos es del tipo "reporte" .View = lvwReport ' Que muestre las lneas de separacin entre datos .GridLines = True ' Que no se puedan modificar los datos del listview .LabelEdit = lvwManual ' Aadimos las cabeceras .ColumnHeaders.Add , , "Au_ID", 900 .ColumnHeaders.Add , , "Autor", 2700 .ColumnHeaders.Add , , "Ao nacimiento", 1500, lvwColumnRight End With ' ' Si hay datos, posicionarlo en el primer registro: cmdMover_Click 0 End Sub El Recordset de ADO produce eventos, vamos a usar uno de esos eventos: MoveComplete, el cual se produce cada vez que se cambia el registro activo. Las variables declaradas con WithEvents siguen la misma "nomenclatura" que los eventos de los controles, por tanto, ese evento estar en: rst_MoveComplete (selecciona el objeto rst de la lista

desplegable derecha y el evento MoveComplete de la lista de la izquierda), ste es el cdigo para mostrar los datos cada vez que se cambia el registro activo, aunque realmente no sera necesario si hubisemos "ligado" los controles con el recordset... pero de esa forma no tendramos el control total sobre los datos, as que vamos a seguir con esto de usar los eventos: Private Sub rst_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, _ ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, _ ByVal pRecordset As ADODB.Recordset) ' Cada vez que el registro actual cambie, ' se producir este evento (igual que con el DataControl) With rst '---------------------------------------------------------------------' Nota aclaratoria del 18/Dic/2003: ' Cuando en un Recordset no hay datos, tanto BOF como EOF devuelven True '---------------------------------------------------------------------If .EOF And .BOF Then lblData.Caption = "No hay ningn registro activo" .MoveFirst Else Text1(0) = .Fields("Au_ID") ' Por si el dato es nulo, aadirle una cadena vacia Text1(1) = .Fields("Author") & "" Text1(2) = .Fields("Year Born") & "" End If End With End Sub En este evento podemos usar tanto el objeto rst como el que est en el parmetro: pRecordset, los dos se refieren al mismo objeto. Hacemos una pequea comprobacin de que no nos encontremos con un recordset vaco o que est fuera de los lmites permitidos, (cosa que ocurre cuando queremos pasar al siguiente registro cuando estamos al final (se produce EOF) o cuando pasamos al registro anterior y estamos al principio, (se produce BOF). Si todo va bien, asignamos a las cajas de textos el contenido de los campos correspondientes. Fjate que en algunos de los campos aado una cadena vaca al contenido del campo, esto es para los casos en que esos campos contengan un valor nulo. Si se lo quitas al Year Born, vers cmo se produce un error, ya que en la base de datos Biblio, que es la que usaremos para este ejemplo, ese campo no suele estar asignado. Ahora te muestro el resto del cdigo para los botones de Mover, Nuevo, Actualizar y Eliminar, que es prcticamente igual al de la versin para DAO, con la salvedad de Actualizar, ya que en ADO no es necesario poner un registro (o columna que es como se debera decir), en modo edicin para poder modificarlo, ya que al usar Update, se actualiza el registro. Private Sub cmdMover_Click(Index As Integer) ' Mover segn el botn pulsado 'On Error Resume Next ' With rst If Index = 0 Then ' Primero .MoveFirst ElseIf Index = 1 Then ' Anterior .MovePrevious ElseIf Index = 2 Then ' Siguiente .MoveNext ElseIf Index = 3 Then ' ltimo .MoveLast End If ' If .BOF Or .EOF Then .MoveFirst lblData.Caption = " No hay datos..."

Else lblData.Caption = " Registro actual: " & rst("Au_ID") End If End With ' Err = 0 End Sub Private Sub cmdAdd_Click() ' Aadir un nuevo registro rst.AddNew ' Aadimos algn texto, para que no se pierda este registro Text1(1) = "Nuevo" ' Actualizamos los datos rst.Update ' Movemos al ltimo registro para que los cambios se hagan permanentes ' y se muestre el nuevo registro rst.MoveLast End Sub Private Sub cmdActualizar_Click() ' Guardar el contenido de las cajas de texto With rst ' Este campo es auto numrico, as que no asignarlo '.Fields("Au_ID") = Text1(0) + 0 ' Aadimos una cadena vaca al final ' ya que si Text1(1) est vaco, se asignar un valor NULL y dar error .Fields("Author") = Text1(1) & "" ' Idem con el ao de nacimiento, pero como es numrico, se sumar 0 .Fields("Year Born") = Text1(2) + 0 ' Actualizar los datos en el recordset .Update End With End Sub Private Sub cmdBorrar_Click() ' Borrar el registro actual ' Se comprueba que haya algn registro activo, ' para ello se comprueba que no hayamos pasado del principio o el final del Recordset ' ' Comprobar que hay registros, porque si no hay, dar error If (rst.EOF Or rst.BOF) Then ' Avisar de que no hay registros lblData.Caption = "Ningn registro activo" Else ' Eliminar el registro actual rst.Delete ' ' Movemos al primer registro para que los cambios se hagan permanentes ' (tambin podramos haberlo movido al ltimo registro) rst.MoveFirst End If End Sub Creo que no necesita informacin adicional, en los comentarios est todo explicado. Para terminar, vamos a ver el cdigo para Buscar datos: Private Sub cmdBuscar_Click() ' Mostrar los datos en el listview Dim sBuscar As String Dim tRs As Recordset

Dim tLi As ListItem ' ' Comprobar si tiene caracteres "no vlidos" para ADO: ' NOTA: Replace es una funcin de VB6 sBuscar = Text2 sBuscar = Replace(sBuscar, "*", "%") sBuscar = Replace(sBuscar, "?", "_") ' Text2 = sBuscar ' Formar la cadena de la consulta: ' Se busca por el nombre del autor y se muestran clasificados por el nombre sBuscar = "SELECT * FROM Authors WHERE Author LIKE '" & sBuscar & "' ORDER BY Author" ' Creamos un recordset del tipo "esttico", el cual no es modificable ' para poder modificarlo, tendra que ser del tipo dbOpenDynamic Set tRs = cnn.Execute(sBuscar) ' Comprobar que hay datos en el recordset With tRs ' Si no hay datos... '---------------------------------------------------------------------' Nota aclaratoria del 18/Dic/2003: ' Cuando en un Recordset no hay datos, tanto BOF como EOF devuelven True '---------------------------------------------------------------------If (.BOF And .EOF) Then MsgBox "No se han encontrado los datos buscados" Else ' Mostrar los datos hallados ListView1.ListItems.Clear .MoveFirst Do While Not .EOF Set tLi = ListView1.ListItems.Add(, , .Fields("Au_ID") & "") tLi.SubItems(1) = .Fields("Author") & "" tLi.SubItems(2) = .Fields("Year Born") & "" .MoveNext Loop End If End With End Sub Caracteres comodines: Como podrs comprobar el procedimiento de buscar es muy parecido, por no decir casi idntico al usado en DAO, con la salvedad de que hacemos una comprobacin para cambiar los caracteres comodines que hubiese en el texto indicado para la bsqueda, ya que en ADO no son los mismos que en DAO. Segn la ayuda de ADO, se usar el carcter % (tanto por ciento) en lugar del * (asterisco), cuando queramos indicar cualquier cosa que haya en el sitio en que se encuentra dicho carcter, por ejemplo: %jan% encontrar todos los registros que contenga "jan", est en el sitio que est: Janet, Alejandro, etc. Si pusiramos jan%, slo mostrara los que empezaran con jan, etc. Por otro lado, el carcter _ (subrayado bajo) sustituye a la ? (interrogacin), en este caso este comodn significa "cualquier carcter que est en esa posicin", por ejemplo: %r_us% encontrar cualquier palabra que contenga: una r seguida de cualquier cosa, seguida de us. Tal es el caso de Rouse, Marcus, etc. La funcin Replace usada para cambiar esos caracteres es propia de la versin 6 de Visual Basic, en VB5 no existe, as que tendrs que crearte tu propia funcin Replace. Bueno, vale... aqu la tienes: Private Function Replace(ByVal Expresion As String, _ ByVal Encontrar As String, _ ByVal ReemplazarCon As String) As String '---------------------------------------------------------------

' Funcin Replace para usar con VB5 o anteriores '--------------------------------------------------------------Dim i As Long, j As Long ' j=1 Do ' Buscar la cadena indicada en la expresin i = InStr(j, Expresion, Encontrar) ' Si la hemos hallado, quitamos dicha cadena y ponemos la nueva If i Then Expresion = Left$(Expresion, i - 1) & ReemplazarCon & Mid$(Expresion, i + Len(Encontrar)) j=i+1 End If Loop While i ' Devolver la cadena Replace = Expresion End Function

CREACIN DE REPORTES Introduccin Este parte pretende dar unas nociones generales sobre la creacin de informes con las herramientas que nos proporciona Visual Basic 6.0. Estas herramientas son el Entorno de Datos (Data Environment) y el Diseador de Informes (Data Report). Al igual que con muchas otras herramientas de creacin de informes (Crystal Reports, Access, etc.) Data Report nos va a permitir crear niveles dentro del informe, totales, etc.; el grado de complejidad del informe depender de la imaginacin y tiempo que el programador pueda dedicar a esta herramienta, y en gran medida de las restricciones de la misma. No obstante, diremos a favor de Data Report, que tenemos una herramienta que nos va a permitir distribuir nuestros informes libremente, sin necesidad de licencias, autorizaciones, etc.; distintas a las ya conseguidas con Visual Basic. El Entorno de Datos (Data Environment)

Lo primero que veremos es cmo agregar el Entorno de Datos a nuestro proyecto. Pues bien, para ello nos iremos al men Proyecto y elegiremos la opcin Agregar Data Environment. En nuestro proyecto tendremos algo parecido a lo mostrado en la figura siguiente. Bueno lo primero que debemos hacer es dar un nombre a nuestro Entorno de Datos. Por ejemplo, dteEntornoDatos. Para ello nos colocaremos en la propiedad Nombre del DataEnvironment y escribiremos su nombre. Como vemos, debajo del Entorno de datos aparece un nuevo objeto, el objeto Connection. En un principio vamos a ponerle un nombre a esta conexin, y luego definiremos sus propiedades. El nombre que vamos a elegir para nuestra primera conexin va a ser el de Listados. Porqu este nombre, bueno normalmente solemos darle a nuestros objetos, nombres descriptivos para los mismos, y como esta conexin va a contener los listados que van a generar nuestros informes, pues por eso le damos este nombre. Ahora vamos a definir las propiedades de la conexin. Nos situaremos encima de la conexin con el ratn, y pulsando el botn derecho del mismo elegimos la opcin Propiedades del men contextual. La figura a la izquierda, muestra las propiedades de nuestra conexin. En la pestaa Proveedor, deberemos seleccionar el motor que se encargar del manejo de

las tablas de la base de datos, que contiene la informacin que debe generar nuestros informes. Para nuestro ejemplo, seleccionaremos Microsoft Jet 3.51 OLE DB Provider, ya que nuestra base de datos est creada con Access 97. Ahora pulsamos el botn Siguiente y se abre la pestaa Conexin. En ella deberemos seleccionar la base de datos de la cual tomaremos la informacin para confeccionar los informes. En nuestro caso se ha seleccionado la base de datos Biblio.mdb, que se

encuentra en el directorio VB98 de Visual Basic. Los Comandos

Ya tenemos creada nuestra conexin, ahora slo tendremos que crear los comandos, que digamos, son los que se encargan de obtener las referencias a las tablas de nuestra base de datos, as como a las consultas almacenadas en ella y a las que pudiramos crear nosotros. Crearemos nuestro primer comando, pulsaremos para ello con el botn derecho, sobre la conexin Listados. Aparece un nuevo objeto, llamado Command1. Tendremos que modificar sus propiedades para poder configurarlo a nuestras necesidades. Con el botn derecho del ratn, iremos hasta la opcin de propiedades. Lo primero que haremos ser cambiar

el nombre actual por el de acmAutores y seleccionar la conexin con la que trabajaremos, en nuestro caso ser Listados. Para el Origen de Datos, seleccionaremos Tabla, ya que este comando va a obtener los datos de una tabla existente en nuestra base de datos llamada Authors. Este comando es muy sencillo, ya que slo vamos a trabajar con una tabla as que pulsamos aceptar para cerrar la ventana de propiedades. Vamos a crear ahora una consulta algo ms compleja, en la que tengamos que relacionar varias tablas. Normalmente es lo que haremos, para sacar los listados lo ms completos posibles. Veremos dos posibles soluciones, la primera mediante comandos y subcomandos, y la segunda mediante consulta SQL. En el primer mtodo, vamos a crear un comando que contenga los registros de los autores. Una solucin posible sera la mostrada en la siguiente figura. A continuacin vamos a explicar cmo se crean los subcomandos. Un subcomando, por as decirlo, es una tabla relacionada con otra que est en un nivel superior. Para agregar un comando secundario (subcomando) bastar pulsar con el botn derecho, sobre el comando que queremos aadir el comando secundario. Y al igual que hacamos con los comandos, vamos a modificar sus propiedades. La primera de ellas es su nombre acmAux. Por qu este nombre, pues la razn es que si nos fijamos en la estructura de nuestra base de datos, existe una tabla intermedia entre la de autores y la que contiene los ttulos publicados por estos, que es Title Author. Pues bien esta es la tabla a la cual har referencia este comando secundario, que acabamos de crear. El siguiente paso ser definir una relacin entre la tabla o el comando secundario, y el de nivel superior (acmTituloAutor). Nos iremos a la pestaa de Relacin y activaremos la opcin de Relacionar con un campo primario, si no estuviera activada. Seguidamente seleccionaramos el comando primario, en nuestro caso acmTituloAutor, y seguidamente definiramos la relacin. Como Campo Primario seleccionaremos Au_ID, que se encuentra en la tabla Authors. El siguiente campo de relacin ser tambin Au_ID de la tabla Title Author, seleccionndolo en la opcin Campos Secundarios y Parmetros, ahora pulsamos Agregar. Ya tenemos el comando secundario intermedio. Nos queda aadir un comando secundario al subcomando acmAux, para relacionar la tabla Titles, que contiene todos los ttulos de libros almacenados en la base de datos. Pues al igual que hiciramos con el comando secundario acmAux, vamos a hacer con el subcomando acmLibros. Recuerda que tendrs que seleccionar los campos apropiados en la pestaa Relacin. Resumiendo, hemos creado tres comandos, uno principal acmAutor y otros dos comandos secundarios, el primero de ellos intermedio que sirve de vnculo de unin entre las tablas de autores y el ltimo subcomando que contiene la tabla de libros.

Bueno, antes de pasar a explicar el segundo mtodo de relacionar tablas, vamos a ver el aspecto que podran tener los informes que se pueden generar con los dos comandos principales anteriores, para ello nos vamos al men Proyecto y seleccionamos Agregar Data Report. Lo primero que haremos ser dar un nombre a este nuevo formulario, su nombre ser rptAutores y el ttulo (Caption) de la ventana Listado de Autores. Lo siguiente ser establecer las propiedades DataSource y DataMember. La primera de ellas marca la fuente de datos, en definitiva la direccin de nuestra base de datos y para ello debemos seleccionar de la lista desplegable el entorno de datos que hemos creado al principio de este documento (dteEntornoDatos). A continuacin, deberemos establecer la propiedad DataMember, seleccionando aquel comando del entorno de datos, que contenga la informacin de las tablas que queramos mostrar en el informe, en nuestro caso acmAutores. Bien ya tenemos definido lo ms importante en el formulario o DataReport, el siguiente paso es

obtener la estructura del informe, para ello pulsamos sobre el formulario con el botn derecho del ratn y seleccionamos la opcin Obtener Estructura, pulsamos S a la pregunta que nos hacen. Ya tenemos la estructura de nuestro informe, slo tenemos que ir incluyendo aquellos campos que queremos que aparezcan en el mismo. Para ello vamos a abrir, adems del DataReport el entorno de datos. Seleccionamos en el men Ventana, Mosaico Vertical. La idea es tener en pantalla, abiertos a la vez, el informe y el entorno de datos, quedando algo as como lo mostrado en la figura superior.

Ahora, slo tendremos que ir arrastrando los campos de la consulta hasta el informe. Vamos a incluir los campos Author y Year Born. Antes vamos a explicar un poco la estructura de nuestro informe. La seccin Encabezado de Informe, mostrar slo en la primera pgina los datos o campos que contenga esta seccin, no se pueden introducir, sin embargo, los campos de nuestros comandos, pero s por ejemplo el ttulo del informe, el nmero de pgina, la fecha, etc. , esto es vlido tambin para el Pie de Informe. Si abrimos el cuadro de herramientas, veremos que existe una pestaa nueva llamada DataReport que contiene aquellos controles que pueden ser insertados en nuestro informe, veremos que adems se pueden incluir algunos ms especiales, pulsando con el botn derecho del ratn sobre la seccin en la que queremos aadir el control. Estos campos especiales son por ejemplo la Fecha actual o la Hora, el Nmero Total de Pginas, el Ttulo del Informe, etc. Otra seccin, es el Encabezado/Pie de Pgina, normalmente en ella colocaremos la descripcin o nombre de cada campo del informe, en nuestro caso ser Autor y Ao de Nacimiento. Tambin vamos a introducir, en la cabecera de pgina de nuestro informe el Ttulo y la fecha de impresin, para ello seleccionaremos ambos controles del men contextual, antes definido.

Para definir nuestro ttulo del informe, tendremos que modificarlo en la propiedad Title del DataReport e introducir el texto Listado de Autores. Cambiaremos tambin la apariencia del mismo, llndonos a la propiedad Font del campo que hemos aadido y seleccionando un estilo de fuente Negrita Cursiva y un tamao de 12. Otra propiedad importante es Centrar en la seccin, que aparece cuando pulsamos sobre un control con el botn derecho del ratn. El ttulo, lo centraremos horizontalmente. Incluiremos otro control ms, que ser la fecha de impresin. Antes de proseguir, comentaremos las propiedades GridX y GridY. Ambas defines la rejilla de puntos del diseador, su valor por defecto es 1, nosotros vamos a ponerlo a 10 para poder colocar mejor los controles en el formulario. Y la seccin ms importante de todas es la seccin Detalle. En ella aparecen todos los registros de nuestra consulta. Vamos a insertar los campos Author y Year Born a la seccin Detalle, de nuestro informe. Slo bastar con arrastrar el campo hasta la posicin del informe donde queramos que valla. Si nos fijamos aparecen dos controles, uno es una etiqueta, normalmente el primero. Y el segundo, un control texto que apunta al campo en la consulta. La etiqueta la llevaremos hacia la seccin Encabezado de Pgina, situndola en el punto que nos interese y justamente debajo, pero en Detalle colocaremos el control texto del campo. Modificaremos un poco estos controles, por

ejemplo las etiquetas cambiaremos su descripcin (Caption) e introduciremos los textos Autor y Ao de Nacimiento respectivamente. Modificaremos tambin el tamao de los controles si es necesario, as como su posicin. Tambin ajustaremos el tamao de cada seccin a nuestro gusto. Por ejemplo, subiremos el Pie de Pgina hasta alcanzar los campos en Detalle. Aadiremos el Nmero de Pgina, en la seccin Pie de Pgina. Adems vamos a modificar la fuente de texto del nombre de los campos del informe a negrita y dibujaremos una lnea debajo de los mismos. Con esto podremos dar por terminado nuestro informe, pero antes vamos a delimitar el tamao del informe. La propiedad ReportWidth se encarga de esto. Un valor de 9026 twips equivale aproximadamente, a un folio A4 en vertical. Un formato A4 en horizontal equivale a unos 13955 twips. Un centmetro equivale a 567 Twips. Una vez delimitado nuestro informe (Verticalmente), para que se vea correctamente, tendremos que ajustar las propiedades de nuestra impresora a una orientacin apropiada, en nuestro caso ser la de papel vertical. El aspecto puede ser parecido a este.

Mejorable, verdad?. Pues claro, la imaginacin y el estilo personal de cada uno juegan un papel importante en el diseo de los informes. En nuestro caso, lo principal es tener claro la estructura de nuestro informe, los distintos niveles (secciones) de agrupacin, etc. El siguiente informe, ser el que corresponde al comando principal acmTituloAutor. Has de seguir los mismos pasos que en el informe anterior, coloca en DataSource el entorno de datos y en DataMember en comando acmTituloAutor. Si te fijas, ahora nuestro informe tiene algunas secciones ms que el anterior, claro tiene tres tablas relacionadas, con lo cual a cada una de ellas se le asigna un espacio reservado en el informe.

La primera seccin es el nivel superior, que corresponde con el comando acmTituloAutor, esta seccin nos va a servir para agrupar los registros por el nombre del autor del libro. La siguiente seccin, en nuestro caso, no la vamos a usar ya que pertenece al comando o tabla auxiliar que une la tabla Authors con la de Titles, que es la que se engloba dentro de la seccin de detalle, ocupando el ltimo nivel. Cualquier campo perteneciente a un nivel superior, podr ser insertado en uno inferior, pero no al revs. Bueno, pues nuestro siguiente trabajo ser generar un informe que muestre los ttulos de los libros, agrupados por el autor. El resultado ha de ser parecido a algo as.

En este informe se han aadido controles como lneas, formas (fondo gris de la descripcin de los campos), etc. T puedes aadir otros, y modificar sus propiedades.

Con estos dos ejemplos, se ha intentado explicar ms o menos, el diseo de informes mediante comandos cuyo origen de datos sea una o varias tablas. En el apartado siguiente se explicar cmo hacer esto pero con el Generador SQL.

GENERACIN DE EJECUTABLES DEL PROGRAMA Archivo > Generar Nombre del Programa

Elegimos el destino y aceptamos

CREACIN DE INSTALADORES Instalamos el InstallShield EXPRESS

Ingresamos al Programa

Creamos un nuevo proyecto de Instalador

Seleccionamos los mdulos que vamos a adjuntar a nuestro instalador

Los archivos y carpetas

Pasamos por todas las instancias de configuracin y construimos el instalador

Ing. Vernica Granizo R.