............AnteriorPágina principal Aula-Web StudioSiguiente

APUNTES DE VISUAL BASIC

Autor: Alvaro Canteiro Martínez.

Email: acm@cryogen.com

http://www.cryogen.com/acm


PROLOGO

Esta es una guía de Visual Basic, no contiene todo lo que es Visual Basic, pero desde luego que está bastante bien como punto de partida para el que quiera tener una guía rápida acerca de algunos aspectos de Visual Basic.

Tengo intención de ir ampliando esta guía cuando tenga algo de tiempo y según vaya aprendiendo mas aspectos de dicho lenguaje, así que por el momento y como no tengo tiempo para mas, pues habrá que conformarse con lo que hay.

En el mismo paquete que esta guía también vienen una recopilación de prácticas hechas en Visual Basic, espero que os sirvan de algo.

Este documento y las prácticas en Visual Basic que vienen con él son completamente freeware, no obstante si alguien quiere hacerme un donativo, para que me tome unas cervezas a su salud, que me envié un email y ya veremos como solucionar ese problema. J


INTRODUCCION

Variable -> Lugar donde se almacenan temporalmente los datos.

Nombre - empezar por letra

  • - 255 caracteres

    - ningún punto (.)

  • Definición de variables

    DIM nombre_variable AS tipo_dato

     

     

    TIPOS DE DATOS

     

    - Entero (Integer) – 32768 a 32767 %(no decimales)

    - Largo (Long) - 147483368 a 214 millones & (no decimales)

    - Simple (Single) – 1.4E-45 a 34E68 !(si decimales)

    - Doble (Double) – 4.9E-324 a 1.7E308 #(si decimales)

    - Carácter (string) – 0 a 65.500

    - Otras

    - Bytes (Byte) - enteros de 0 a 255

    - Boolean (true,false) - verdadero o falso

    - Fecha (Date) Fecha

    - Variant – tipo especial

     

     

    BUCLES Y CONDICIONALES

     

    CASE

    Select case n

    Case 0

    .......................

    Case 1

    .......................

    End Select

    Si se desea utilizar una estructura de case else se hace asi:

     

     

    Select case n

    Case 1

    ...........

    Case 2

    ...........

    Case else

    ...........

    End select

     

    FOR

    For n = 1 to 20 step 1

    ...........

    Next n

     

    WHILE

    While n < 0

    ..................

    wend

     

    LOOP

    Do

    ...............

    loop until n = 1

     

    Do while n = 1

    ...............

    loop

     

    IF

    If <condicion> then

    .............

    else

    .............

    end if

     

    CONTROLADORES

    CONTROLADOR RELOJ

    Todo lo que se ponga dentro se ejecuta cada tiempo indicado dentro de propiedades.interval.

     

    CONTROLADOR COMBO(lista desplegable)

    Con la propiedad .additem se van añadiendo elementos al combo.

     

    CONTROLADOR LISTBOX(lista de elementos)

    Este controlador dispone de las siguientes propiedades:

    .listcount – cuenta el número de elementos

    .additem – añade elemento

    .listindex – devuelve el numero de elemento seleccionado

    .list(n) – devuelve elemento n

    .removeitem(n) – borra el elemento n

    .selected(n) – true o false dependiendo de si el elemento esta seleccionado o no lo esta

     

    CONTROLADOR FRAME(agrupamientos)

    Sirve para agrupar varios controles de tipo botón y que se activen las posibilidades correspondientes a poder seleccionar uno de los agrupados dentro de este controlador.

     

    CONTROLADOR OPTIONBUTTON

    Ejecuta lo que tenga dentro al seleccionar, se agrupa con controlador frame para seleccionar uno de varios.

     

    MULTIPLES BOTONES CON INDEX

    Todos apuntan a una misma función la cual tiene un parámetro "index" que indica el botón pulsado. Se crea un botón, se le pone el index a cero (propiedad) y desde el se crean otros con ctrl-c y ctrl-v (copiar y pegar).

     

    MSGBOX

    Si se introduce la siguiente instrucción:

    Msgbox("...............................")

    Saldrá un cuadro conteniendo el texto entre comillas y pedirá pinchar en enter para continuar.

     

    CONTROLADOR HSCROLL/VSCROLL

    Son los deslizadores verticales y horizontales.

    .max – número de elementos máximo

    .min – número de elementos mínimo

    .value – valor actual

    Tambien se puede poner desde la ventana de propiedades.

     

    COLORES

    Se utiliza la función RGB(r,g,b) siendo los parámetros que se le dan la intensidad de color rojo, verde y azul. El valor que devuelve se le pasa a label.backcolor = rgb(.......).

     

    CONTROLADOR DE UNIDAD/SUBDIRECTORIOS/FICHEROS

    Una vez creados los controladores drive, dir y filelist se utilizan así:

    Dentro de drive – dir1.path = drive1.drive

    Dentro de dir - dir1.path = dir1.path

    Dentro de filelist – (nada si es solo visualizar)

    Para ver un fichero de imagen seleccionado en filelist:

    .pattern = "*.bmp" muestra en filelist solo los bmp’s

    se crea control image

    image.stretch – centra imagen (=true)

    image.picture=load.picture (fichero)

     

    MOVER ELEMENTOS DESDE FILELIST A LISTBOX

    En filelist se indica el icono inicial y se activa el drag

    .dragicon = loadpicture("fichero.ico")

    .drag

    En listbox

    Procedimiento dragdrop – list.additem file1.path & file1

    Procedimiento dragover – file1.dragicon = loadpicture("fichero2.ico") (indica icono final)

    En dragover el parámetro state indica el estado de movimiento.

     

    CONTROLADOR CADENAS

    Right(cadena,1) - devuelve primer carácter por la derecha

    Left(cadena,1) – devuelve primer carácter por la izquierda

    Len(cadena) – tamaño cadena

     

    PROCEDIMIENTO KEYPRESS DENTRO DE CONTROLADOR TEXT

    Se ejecuta cuando se pulsa una tecla.

    Keyascii – valor ascii de la tecla pulsada

     

    CREA/BORRA BOTONES

    Load command1(3) – el 3 es el valor index (si lo tiene)

    Command1(3).visible = true

    .left = n

    . up = n

    . caption = "............"

    unload command1(3) – borra el boton creado

     

    FUNCION DE ORDENACION DE TABLAS

    Dada una tabla de nombre tabla y cuyo maximo elemento esta en posición 10.

    Dim tabla(10)

    Function ordena_por_intercambio

    Dim mayorpos,m as single

    Dim final as single

    Final = 10

    Mayorpos = 1

    Do

    For m = 1 to final step 1

    If val(tabla(m)) > val(tabla(mayorpos)) then mayorpos = m

    Next m

    Aux = val(tabla(final(final))

    Tabla(final) = val(tabla(mayorpos))

    Tabla(mayorpos) = val(aux)

    Final = final – 1

    Mayorpos = 1

    Loop until final = 1

    End function

    PASO POR VALOR O POR REFERENCIA

    Private function ----------------- (byval operando) <- valor

    ----------------- (operando) <- referencia

     

    CONTROLADOR GRID(hoja calculo)

    .rows -> número filas

    .cols -> número columnas

    Escribir un dato en la posicion x,y:

    .col = x

    .row = y

    .text = ...........

     

    CONTROL DATA(manejo de bases de datos)

    Propiedad DataBaseName – nombre de base de datos

    Comment – tipo de base de datos

    RecordSource – establece la tabla de la base de datos a utilizar

    El control permite ir avanzando o retrocediendo registros. En un textbox elejido se busca DataField y DataSource dentro de Dato (ordenado por categorías).

    En DataSource se pone el control data referenciado y en DataField se seleciona el campo que se mostrara según se mueve el control data.

    Propiedad EOFAction (que hacer ante un finde fichero)

    MoveLast – va al último registro que hay datos

    EOF – se llega a un registro en blanco

    AddNew – se genera un registro en blanco para añadir datos

    El data control es feo y en vez de eso se van a utilizar otros botones que hagan la misma función.

    Data1.Recordset.Movefirst – va al primer registro

    .Movenext – va al siguiente registro

    .Moveprevious – va al registro anterior

    .MoveLast – va al último registro

    .EOF – comprueba si es fin de fichero

    .BOF – comprueba si es principio de fichero

    .AddNew – añade un registro y lo edita

    .Delete – borra el registro actual

    Esto da errores cuando se esta al principio y se hace un moveprevious, esto se arregla comprobando con .BOF antes de retroceder (se pregunta si es principio de fichero y si no se mueve).

    En el caso de final de fichero seria igual pero con .EOF.

    Data1.Recordset.Field(n) -> numero campo

    .("Nombre") -> nombre del campo

    text1.enabled = true -> permite editar controles text

    = false -> no permite editar controles text

     

    DBCOMBO(control combo para bases de datos enlazadas)

    .boundcolumn -> campo enlazado en data2

    lo que se guarda internamente

    .datafield -> campo de enlace desde data1

    .datasource -> data1 (origen)

    .listfield -> campo a mostrar en data2

    lo que se muestra

    .rowsource -> data2 (origen del campo a mostrar)

    .boundtext -> leer lo que guarda

     

    CONTROL TREEVIEW,IMAGELIST (en microsoft windows common controls 5.0)

    Primero se introducen las imágenes.

    En propiedades>personalizado>subcarpeta imágenes insertar imagen y seleccionar buscando las que se quieren poner.

    Despues se introduce un control treeview y en la propiedad personalizado se pone imagelist el nombre edl controlador imagelist creado anteriormente. Con esto se prepara el control treeview para que en cada nodo muestre las imágenes de imagelist.

    Ahora hay que crear el nodo padre, lo primero que hay que definir son los nodos.

    DIM <nombre> as node

    Primer paso

    Definir el nodo padre

    DIM NP as node

    Segundo paso

    Nodo padre

    Set NP = T1.Nodes.Add(,,,"Agenda",1,2)

    Tercer paso

    Nodos hijo

    For i = 1 to 10 step 1

    Set n2 = t1.nodes.add(np,4,i,4,3)

    Next i

    T1.Nodes.Clear – borrar nodos del treeview

     

    FORMATO DE FECHA

    Se crea una variable de tipo fecha:

    Fecha = 1/1/99

    Luego se utiliza el comando format para extraer datos de la fecha

    Format(fecha,"d mmmm")

    Para ver las posibilidades de el comando format se busca en la ayuda de Visual Basic.

    Para calcular el numero de dias transcurridos entre dos fechas:

    Dias = #31/12/1999# ... #1/1/1998#

     

    CONTROL PROGRESSBAR

    Se utiliza a modo de barra que va incrementandose para poder ver lo que queda para acabar un proceso.

    .Min -> Valor mínimo

    .Max -> Valor máximo

    .Value -> Valor actual

    Se hace en base a utilizar la instrucción:

    Progressbar.value = progressbar.value + 1

     

    CONTROL LISTVIEW

    Crear un columnheader

    DIM col as columnheader

    Se añade columnas (tantas como se necesite)

    Set col = lv1.columnheaders.add(,,"texto",ancho)

    En "texto" se pone lo que se quiere que aparezca en la columna

    En "ancho" se pone el valor del ancho de la columna

    Para ver la visualiazacion hay 4 formas:

    .view = 0

    .view = 1

    .view = 2

    .view = 3 (este es el que se utiliza para ver en columnas)

    Para añadir la información:

    Crear variable DIM lista as ListItem

    Set lista = lv1.listitems.add(,,"texto",1,2)

    A continuación se pone lo que se quiere que aparezca en cada dato de la lista

    Lista.subitems(1) = ...........

    Lista.subitems(2) = ............

    En personalizado de listview se pone el control imagelist para que se seleccionen las imágenes para poner en el control listview.

    EDITAR REGISTRO

    Data1.Recordset.Edit

    Data1.Recordset("codigo") = 1

    Data1.Recordset("nombre") = "Pepe"

    Data1.recordset("Edad") = 23

    Data1.Recordset.Update – (Graba registro)

    Data1.recordset.cancelupdate – (Cancela grabación)

    AÑADIR REGISTRO

    Data1.Recordset.Addnew

    ( Editar registro )

    Data1.Recordset.Update

    BORRAR REGISTRO

    Data1.recordset.Delete

    BUSQUEDAS DE REGISTROS

    Se declara la variable para el criterio

    Dim criterio as string

    Se declara un criterio de busqueda

    Criterio = "codigo=" & str(tex1.text) (text1.text es la cadena que se busca)

    C2 = "nombre=""" & str(text2.text) & """ nombre = "pepe" (suponiendo que text2.text=pepe)

    Se busca el primer registro que cumpla el criterio

    Data1.recordset.findfirst criterio

    Se ejecutan las instrucciones pertinentes dependiendo de si ha sido encontrado o nó.

    If data1.recordset.nomatch then

    No encontrado

    Else

    Encontrado

    End If

    En este caso "no encontrado" implica las intrucciones que se ejecutarán en caso de que no se encuentre el registro que cumpla el criterio de búsqueda, y "encontrado" implica las instrucciones que se ejecutarán en caso de que se encuentre un registro que cumpla el criterio de búsqueda.

    CRITERIO DE BUSQUEDA DE FECHAS

    Para buscar en bases Access hay que buscar como mes/dia/año

    1 –> fecha = format (fecha, "m d yy")

    2 -> criterio = "fecha=" & "#" & fecha & "#" & ""

    En Visual Basic antes de buscar fechas hay que aplicarles el formato correcto, por eso antes de establecer el criterio, se adapta la fecha al formato que se necesita.

    Criterio equivale al criterio de búsqueda.

    ACTUALIZAR EL SUBITEM DE UN LISTVIEW

    Listview1.selecteditem.subitems(1) = ..............

    Esta instrucción sirve para modificar el contenido de un listview.

    FORMULARIOS MODALES

    Hay dos tipos de apertura de formularios:

    Form2.show 1 -> apertura de formulario modal.

    Form2.show -> apertura de formulario no modal.

    Para descargar un formulario se emplea la instrucción "unload form2".

    SQL DESDE VISUAL BASIC

    Se hace una consulta desde Access, luego se accede a ella desde Visual Basic como si fuera una tabla más.

    Luego desde Visual Basic se pone:

    Data1.recordsource = "select ..................."

    Todo lo que haya entre comillas (empezando por select) equivale a la instrucción sql.

    UNIR UN CONTROL DBGRID A UNA TABLA

    En la propiedad datasource se pone el control data deseado y entonces saldrá una tabla con su contenido.

     

    FICHEROS

     

    ALEATORIO

    Hay que definir unos registros de tamaño fijo.

    Type reg amigo

    Nombre as char*80;

    Dir as char*80;

    End type

    1. apertura
    2. open path/fichero for random as numarchivo len = tamaño_registro
    3. lectura/escritura
    4. get -> get numarchivo numeroregistro variable

      put -> put numarchivo numeroregistro variable

    5. Close numfichero

     

    BINARIO

    Tamaño de registro variable

    Open path/fichero for binary as intarchivo

    Lectura/escritura

    Get nuamrchivo [posicion] variables

    Put nuamrchivo [posicion] variables

     

    VB – TRATAMIENTO DE ARCHIVOS

    Abrir – open

    Leer – get

    Escribir – put

    Cerrar – close

    Se puede acceder como secuencias, aleatorio o binario.

     

    SECUENCIAL

    Leer

    Open path/fichero for input/output/append as numarchivo

    Antes de abrirlo hay que obtener numero de archivo

    Numarchivo = freefile numarchivo = entero

     

    Escribir y leer

    Write (con formato)

    Print (sin formato)

    Write #numarchivo <variable> (input)

    Print #numarchivo <variable> (input)

    Leer – input

    Leer sin formato – line input

    Cerrar

    Close (listanumarchivo)

     

    CREACION DE UNA BASE DE DATOS

    Pasos:

    1 – Definir variables para cada componente de la base de datos

    Dim bd as database

    Dim tbd as table

    Dim idx as index

    Dim rel as relation

    Dim fld as field

    Añadir componente DAO

    2 – Crear la BD – Create Database

    Set bd = create database(".....")

    --- Fin documento ---


    Copyrigth © Javier Jiménez Muñoz, Colombia, 1.999. Aportes de información, manuales o comentarios de mi Web, envia un email a valeth33@yahoo.es.

    AnteriorPágina principal Aula-Web StudioSiguiente