|
Por defecto todas están establecidas
a verdadero (True), pero en combinación pueden producir
efectos como el que a continuación se describe,
insertar una línea en blanco cada diez registros:
En el procedimiento declaraciones
del informe hay que introducir el siguiente código:
Option Explicit Dim fBlankNext
As Integer Dim intline As Integer
En el evento OnFormat del
encabezado de página introducir:
intline = 0 fBlankNext =
False blank
En el evento OnPrint de la
sección de detalle introducir:
If PrintCount = 1 Then intline
= intline + 1 If fBlankNext Then
Me.PrintSection = False Me.NextRecord
= False fBlankNext = False
Else
Me.PrintSection = True Me.NextRecord
= True fBlankNext = (intLine Mod 10 = 0)
End If
Funciones en Access que
devuelven más de un valor (I)
Las funciones en Access sólo
pueden tener un valor de retorno, no obstante
existen varias maneras de obtener varios valores
de una misma función.
La primera forma se pude
definir en el argot informático como multi-retorno
a pedales pero no por ello es menos efectiva que
otras más sofisticadas.
Consiste en ir pidiendo los
valores en sucesivas llamadas a la misma función
utilizando un parámetro para seleccionar el retorno
pedido. Tiene el inconveniente de que los valores
devueltos (retornados) siempre deben ser del mismo
tipo:
Function MultiRetorno(Valor
As Integer) As String
Select Case Valor Case 1
MultiRetorno = "Primer
retorno"
Case2
MultiRetorno = "Segundo
retorno"
Case Else
MultiRetorno = "Error"
End Select
End Function
Funciones en Access que
devuelven más de un valor (II)
Como continuación al anterior
truco, presentamos una manera más refinada de
obtener varios valores de retorno de una función
en Access. La alternativa es pasar a la función
tantos argumentos como valores queremos que retorne
y hacer que la función los modifuque. En este
caso, se tiene la ventaja de poder retornar valores
de distintos tipos:
Function MultiRetorno(R1
as integer, R2 as string)
R1 = 1 R2 = "Segundo
valor de retorno"
End Function
Funciones en Access que
devuelven más de un valor (y III)
Para finalizar esta serie
de trucos presentamos las forma más elegante (y
sofisticada) de obtener varios valores de retorno
de una misma función en Access. El lenguaje VBA
de Access permite que una función devuelva una
estructura de valores. en el siguiente ejemplo
se muestra cómo definir una estructura y utilizarla:
Public Type Multivalor
R1 As Integer R2 As String
End type
Una vez definido el nuevo
tipo, se puede utilizar como valor de retorno
de una función:
Function MultiRetorno() As
MultiValor
MultiRetorno.R1 = 950 MultiRetorno.R2
= "Segundo valor devuelto"
End Function
Con el uso de estructuras
queda definitivamente resuelto el problema de
las funciones que devuelven más de un valor.
Funcionalidad de la propiedad
Tag en Access
La propiedad Tag (información
adicional) de los controles de formularios e informes
está pensada para ser manejada directamente por
los programadores, es decir, Access no lo maneja
en modo alguno. No obstante, un uso adecuado de
dicha propiedad puede facilitar muchos aspectos
de la programación. En el siguiente ejemplo se
muestra el manejo de dicha propiedad. supongamos
un formulario que dispone de dos grupos de controles
de manera que cuando un grupo está activo el otro
no puede ser visible y viceversa. una manera de
realizarlo sería introducir en el evento OnOpen
el siguiente código:
If Opcion=1 Then
Me!Control1.visible = True
Me!Control2.visible = True Me!Control3.visible
= False Me!Control4.visible = False
Else
Me!Control1.visible = False
Me!Control2.visible = False Me!Control3.visible
= True Me!Control4.visible = True
End If
Este código funcionaría a
la perfección, pero si se modifica el formulario
y se introducen más controles se deberá cambiar
dicho código. Sin embargo, si se introduce en
la propiedad tag de cada control bien Opcion1
o bien Opcion2, dependiendo de a que conjunto
de controles pertenezca, el código resultante
será el siguiente, y nótese que no habría que
modificarlo:
Dim Frm as Form Frm = Me
If Opcion=1 Then
For I=0 mto Frm.count -1
If Frm(I).tag = "Opcion1"
Then
Frm(I).visible = True
If Frm(I).tag = "Opcion2"
Then
Frm(I).visible = False
Next I
Else
For I=0 to Frm.count -1
If Frm(I).tag = "Opcion1"
Then
Frm(I).visible = False
If Frm(I).tag = "Opcion2"
Then
Frm(I).visible = True
Next I
End If
Indicador de progreso en
Access
Una manera de acceder a un
indicador de progreso desde Access es hacer una
llamada a sysCmd, no obstante, se puede crear
uno usando dos etiquetas de manera sencilla y
con la ventaja de mentener un mayor control sobre
él. Veámos cómo:
1º. Crear una etiqueta transparente
con estilo hundido. La llamaremos Fondo. 2º. Crear
otra etiqueta de idéntica altura que la anterior,
con anchura cero y con bordes transparentes. Situarla
justo alineada con la primera y enviarla al fondo.
La llamaremos Indicador. 3º. Situar el siguiente
código en un módulo del formulario e ir llamándolo
pasando como parámetros el progreso actual y el
progreso total:
Sub Actualiza (Actual, Total)
Dim Porcentaje as Single
Porcentaje = Actual / Total Me!Fondo.Caption =
Int(Porcentaje * 100) & "%" Me!Indicador.Width=CLng(Me!Fondo.Width
* Porcentaje) Select Case Porcentaje Case Is <
.15
Me!Indicador.BackColor =
255
Case Is < .50
Me!Indicador.BackColor =
65535
Case Else
Me!Indicador.BackColor =
65280
End Select Me.Repaint
End Sub
Acelerar las consultas
Cuando sea posible, restrinja
sus consultas a campos indexados. El dispositivo
Rushmore de Access los maneja 50 ó 60 veces más
rápido que los campos sin indexar. Además, cuando
realiza una comparación con el operador Como,
no utilice una expresión que empiece por *, porque
Rushmore optimizará Como G*., pero no Como *G.P.
Y recuerde que aunque Access soporta hasta 32
índices por tabla, los índices que añaden o editan
datos en un campo pueden relentizar las operaciones.
Crear accesos directos
Abra Access
Cargue su base de datos
Encoja la ventana de Access
haciendo clic en el botón Maximizar/Restaurar
de la esquina superior derecha.
Haga clic en la ficha Informes
del Explorador de la Base de Datos
Seleccione un informe y
arrástrelo desde el Explorador de la Base de Datos
a su Escritorio
|