Access - Ayuda con Sql A VBA

 
Vista:

Ayuda con Sql A VBA

Publicado por Victor Manuel (101 intervenciones) el 12/04/2007 19:04:25
Yo filtre un informe mediante instrucciones sql, tomando valores de dos combobox

Estas son las instrucciones que puse en el record source o origen de datos del informe:

SELECT TablePrincipal.Numero, TablePrincipal.Empresa, TablePrincipal.Organizacion, TablePrincipal.Embarcacion, TablePrincipal.Descripcion, TablePrincipal.FechaI, TablePrincipal.HoraI, TablePrincipal.FechaF, TablePrincipal.HoraF, TablePrincipal.NoFactura, TablePrincipal.Anticipo, TablePrincipal.Pagado, TablePrincipal.Notas, Format([fechaI],"yyyy") AS Año FROM TablePrincipal;

Y estas es la instruccion sql que puse en Filter o Filtro:

TablePrincipal.Organizacion = [Forms]![ConImp]![Organizacion] and Año = [Forms]![ConImp]![año]

Me queda perfecto para poder filtrar mi informe por Organizacion y año, pero como soy muy curioso, me gustaria si se puede todo eso ponerlo en el evento open del informe en codigo VBA o simlemente ejecutarlo con codigo y no en las propiedas del informe.

Claro, si se puede. Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Filtrar un informe mediante código VBA

Publicado por Alejandro (4142 intervenciones) el 08/08/2023 22:07:50
Puedes lograr el filtrado del informe mediante código VBA en lugar de configurarlo en las propiedades del informe. Esto te da más flexibilidad y control sobre cómo se realiza el filtrado. Aquí tienes un ejemplo de cómo hacerlo:

1. Abre el informe en el Modo Diseño.
2. Abre la ventana de código VBA presionando Alt + F11.
3. En la sección "Declarations" (Declaraciones) del módulo del informe, declara una variable pública para almacenar la parte de la instrucción SQL que corresponde al filtro:

1
Public strSQLFiltro As String

4. Ve al evento "On Open" (Al Abrir) del informe y agrega el siguiente código para construir la parte del filtro de la instrucción SQL basada en los valores de los cuadros combinados en tu formulario "ConImp":

1
2
3
4
5
6
7
8
9
Private Sub Report_Open(Cancel As Integer)
    Dim strOrganizacion As String
    Dim strAnio As String
 
    strOrganizacion = [Forms]![ConImp]![Organizacion]
    strAnio = [Forms]![ConImp]![año]
 
    strSQLFiltro = "TablePrincipal.Organizacion = '" & strOrganizacion & "' AND Año = " & strAnio
End Sub

5. Ahora, regresa al origen de datos del informe y modifica la instrucción SQL para incluir el filtro:

1
2
3
SELECT TablePrincipal.Numero, TablePrincipal.Empresa, TablePrincipal.Organizacion, TablePrincipal.Embarcacion, TablePrincipal.Descripcion, TablePrincipal.FechaI, TablePrincipal.HoraI, TablePrincipal.FechaF, TablePrincipal.HoraF, TablePrincipal.NoFactura, TablePrincipal.Anticipo, TablePrincipal.Pagado, TablePrincipal.Notas, Format([fechaI],"yyyy") AS Año
FROM TablePrincipal
WHERE (@strSQLFiltro@);

6. Sustituye "@strSQLFiltro@" por el nombre de la variable que declaraste en el paso 3:

1
WHERE (" & strSQLFiltro & ");

7. Cierra y guarda el módulo de código VBA.

Ahora, cuando abras el informe, el filtro se aplicará automáticamente utilizando los valores de los cuadros combinados en el formulario "ConImp". Esto te permite controlar el filtrado del informe mediante código VBA en lugar de configurarlo directamente en las propiedades del informe.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar