我有一個問題(警報等)的SQL查詢中,每次我打開它時彈出...MS-Access如何使用查詢帶有參數的形式
對於插在每個值問題你得到不同的結果。
我希望能夠使用該查詢在我的形式與組合框...
我不知道如何從表單中exceute與參數查詢....
我使用VBA沒有問題,只是告訴我如何調用查詢與參數
感謝, Fingerman
我有一個問題(警報等)的SQL查詢中,每次我打開它時彈出...MS-Access如何使用查詢帶有參數的形式
對於插在每個值問題你得到不同的結果。
我希望能夠使用該查詢在我的形式與組合框...
我不知道如何從表單中exceute與參數查詢....
我使用VBA沒有問題,只是告訴我如何調用查詢與參數
感謝, Fingerman
我通常使用以下原則使用我的濾波形式:
1)I首先創建一個查詢,包括所有我想要顯示的字段和所有我要過濾的字段。它可以使用多個表格。在這個查詢中,我沒有設置任何條件(WHERE子句),除非總是需要應用一個條件而不管它是什麼。
2)接下來我創建一個基於這個查詢的數據表格,我保存它,給它一個名稱,指出它是一個子表單。
3)接下來,我創建一個未綁定的主窗體,並添加將用於過濾不同字段的未綁定控件,如文本框,組合框,列表框,複選框等。一個控件可能允許用戶在多個字段上搜索,具體取決於如何在VBA中編寫過濾例程。
4)現在是時候在主窗體上編寫代碼來使這一切工作。基本上,代碼需要檢查是否有任何控件中的值,如果是,它會創建一個WHERE子句(不帶WHERE關鍵字),最後它將設置子窗體的過濾器屬性並將子窗體的FilterOn屬性爲TRUE。
下面是一些示例代碼。這是從我剛纔演示的過濾示例數據庫中獲取的(請參見下文)。此示例不使用模糊搜索(星號),並且主窗體上的每個控件僅過濾子窗體上的一個字段。
Private Sub cmdFilter_Click()
'You can also call the FilterSubForm function on a control's AfterUpdate event.
Call FilterSubform
End Sub
Private Sub FilterSubform()
Dim strFilter As String
'Note: We have to wrap field names in brackets if they contain spaces or
'special characters. These fields are in Northwind Traders 2007 from Microsoft
'I would never consider naming my fields with spaces or special characters
'in them.
'Company
If Nz(Me.txtCompany, "") <> "" Then
strFilter = strFilter & "Company = '" & PQ(Me.txtCompany) & "' And "
End If
'First Name
If Nz(Me.txtFirstName, "") <> "" Then
strFilter = strFilter & "[First Name] = '" & PQ(Me.txtFirstName) & "' AND "
End If
'Last Name
If Nz(Me.txtLastName, "") <> "" Then
strFilter = strFilter & "[Last Name] = '" & PQ(Me.txtLastName) & "' AND "
End If
'Business Phone
If Nz(Me.txtBusinessPhone, "") <> "" Then
strFilter = strFilter & "[Business Phone] = '" & PQ(Me.txtBusinessPhone) & "' AND "
End If
'City
If Nz(Me.cboCity, "") <> "" Then
strFilter = strFilter & "City = '" & PQ(Me.cboCity) & "' AND "
End If
'State/Province
If Nz(Me.cboStateProvince, "") <> "" Then
strFilter = strFilter & "[State/Province] = '" & PQ(Me.cboStateProvince) & "' AND "
End If
'Order Date
If Nz(Me.txtOrderDate, "") <> "" Then
If IsDate(Me.txtOrderDate) = True Then
strFilter = strFilter & "[Order Date] = #" & Me.txtOrderDate & "# AND "
End If
End If
'Ship Name
If Nz(Me.txtShipName, "") <> "" Then
strFilter = strFilter & "[Ship Name] = '" & PQ(Me.txtShipName) & "' AND "
End If
'Ship City
If Nz(Me.txtShipCity, "") <> "" Then
strFilter = strFilter & "[Ship City] = '" & PQ(Me.txtShipCity) & "' AND "
End If
'Ship State/Province
If Nz(Me.cboShipStateProvince, "") <> "" Then
strFilter = strFilter & "[Ship State/Province] = '" & PQ(Me.cboShipStateProvince) & "' AND "
End If
'Product Code
If Nz(Me.cboProductCode, "") <> "" Then
strFilter = strFilter & "[Product Code] = '" & PQ(Me.cboProductCode) & "' AND "
End If
'Quantity
If Nz(Me.txtQuantity, "") <> "" Then
If IsNumeric(Me.txtQuantity) = True Then
strFilter = strFilter & "Quantity = " & Me.txtQuantity & " AND "
End If
End If
If Right(strFilter, 5) = " AND " Then strFilter = Left(strFilter, Len(strFilter) - 5)
If strFilter <> "" Then
Me.subformOrderSearch.Form.Filter = strFilter
Me.subformOrderSearch.Form.FilterOn = True
Else
'Clear the filter
Me.subformOrderSearch.Form.Filter = ""
Me.subformOrderSearch.Form.FilterOn = False
End If
End Sub
Private Function PQ(s As String) As String
'This function is used to "pad quotes" for SQL
PQ = Replace(s, "'", "''")
End Function
我已經放在一起的示例數據庫,有幾個不同的例子,建立在我在這裏發佈的東西。你可以在這裏下載這個數據庫: http://www.utteraccess.com/forum/Search-filtering-Examples-t1968063.html
經過一番搜索,我碰到這個傳來: http://www.techrepublic.com/blog/msoffice/run-a-parameter-query-within-an-access-form/701
這不是我想要的東西,但它是一個很好的解決方案......
我會等待,如果沒有人得到一個更好的答案,我會接受我自己的(雖然我很討厭這樣做)。
這是一個很好的答案..我希望有一個更簡單的解決方案 - 但這是可以通過的。投票正確的答案。 – fingerman 2011-06-11 00:44:28