PDF de programación - Curso de VB - Capítulo 13

Imágen de pdf Curso de VB - Capítulo 13

Curso de VB - Capítulo 13gráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 12 de Febrero del 2018)
591 visualizaciones desde el 12 de Febrero del 2018
463,2 KB
23 paginas
Creado hace 11a (24/09/2012)
CURSO DE VB

CAPÍTULO 131

Índice de contenido
USO DE ETIQUETAS / CONTROL DE ERRORES .........................................................................2
PREPARANDO NUESTRA BD DE PRUEBAS............................................................................2
ETIQUETAS....................................................................................................................................2
ESTRUCTURA DE LAS ETIQUETAS. PROCESO DEL CÓDIGO........................................3
ETIQUETAS DENTRO DE UN BLOQUE...............................................................................6
CONTROL DE ERRORES.............................................................................................................7
MOSTRAR INFORMACIÓN DEL ERROR.............................................................................8
MANIPULANDO LOS ERRORES...........................................................................................9
UN ERROR HABITUAL QUE SE SOLUCIONA... HACIENDO NADA.............................11
LA PROPIEDAD SOURCE.....................................................................................................13
ON ERROR RESUME NEXT......................................................................................................15
GENERANDO NUESTROS PROPIOS ERRORES....................................................................16
ALGO MÁS SOBRE ERRORES..................................................................................................18
TIPOS DE ERRORES..............................................................................................................18
COMPILANDO EL CÓDIGO..................................................................................................21
DEPURACIÓN DE ERRORES................................................................................................22
UNOS BREVES TRUCOS.......................................................................................................22
PARA FINALIZAR.......................................................................................................................23

1 La BD donde están los ejemplos de este capítulo os la podéis bajar aquí.

Visítame en http://siliconproject.com.ar/neckkito/

1

USO DE ETIQUETAS / CONTROL DE

ERRORES
Este capítulo estará dedicado, en primera instancia, al uso
de etiquetas para poder “dar saltos interestelares” a través
del código, y a continuación hablaremos de cómo controlar
los errores de código (y ver qué utilidades les podemos
dar).

Como siempre, vamos a prepararnos nuestra BD de
ejemplo.

PREPARANDO NUESTRA BD DE PRUEBAS
Vamos a crear una tabla, que llamaremos TClientes, que tendrá la estructura siguiente:

Rellenamos la tabla con algunos registros. Por ejemplo, yo la he rellenado así:

Vamos a crear otra tabla, que llamaremos TCientesNo. Para crearla vamos a copiar la tabla
TClientes, pero sólo pegamos su estructura (no los datos), y la pegamos con el nombre
propuesto.

En principio no necesitamos mucho más (y, si no, ya lo iremos añadiendo sobre la marcha).

ETIQUETAS
Las etiquetas son, por llamarlo de alguna manera, como “estaciones de servicio” en una
autopista. Es decir, lo normal sería ir conduciendo por dicha autopista, y hacer caso omiso a las
estaciones de servicio que van apareciendo. Sin embargo, si se produce algún evento en el
conducir (tenemos hambre, nos quedamos sin gasolina, queremos hacer un “pipí”...) pues
tenemos que pararnos en una estación de servicio.

Siguiendo con el símil, si programáramos lo anterior podríamos tener un esquema así (en
general):

Visítame en http://siliconproject.com.ar/neckkito/

2


Private Sub...

Empieza a conducir

Si <quedamos sin gasolina> entonces <Parar

Ve por la autopista

en estación de servicio>

Llegamos a destino
Exit Sub

Repostar gasolina
Seguir conduciendo
Llegamos a destino

Parar:

End Sub


Para los que os suene algo de código, sería una especie de “GoSub” (que existe, pero como
hace el código difícil de leer prácticamente no se utiliza).

Evidentemente, si podemos “solventar” la condición dentro del propio código mejor hacerlo de
esta manera. Debemos recurrir a las etiquetas sólo cuando no tengamos otra solución mejor.

Ello implica que en el código anterior hubiera sido mejor escribir:


Private Sub...

Empieza a conducir
Ve por la autopista

End Si

Llegamos a destino

End Sub


Si <quedamos sin gasolina> entonces
<Parar en estación de servicio>
Continuar camino

Pensad que, en este capítulo, no voy a analizar si es mejor utilizar uno u otro sistema. Utilizaré
las etiquetas porque, obviamente, es lo que vamos a explicar.

También, para agudizar vuestro ingenio, no pondré los códigos comentados. Si habéis seguido
el curso ordenadamente hasta aquí deberíais ser capaces de entender perfectamente las
líneas. ¡Venga, que un poco de estímulo no está mal! ;)

ESTRUCTURA DE LAS ETIQUETAS. PROCESO DEL CÓDIGO
La estructura de las etiquetas es muy simple. Una etiqueta viene representada simplemente
por una palabra que a nosotros nos guste.

Para llamar a la etiqueta simplemente escribimos esa palabra elegida

Para indicar que es la etiqueta escribimos la palabra elegida seguida de dos puntos (:)

El código que debe ejecutarse, asociado a la etiqueta, lo escribimos a continuación de la
definición de la etiqueta.

Por ejemplo, supongamos que creamos la etiqueta “Cerrar_proceso”

Visítame en http://siliconproject.com.ar/neckkito/

3

El código, en abstracto, sería:

'Condición: si

se cumple



GoTo




Private Sub...
'Código

Cerrar_proceso
'Código

Cerrar_proceso:

'Código

End Sub


En cuanto al proceso, dentro del código, es un proceso lineal (como habréis podido intuir a lo
largo de todos estos capítulos anteriores). Podemos introducir un punto de “escape” al código
antes de llegar a la etiqueta, si nos interesa. Si no introducimos ese punto de “escape” el
código llegará a la etiqueta y seguirá procesándose.

Es decir, si yo escribo:


Private Sub ...

Salgo:

End Sub


Const vNum as Byte = 25
Dim vProd as Integer
vProd = vNum * 2
MsgBox "El producto es: " & vProd

If vProd < 50 Goto Salgo

MsgBox "El producto es inferior a 50"

SENTIDO DE
SENTIDO DE

EJECUCIÓN DEL
EJECUCIÓN DEL

CÓDIGO
CÓDIGO

Me voy a encontrar con:





Me sale el MsgBox dándome el producto
No se cumple If
Me sale el MsgBos diciéndome que el producto es inferior a 50

Vemos que, en este caso, el código me da un resultado erróneo, lo que indica que no puedo
permitir que el código se ejecute más allá del If. Para ello modificamos ligeramente el código,
así:


Private Sub ...

Salgo:

End Sub


Const vNum as Byte = 25
Dim vProd as Integer
vProd = vNum * 2
MsgBox "El producto es: " & vProd

If vProd < 50 Goto Salgo

Exit Sub

MsgBox "El producto es inferior a 50"

SENTIDO DE
SENTIDO DE

EJECUCIÓN DEL
EJECUCIÓN DEL

CÓDIGO
CÓDIGO

INTERRUPCIÓN
INTERRUPCIÓN

Ahora el código me dirá:

Visítame en http://siliconproject.com.ar/neckkito/

4

Si vNum >= 25

El valor del producto
----INTERRUPCIÓN Y SALIDA----

Si vNum < 25

El valor del producto
El mensaje de que el producto es inferior a 50

Y, lógicamente, no se estará equivocando.

Vamos a ver otro ejemplo aplicado sobre nuestra BD de pruebas.

En un formulario en blanco añadimos un botón de comando. En el evento “Al hacer click”, el
siguiente código2:


Private Sub cmdEtiqueta_Click()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("TClientesNo", dbOpenSnapshot)
If rst.RecordCount = 0 Then GoTo Salida
rst.MoveFirst
MsgBox "El primer cliente de la tabla es " & rst.Fields(0).Value
GoTo Salida2
Salida:
MsgBox "La tabla está vacía", vbInformation, "SIN DATOS"
Salida2:
rst.Close
Set rst = Nothing
End Sub


Este código nos da el código del primer cliente de la tabla TClientesNo. Si no hay registros
salta a la etiqueta Salida.

¿Qué problema tenemos aquí con el punto de interrupción? Evidentemente podríamos haber
escrito un Exit Sub tras la línea de código: MsgBox "El primer cliente de la tabla es " &
rst.Fields(0).Value

Pero como queremos hacer las cosas bien queremos cerrar el recordset y liberar memoria. Si
dejamos que el código continúe con la etiqueta Salida nos saldrá un mensaje que, en caso de
haber registros, no será correcto.

¿Solución? He creado una segunda etiqueta que hace “saltar” el código por encima del
mensaje de que no hay registros y nos cierra el recordset y libera memoria.

De esta manera, haya o no haya registros, nos aseguramos que al final cerramos el recordset

2

Si utilizáis Access 2003 y el código os da error utilizad DAO

Visítame en http://siliconproject.com.ar/neckkito/

5

y liberamos memoria.

¿Pillamos la mecánica?

ETIQUETAS DENTRO DE UN BLOQUE
No debemos pensar que las etiquetas sólo se utilizan para
“soluciones finales” del código. Podemos utilizar etiquetas
dentro de un bloque para evaluar condiciones y “saltar” a
un sitio u otro.

Vamos a crearnos una tabla, que llamaremos TContactos, con la siguiente estructura3:

Rellenamos la tabla con algunos datos, pero debemos asegurarnos que dejamos alguno de los
contactos en blanco. Por ejemplo, yo la he rellenado así:

Vamos a crearnos un código en el evento “Al hacer click” de un botón de comando que nos
indicará, a través de un Msgbox, el nombre de la empresa y el contacto.

El código sería:


Private Sub cmdContactos_Click()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("TContactos", dbOpenSnapshot)
With rst
.MoveFirst
Do Until .EOF
If IsNull(.Fields("Contacto").Value) Then GoTo Siguiente
MsgBox "Código empresa: " & .Fields("Empresa").Value & vbCrLf _
& "Contacto: " & .Fields("Contacto").Value
Siguiente:
.MoveNext
  • Links de descarga
http://lwp-l.com/pdf8737

Comentarios de: Curso de VB - Capítulo 13 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad