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.