Trucos Access 97, 2000 i XP

Estos trucos los he recopilado de diversas fuentes a cerca de Access, que he encontrado, cuando frequentemente he tenido dudas y problemas, quando és posible indico el lugar desde donde lo consegui, que yo sepa todos son de domini público, tambiéb añado la versión de access, web y dirección electrònica del autor si es posible.

Como podeís observar, estan totalmente copiados (la pregunta como la respuesta), lo hago puesto que és corriente que quando queramos visitarlos más adelante no esten ya disponibles :(


Trucos de Carlos Val

menús contextuales
Saber el registro actual
Imprimir Informes determinados
Posicionar Formularios

 

Trucos de Valera
Como Compactar Base de Datos Abierta
Colocar un reloj en un formulario Access 97 y 2000
Crear una Barra de Progreso
Calcular la edad exacta
Trucos by Soria
Trucos de PC World
Trucos de diversas fuentes
Alguna cosa he aprendido

 


Trucos de Carlos Val
Sergio Doz [zod@arrakis.es] envio este truco a cerca de los menús contextuales

Hay varias maneras en access de conseguir que el boton derecho del raton no permita al curioso usuario de nuestra aplicacion el entrar en el diseño de nuestro formulario y despedazarlo sin piedad, una forma es convirtiendo la base de datos en un archivo MDE (se encuntra en el menu herramientas), esta es sencilla, pero hay otra más curiosa: Creamos una barra de herramientas totalmente personalizada(sin el boton diseño si no nos interesa que este) y después en el menu de inicio de la base de datos ponemos esta barra de herramientas como menu contextual, de esta manera cada vez que toquen el boton derecho desplegaran la barra de herramientas que hemos creado anteriormente.


 

Luis L. Alvarez [llop@redestb.es] envio este truco para saber en queregistro estamos

Una forma de capturar el número de registro con el que estamos trabajando en cada momento. Veo que mucha gente pregunta cómo meter en un formulario un campo que muestre el registro actual dentro de una selección (que aparezca lo mismo que en el contador de registros: "registro 2 de 78", por ej.).

Lo resolví creando un campo de texto con la expresión: "=[CurrentRecord]"

A pesar de ser algo también muy común, no aparece ni en la ayuda ni en los libros que he leído.


 

José Eugenio me preguntó cómo crear un botón en un formulario que te imprimiera un informe pero solamente ese registro y no todos como sucede si creas un botón con el asistente de controles.

Esto es muy fácil de hacer y seguro que os habréis encontrado con este problema no habeís sabido solucionarlo. Para ello utilizaremos (como no) un poco de código, que es más limpio y rápido.

Creas un botón en tú formulario y en el evento al hacer click metes este código tan precioso:

Docmd.OpenReport "Nombre del Informe",,,"[IDRegistro] = " & IDRegistro

Con este codigo al presionar el botón imprimirá sin sacar pon pantalla el informe. Tendrás que cambiar el nombre del informe por el correspondiente, y el último apartado corresponde a una clausula Where de lenguaje SQL pero sin la palabra Where.

En ella le estarás diciendo que quieres sólo te imprima el registro correspondiente al que está activo en el formulario. Por supuesto tendrás que cambiar estos nombres por el campo que haga de clave principal, no es necesario esto último pero te irá más rápido.


 

Para que aparezca un formulario en la misma posición

 

Podemos utilizar la siguiente función que tendréis que instalarla en un módulo:

Declare Function glrMoveWindow Lib "user32" Alias "MoveWindow" ByVal (hwnd as Long, ByVal X as Long, ByVal Y as Long, ByVal nWidth as Long, ByVal nHeight as Long, ByVal bRepaint as Long) as Long

Una vez creada esta declaración en un módulo podremos acceder a ella en un formulario cualquiera de la siguiente forma: En el evento al abrir un formulario realizaremos una llamada a la función de la siguiente forma:

glrMoveWindow (Me.hwnd, posiciónX, posiciónY, ancho, alto, True)

Con ello conseguiréis que siempre se abra en la misma posición.


 

Valera
Como Compactar la Base de Datos Abierta

Utilizar en una macro la opción de "enviar teclas" se envía la secuencia "%Huo" sin las comillas, (es como utilizar el menú de Access por lo que aunque esté la base de datos abierta,la cierra, compacta y vuelve a abrir automáticamente).


 

Colocar un reloj en un formulario Access 97 y 2000

Se puede hacer de dos maneras, con un campo de texto o con una etiqueta.

Yo prefiero hacerlo con una etiquera a la que le llamaré lblHora

En el formulario, en la propiedad Al intervalo del cronómetro escribimos 1000.

En el código de evento AlCronómetro del formulario escribimos me.lblHora.caption=Time.


 

Function BarraProgreso()

Dim I As Integer, x As Date
x = Time

For I = 1 To 100 Step 20
SysCmd acSysCmdInitMeter, "Completado...", 100
SysCmd acSysCmdUpdateMeter, I
Do Until Format(x, "hh:mm:ss") < Format(Time - #12:00:01 AM# / 1000,"hh:mm:ss")
Loop

x = Now
Next I
SysCmd acSysCmdSetStatus, "Listo"

End Function


Microsoft Propone esta otra solucción

 

Calcular la edad exacta

ent(Ahora()-[FECHA NACIMIENTO]/365).


 

Estos trucos no recuerdo de donde los consegui, si el autor los reconoce lo arreglo
Limitar nº de registros en una tabla, por ejemplo a 50 registros.

If DCount ("*","Reservas","FechaReserva=Forms!Reservas!Fecha")>50 then

msgbox "Ya hay 50 registros"

end if


 

Conseguido de la pàgina de Trucos de PCWorld

Pregunta:

Tengo un problema con Microsoft Access 97. Quiero introducir directamente en una tabla la función de multiplicación. Es decir que en el campo TOTAL se introduzca automáticamente el resultado de la multiplicación del campo CANTIDAD por el campo PRECIO, lo he intentado varias veces sin resultado, pero si que he logrado la misma operación en una CONSULTA y FORMULARIO, pero al introducir registros en el formulario, logro que aparezca en el FORMULARIO el resultado de dicha operación pero no así en la tabla.

Respuesta de : ServicioHelpDesk

En los campos de una tabla no se pueden definir operaciones aritméticas directamente. Así como en FileMaker sí que es posible, en Access sólo se pueden definir campos de texto, numéricos, fecha… pero no campos que obtengan sus valores mediante el cálculo realizado entre otros campos. Por esta razón usted sólo ha logrado ver sus operaciones aritméticas en los formularios y/o en las consultas, donde si se permite la ejecución de formulas o macros.

La única solución sería que a través de un formulario de introducción de datos, en la propiedad de evento "después de actualizar", de cada control o cuadro de texto desde donde se introduzcan los datos, se ejecute una macro que ejecute la acción EstablecerValor y que almacene el resultado de la expresión deseada en el campo deseado.