Ja ja ja! A saber lo que estoy intentando hacer!
Básicamente he copiado lo que tu has puesto en tu código. He creado un formulario con 4 combos y una casilla de verificación por probar.
Despues creo un boton y al hacer clic, genero el siguiente código:
Cita: Private Sub Comando5_Click()
Dim NombreControl As String
Dim Ctl As Control
Dim Filtro As String
Dim TipoDatos As String
Dim qdf As DAO.QueryDef
Dim sSql As String
sSql = "SELECT * FROM Ofertas_Cursos "
For Each Ctl In Me.Controls
NombreControl = Ctl.Name
If Me.Controls(NombreControl).ControlType = acTextBox Or _
Me.Controls(NombreControl).ControlType = acComboBox Or _
Me.Controls(NombreControl).ControlType = acCheckBox Then
If Nz(Me.Controls(NombreControl), "") <> "" Then
If Nz(Filtro, "") <> "" Then Filtro = Filtro & " AND "
TipoDatos = CurrentDb.TableDefs(Me.RecordSource).Fields(Nombre Control).Type
Select Case TipoDatos
Case 1, 4, 5 'si/no,moneda,numerico
Filtro = Filtro & NombreControl & "=" & Me.Controls(NombreControl).Value
Case 10 'texto
Filtro = Filtro & NombreControl & "='" & Me.Controls(NombreControl).Value & "'"
Case 8 'fecha
Filtro = Filtro & NombreControl & "=#" & Format(Me.Controls(NombreControl).Value, "mm/dd/yyyy") & "#"
End Select
End If
End If
Next Ctl
If Nz(Filtro, "") <> "" Then
Set qdf = CurrentDb.QueryDefs("ConsultaInteractiva")
qdf.SQL = sSql & " Where " & Filtro
DoCmd.OpenQuery "ConsultaInteractiva"
Else
MsgBox "Ninguno de los controles ha sido rellenado", vbInformation
End If
End Sub
Creo que sólo he cambiado el nombre de la consulta y el SELECT.
En cuanto pulso el botón me sale ese error. Aunque si no escojo ninguna opción, me sale bien el MsgBox, así que al menos eso me sale bien... ja jaja!
Por cierto se podría añadir para que me filtrara por mes??
Gracias.