programacion
RegistroNewsletter
+ de 45.000 registrados
AñadenosFavoritos
Trucos access .....................................................................................................volver a inicio trucos

Informes a medida
Entre los controles que proporciona Access para la impresión de informes hay tres propiedades lógicas que permiten un sencillo y potente manejo sobre el resultado que deseemos obtener:

MoveLayout especifica si Microsoft Access debe moverse a la siguiente posición de impresión de la página.

NextRecord especifica si una sección debería avanzar al siguiente registro.

PrintSection especifica si una sección debería ser impresa en la página.

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

Si estas interesado en esta tematica, tambien te podria interesar:
Libros del tema - Los ultimos libros editados
Foros de usuarios en este tema - dudas, preguntas y respuestas
¿Interesado en manuales de Diseño de Macromedia? tenemos una seccion llena...
¿Eres Webmaster? pues desde programatium tenemos algo interesante para ti.....