una - modificar un valor en sql
MS Access-ParĂ¡metros del informe en VBA (3)
Si abre un informe basado en una consulta con algunos parámetros (por ejemplo, StartDate y EndDate), sé que puedo usar esos parámetros en el informe como [Reports]! [ReportName]! [StartDate]. Pero ahora me gustaría usar estos parámetros en una función de VBA, pero usar la misma expresión no funciona para mí:
MsgBox [Reports]![Test]![StartDate]
Esto me da el error:
Error ''2465'' en tiempo de ejecución: Microsoft Access no puede encontrar el campo ''StartDate'' al que se hace referencia en su expresión.
Puede hacerlo utilizando una variable pública y cambiando el SQL de la fuente de registro de forma dinámica.
Puede almacenar el valor del parámetro en una variable pública antes de llamar al informe.
Primero declare un valor razonable en un módulo, por ej., Fecha de filtrado público como Fecha
En segundo lugar, asigne el valor del parámetro a filtDate antes de ejecutar el informe
Luego, cambie el sql de la fuente de registros en el evento report_open del informe
Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = "SELECT * FROM Test WHERE [StartDate] = #" & filtDate & "#"
MsgBox filtDate
End Sub
Aquí, el sql de recordsource se establece dinámicamente y el valor del parámetro se puede usar directamente.
Si tiene un informe o formulario que tiene una consulta como Origen de registro, puede vincular los campos de la consulta, como StartDate
controles en el informe o formulario, y obtener los valores de ese campo en un Función VBA haciendo referencia al control. Por ejemplo, supongamos que tiene un informe llamado DateReport
. Si Record Source of DateReport
contiene un campo StartDate
, puede crear un cuadro de texto en el informe, lo llamaremos StartDateBox
y establecer su Fuente de control en "StartDate". Luego, en VBA, puede obtener el valor de este campo para el registro actual con Report_DateReport.StartDateBox
. Puede haber otra forma de referenciar los valores de campo Origen de registro de un formulario o informe sin vincularlos a un control, pero no tengo MS Access disponible ahora mismo para probar esto.
Y nunca lo encontrará.
Nunca utilizo consultas con parámetros dinámicos. Uso controles en un formulario para seleccionar criterios de filtro y me refiero a los controles en el argumento WHERE del comando OpenReport (lo mismo para OpenForm).
DoCmd.OpenReport "Test", , , "[StartDate] = #" & Me.tbxStart & "#"
MsgBox = Me.tbxStart
O si realmente prefiere los parámetros dinámicos, los parámetros de consulta de informe pueden hacer referencia a los controles de formulario.
El código de VBA no encontrará el parámetro pero puede encontrar el cuadro de texto en el informe que hace referencia al parámetro y extraer el valor del parámetro de esa manera.