| 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.
|
|
|
|