Sí se puede.
Personalmente utilizo, cada vez que puedo, la consulta en SQL.
Para hacer esto creo la consulta con el Diseñador de Consultas de Access y luego la visualizo en la Vista SQL .
Esta consulta la copio (Ctrl+C) en el bloc de notas y luego en el módulo de Visual Basic. Ej.:
Una consulta almacenada Con el nombre "MiConsulta" puede estar como:
SELECT [MiTabla].* FROM [MiTabla] WHERE [CampoFecha] Between #01/01/2002# AND #12/31/2002#;
La cláusula WHERE especifica el Criterio que en el diseñador de Consultas puede estar como:
Entre #01/01/2002# Y #31/12/2002#
De esta forma yo puedo tener un código como:
Sub ProbarConsultaAlmacenada()
Dim FechaInicial As Fecha, FechaFinal As Date
Dim MiSQL as string
FechaInicial = InputBox("Digite Fecha Inicial")
FechaFinal = InputBox("Digite Fecha Inicial")
MiSQL = "SELECT [MiTabla].* FROM [MiTabla] "
MiSQL = MiSQL & "WHERE [CampoFecha] Between " & _
FechaInicial & " AND " & FechaFinal & ";"
CurrentDB.Queries("MiConsulta").SQL = MiSQL
End Sub
Esta pequeña rutina sólo cambia la consulta almacenada "MiConsulta". También se puede mejorar esta rutina al utilizar en lugar de la Función InputBox un formulario que contenga los parámetros FechaInicial y FechaFinal.
Si necesitas obtener la consulta SQL desde código puedes hacer esto:
Sub ObtenerSQL()
Dim CadenaSQL as string
CadenaSQL = CurrentDB.Queries("MiConsulta").SQL
REM Aquí puedes colocar el código para modificar CadenaSQL
REM y luego volver a