我认为我接近这个,但无法解决过滤过程。
tblIndex(PrimaryCat,SubCat,UserID,Year)
tblResults(SubCat,UserID)
我的表单有两个组合框和一个按钮。 ComboBox1具有tblIndex.PrimaryCat值,ComboBox2具有tblIndexYear值。
我想要的是当按下表单中的命令按钮时,当组合框值用作tblIndex上的过滤器时,tblResults会打开,显示SubCat和UserID值的列表。
这有意义吗?
我将表单的记录源设置为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
编辑:
我不确定我是否被允许回答我自己的问题,但我找到了一个解决方案。我使用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
答案 0 :(得分:1)
解决了这个问题。如果不先将SQL存储在查询中,则无法运行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
答案 1 :(得分:-1)
我认为这样可行。使用临时表更复杂。想象一下,你有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