Используя поля со списком формы, примените фильтр к запросу - PullRequest
0 голосов
/ 29 июня 2011

Я думаю, что я близок к этому, но не могу отработать процесс фильтрации.

tblIndex(PrimaryCat,SubCat,UserID,Year)
tblResults(SubCat,UserID)

Моя форма имеет два поля со списком и кнопку.ComboBox1 имеет значения tblIndex.PrimaryCat, а ComboBox2 имеет значения tblIndexYear.

То, что я хочу, это когда нажата командная кнопка в форме, открывается tblResults, показывающий список значений SubCat и UserID, когда значения выпадающего списка используются какфильтр на tblIndex.

Имеет ли это смысл?

У меня есть источник записей формы, установленный в tblResults.Я использую это, просто нужно как-то добавить в фильтрацию:

Private Sub cmdGo_Click()

Dim strSQL As String

strSQL = "SELECT SubCat, UserID " & _
         "FROM tblIndex " & _
         "WHERE PrimaryCat = [strCat] AND Year = [strYear] " & _
         "GROUP BY SubCat, UserID"

DoCmd.OpenQuery "strSQL"

End Sub

РЕДАКТИРОВАТЬ:

Я не уверен, что мне разрешено отвечать на мой собственный вопрос, но яразработал решение.I> использовал INTO, чтобы поместить результаты во временную таблицу, которой я могу в дальнейшем манипулировать, используя:

Private Sub cmdGo_Click ()

Dim strSQL As String

strSQL = "SELECT SubCat, UserID INTO tblTemp "& _" FROM tblIndex "& _" WHERE PrimaryCat = '"& cboPrimaryCat.Value &"' AND Year = '"&> cboYear.Value & _"' GROUP BY SubCat, UserID "

DoCmd.RunSQL strSQL

End Sub

Ответы [ 2 ]

1 голос
/ 29 июня 2011

сработало.Невозможно запустить SQL без предварительного сохранения в запросе.Решение:

Private Sub cmdGo_Click()
    Dim qdfCurr As DAO.QueryDef
    Dim strSQL As String

    strSQL = "SELECT SubCat, UserID " & _
             "FROM tblIndex " & _
             "WHERE PrimaryCat  = '" & strCat.Value & "' AND Year = '" & strYear.Value & _
             "' GROUP BY SubCat, UserID"

    On Error Resume Next
    Set qdfCurr = CurrentDb.QueryDefs("TempQuery")
    If Err.Number = 3265 Then
        Set qdfCurr = CurrentDb.CreateQueryDef("TempQuery")
    End If

    qdfCurr.SQL = strSQL
    DoCmd.OpenQuery "TempQuery"
End Sub
0 голосов
/ 29 июня 2011

Я думаю, что это должно сработать. Работа с временными таблицами более сложна. Представьте, что у вас есть 50 запросов с соответствующей временной таблицей!

Private Sub cmdGo_Click()

Dim strSQL As String

strSQL = "SELECT SubCat, UserID " & _
         "FROM tblIndex " & _
         "WHERE PrimaryCat = " & Forms!FormName![strCat] & " AND Year = " & Forms!FormName![strYear] " " & _
         "GROUP BY SubCat, UserID"

DoCmd.OpenQuery strSQL

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...