En esta página encontrarán algunos ejemplo de trucos de VBA (Visual Basic for Applications) que puedes utilizar en aplicaciones desarrolladas con la base de datos Microsoft Access.

Contenidos de Bucles

-Todos- Bucles (3)
Comandos de menú de Access - DoEvents en bucles - Listar los campos de una tabla -

Comandos de menú de Access

Código VBA para ver todos los comandos de las barras de menú de Access 2003. Este código puede ser útil cuando queremos personalizar las barras de menú....
Código para obtener todos los comandos de menú
Sub EnumerarComandos()
    Dim cb  As CommandBar
    Dim cbc As CommandBarControl
    For Each cb In Application.CommandBars
        Debug.Print cb.Name
        For Each cbc In cb.Controls
            Debug.Print cbc.Caption
        Next
    Next
End Sub


DoEvents en bucles

Mantener el control de un bucle con DoEvents evita que se bloquee Access en bucles largos y podamos recuperar el control del sistema....
En algunas ocasiones en un bucle Do While o For Next largo queremos hacer un display de algún campo para poder seguir la evolución del mismo sin embargo vemos como al poco rato la visualización se detiene y no responde hasta el final, con lo cual da la sensación de que el proceso se ha quedado colgado. Para solucionarlo y mantener la visualización de control en el bucle basta con añadir dentro del mismo la instrucción DoEvents.
Do While 
   ... 
   ... 
   DoEvents
Loop
Sin embargo está comprobado que llamar a DoEvents en cada bucle ralentiza mucho el proceso. En pruebas hechas con Excel VBA una macro puede multiplicar por 4 el tiempo de ejecución. Pôr eso recomienda lanzar cada n ejecuciones del bucle y poner el valor Application.Hecho a False para que no refresque pantalla constantemente.
Application.Echo False
Do While 
   ... 
   ... 
   ind=ind+1
   If ind Mod 100 = 0 Then
       DoEvents
   End If
Loop
Application.Echo True


Listar los campos de una tabla

Un bucle For Each para listar los campos de una tabla de Access...
Modo resumido
Sub CamposDeTabla()
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field
    Set dbs = OpenDatabase("i:intex winbol2000E999car.mdb")
    Set tdf = dbs.TableDefs("CART0001")
    For Each fld In tdf.Fields
        Debug.Print fld.Name
    Next
    Set fld = Nothing
    Set tdf = Nothing
    dbs.Close
End Sub

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies