Como pasar datos de una variable a la cabecera de un informe.

Tengo una variable con datos numéricos, mi problema se presenta cuando quiero pasarla al encabezado de un informe. En un módulo independiente tengo declarada como publica tanto la variable como la función que es la siguiente:

Option Compare Database
Option Explicit
Public madrid As Single
Public Function calcula() As Single
madrid = 0
Dim Tabla As DAO.Recordset
Set Tabla = CurrentDb.OpenRecordset("Todo")
Do While Not Tabla.EOF
If Tabla("Origen") = "Madrid" Then
madrid = madrid + Tabla("INGRESOS")
End If
Tabla.MoveNext
Loop
calcula = madrid
Tabla.Close
End Function

Para llamarla en un cuadro de texto, lo hago así: =Madrid()

No funciona, ¿que puedo hacer ¿

1 Respuesta

Respuesta
1

Marcelino: Así a palo seco o pones solo =Madrid o pones =Calcula()

La Variable Madrid() no existe. Si tienes dificultades lo miro con un poco más de atención. Un saludo >> Jacinto

 Hola Jacinto, buenos días, he cometido un error a la hora de explicar como la llamo, lo que pongo en la llamada es =calcula(). ¿ Tienes alguna solución¿, gracias de antemano por tu respuesta.

Marcelino: Mirando tu Función con un poco más de atención, interpreto lo siguiente.

Tienes una Tabla que se llama "Todo", y en ella hay entre otros un campo >> "Origen" en el que puede haber entre otras Ciudades la de "Madrid", que en principio no debe confundirse con la Variable que declaras >> madrid, pero mejor evitarlo.

Quieres llevar la Suma de la Columna >> "INGRESOS", de todo lo que sea "Madrid" a un Control de Informe.

Si eso es así yo no usaría un Recordset, pero si tienes interés en el no hay problema.

En el control, pondría:

=DSuma("INGRESOS";"Todo";"Origen = 'Madrid'"

El Recordset debe de funcionarte bien pero en mi caso lo cambiaría por algo así.

Public Function Calcula() As Single
Calcula = 0
Dim Tabla As DAO.Recordset
Set Tabla = CurrentDb.OpenRecordset("Todo")
Do While Not Tabla.EOF
     If Tabla("Origen") = "Madrid" Then
         Calcula = Calcula + Tabla("INGRESOS")
     End If
     Tabla.MoveNext
Loop
Calcula = Calcula
Tabla.Close
Set Tabla = Nothing
End Function

No tienes porque declarar la variable Madrid. Entonces en el Origen del Control pones lo que tu dices : =Calcula()

Ya me contarás >>Un saludo >> Jacinto

¡Gracias! Por tu información, he hecho los cambios que me has indicado y sigue sin funcionar,  seguiré dándole vueltas haber como logro solucionar esto, de todas formas muchas gracias por tu tiempo y esfuerzo.

Marcelino: Lamento que aún no lo hayas solucionado, pero debe de haber algún Nombre que no encaje, porque he probado las dos alternativas en un Formulario mío (da lo mismo un Informe) y ambas funcionan.

Te he preparado un pequeño ejemplo que tienes en éste link.

http://www.mediafire.com/file/buj4j0hzo46bjrr/SumaTextBoxInforme.accdb 

Mira en la cabecera del Informe y verás la suma de cargos con las dos opciones cuando el País es Bélgica. Un saludo >> Jacinto

¡Gracias! ,¡Gracias! ,¡Gracias! . Jacinto, por fin gracias al programa de ejemplo que me has enviado lo he conseguido, además he visto donde estaba mi error, eternamente agradecido.

                                             Marcelino

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas