top of page

​Cosas de VBA

Tutoriales  de  V B A I
 

 

En esta sección iremos colocando unas pinceladas sobre cosas sencillas que nos pueden venir muy bien en nuestras aplicaciones.

 

Intentaremos hablar de funciones, haremos código, ejemplos etc.

Nov 08, 2015

Compactar al cerrar

Algo tan sencillo como crear un botón de comando en el formulario, yo he creado uno que lo llamo cmdSalir y en su evento "al hacer Click" introducimos el código para compactar y salir de la aplicación:

 

 

Private Sub cmdSalir_Click()
    Application.SetOption "Auto Compact", True ''compactamos antes de salir de la aplicación
    DoCmd.Quit ''salimos de la aplicación
End Sub

 

En el tema de compactar hay que llevar cuidado y se aconseja hacer copias de seguridad antes de compactar.

Visita la página "Tutoriales de Access" que tienes como hacerlo manual.

Esto es todo amigos.

Nov 08, 2015

Prefijos Controles Formularios y objetos

Los prefijos de controles los utilizo 100% y un poco menos para las variables, os recomiendo hacerlo porque cuando veamos un nombre con un prefijo en vba sabremos distinguir a que control u objeto nos estamos refiriendo, es decir, sabremos si nos referimos a una etiqueta(label) o un cuadro de texto (textbox) o un desplegable(combobox), y dicho esto os los paso a detallar:

 

Formularios     

 

              Controles                  Prefijo

   Cuadro de texto         txt
   Etiqueta                        lbl
   Cuadro combiando    cbo
   Lista                               lst
   Casilla verificación    chk
   Botón comando         cmd
   Imagen                         img
   Grupo opciones          grp

 

Objeto Access


    Tabla                             tbl
    Consulta                      qry
    Formulario                  frm
    Informe                        rpt
    Macro    
                       mac

 

Hay muchos más sobre todo en la varibles como int para integer, str para string, dbl para double pero esto lo dejo para que investiguéis vosotros.

Nov 08, 2015

Activar Referencias VBA

Muchas veces necesitamos trabajar con objetos especiales, como Recordset de ADO o DAO,  Acrobat, autocad, elementos multimedia, con aplicaciones de office como word, excel, outlook etc y para esto tenemos que activar las librerías o referencias de cada una de ellas, ¿Cómo poder activar estas referencias?, muy facil, de la siguiente manera:

 

Tenemos que estar en el modulo de VBA, podemos ir de muchas formas, por ejemplo desde:

Ribbon >> Pestaña Crear>> Grupo Macros y Código>> Visual Basic, Modulo, Módulo de clase.

 

Una vez en el módulo, vamos al menu Herramientas>>Referencias, una vez aquí nos saldrás las referencias o librerías, buscamos la que necesitamos y clicamos en la casilla de verificación que tiene a su izquierda y pulsamos el botón aceptar.

 

Chupao...

 

 

Nov 03, 2015

Saber si se ha modificado un registro o formulario (Dirty)

La propiedad Modificado (Dirty) se puede utilizar para determinar si el registro activo ha sido modificado desde que se guardó por última vez. Por ejemplo, puede que desee preguntar al usuario si los cambios que se hicieron en un registro eran intencionados y, si no es así, permitirle que se mueva al siguiente registro sin guardar los cambios.

 

 

Me.Dirty

 

Me hace mención a un formulario o informe.

 

Cuando se guarda un registro establece la propiedad Modificado (Dirty) en el valor Falso (False). Cuando un usuario realiza cambios en un registro, la propiedad se establece en Verdadero (True).

 

 

 

Nov 04, 2015

Comparar dos tablas

'---------------------------------------------------------------------------------------
' Procedure  :  Comparar  dos tablas
' Author     : jmmiralles
' Date       :  04/11/2015
' Descripción: Lo que hacemos es recorrer dos Recodset pertenecientes a dos tablas, mediante dos bucles, y
'                         vamos a actualizar una tabla (inventario) en la otra y además
'                          tenemos un campo fecha que nos indica que la fecha del ordenador para saber
'                         cuando se ha hecho el actualizado el inventario.
'---------------------------------------------------------------------------------------

'       

''Activar referencia ADO

Dim rst1 As New ADODB.Recordset ''instanciamos el recordset
Dim rst2 As New ADODB.Recordset ''instanciamos el recordset

''abrimos los recordset
rst1.Open "[tblInventario]", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rst2.Open "[tblProductos]", CurrentProject.Connection, adOpenKeyset, adLockOptimistic


rst1.MoveFirst ''nos movemos al primer registro del primer recodset

 Do While Not rst1.EOF ''mientras no estemos por debajo del último registro itera
   
 rst2.MoveFirst ''Nos movemos al primer registro del segundo recordset
   
  Do While Not rst2.EOF ''mientras no estemos por debajo del último registro itera
                
    If rst1.Fields("IdProducto").Value = rst2.Fields("IdProducto").Value Then ''Si los dos códigos coinciden actualizamos
                                                                                                                                                 ''el inventario
                                                                                      
    rst2.Fields("UnidadesEnExistencia").Value = rst1.Fields("UnidadesEnExistencia").Value
    rst2.Fields("DiaActualizacion").Value = Now
''introducimos la fecha y hora del ordenador
                              
               
    End If
               
     rst2.MoveNext
''pasamos al siguiente registro del segundo recordset
          

Loop
              rst1.MoveNext
''pasamos al siguiente registro del primer recordset
   Loop
         
         ''Si llegamos aqui es porque se han recorrido todos los campos
         ''y lo comunicamos con un mensaje.
         
         MsgBox "Se han traspasado los datos con exito", vbInformation, "Aviso..."
         
    rst1.Close ''cerramos
    rst2.Close ''cerramos
   
    Set rst1 = Nothing ''liberamos recursos
    Set rst2 = Nothing ''libermos recursos



 

Nov 07, 2015

Ocultar Ribbon de Access

Algunas veces pensamos que en VBA las cosas son muy complicadas y dificiles, pero realmente suele ser todo lo contrario.

Esta vez vamos a ver como con una sola línea de código podemos ocultar el Ribbon Access.

 

Esta línea la pondríamos al cargar el formulario que quisieramos que no tenga el Ribbon.

  
  
  DoCmd.ShowToolbar "Ribbon", acToolbarNo

 

Y en el caso que queramos que aparezca sería

 
   
DoCmd.ShowToolbar "Ribbon", acToolbarYes

 

Así de sencillo. Hasta la próxima.

Nov 08, 2015

Ribbon Informe Vista Preleminar

En ocasiones ocultamos el Ribbon de Access pero cuando lanzamos un informe queremos que aparezca el Ribbon de "Vista Preleminar" y lo haríarmos de la siguiente manera:

 

En el evento "Load" o "al cargar" del informe colocamos el siguiente código:

 

  ''activamos el ribbon pero solo en vista preeliminar
    DoCmd.ShowToolbar "Ribbon", acToolbarYes
    DoCmd.ShowToolbar "File", acToolbarNo

 

En el evento "Al cerrar" introducimos el siguiente código

 

 

DoCmd.ShowToolbar "Ribbon", acToolbarNo

Nov 08, 2015

Contar los registros de un tabla o Consulta

Algunas veces necesitamos saber los registros que tiene una tabla o consulta, el siguiente código es una forma de hacerlo, hay muchas más:

 

Tendríamos que activar la libería ADO

 

Dim Rst As New ADODB.Recordset 'Instanciamos un recordset
Dim intRegistros As Integer ''Variable para contar registros


'abrimos el recordset con la tabla de empleados
    Rst.Open "SELECT * FROM tblEmpleados", CurrentProject.Connection, adOpenKeyset, adLockOptimistic


    Rst.MoveFirst
''nos movemos al primer registro
    Rst.MoveLast ''nos movemos al ultimo registro    
      
    intRegistros = Rst.RecordCount
''contamos los registros

        MsgBox "Hay " & intRegistros & " registros.", vbInformation, "Recuento.." ''sacamos los registros por mensaje

 

rst.Close ''cerramos el recordset

set rst = nothing ''liberamos recursos

Nov 08, 2015

Recorrer los registros de un formulario

Con el siguiente código podemos recorrer todos los registros de un formulario, en este caso sacariamos el nombre mediante un msgbox pero con un poco de imaginación podríamos hacer muchas cosas, como hacer validaciones con la propiedad TAG, cambiar las propiedades de algún control, por el ejemplo el color, tipo de letra etc.

 

Dim Control As Control 'Declaramos una variable de tipo control

For Each Control In Me.Controls ''recorremos todos los controles del formulario y lo sacamos por un msgbox

        MsgBox "Estamos en el control " & Control.Name & ".", vbInformation, "Nombre Control.."

Next

Nov 28, 2015

Saber en qué registro estamos

Para poder comprobar en que registro estamos del formulario es muy sencillo,

 

En el evento "al activar el registro" del formulario en el textbox le asignamos la propiedad CurrentRecord, así de facil:

 

Me.Textbox=CurrentRecord

 

Si además, buscamos la cantidad de registros que hay un conjunto de registros podríamos concantenar esto con lo anterior y tendríamos la posición de registro con el total de registros , algo así:

 

Me.Textbox=CurrentRecord & "/" & Total registros.

 

Siendo (Total registros) una variable que le hemos asignado la busqueda de la cantidad de registros que haya en un conjunto de registros, tabla, consulta, recordset, etc.

 

 

 

Please reload

Compactar al cerrar
Prefijos controles formularios
Activar Referencias
Saber si se ha modificado Formulario
Comparar dos tablas
Ocultar Ribbon de Access
Ribbon Informe Vista Preliminar
Contar Registros de una tabla o consulta
Recorrer Registros de un formulario
Registro Estamos
bottom of page