2013-08-27 62 views
1

我目前正在將Access後端移動到SQL Server的過程。我遇到了某些列表框的行來源問題。我需要一種方法來設置listbox rowsource來查詢駐留在服務器上的SP。我還需要傳遞一個從另一個列表框中單擊的參數。SQL SP作爲列表框Rowsource與變量 - 服務器2008

例如,用戶點擊listbox1,然後將所選值作爲參數傳遞給listbox2的rowsource查詢。我怎樣才能得到rowsource來查詢SQL Server並傳遞參數給它。

回答

4

在SQL Server我有一個名爲[吉他]包含

Model   Make 
------------ ------ 
Les Paul  Gibson 
SG   Gibson 
Stratocaster Fender 
Telecaster Fender 

表,並命名爲[GetModels]存儲過程定義爲

CREATE PROCEDURE [dbo].[GetModels] 
    @Make nvarchar(50) = '' 
AS 
BEGIN 
    SET NOCOUNT ON; 

    SELECT Model FROM Guitars WHERE Make = @Make 
END 

在訪問我有一個傳遞查詢命名爲[ptqGetModels]和一個包含兩個列表框的表單:

名稱: lbxMake
行來源: 「芬達」, 「吉布森」
行來源類型:值列表

名稱: lbxModel
行來源: SELECT * FROM ptqGetModels;
行來源類型:表/查詢

在我對lbxMake列表框下面After Update事件的形式背後的VBA代碼:

Private Sub lbxMake_AfterUpdate() 
Dim qdf As DAO.QueryDef 
Set qdf = CurrentDb.QueryDefs("ptqGetModels") 
qdf.SQL = "EXEC GetModels '" & Me.lbxMake.Value & "'" 
Set qdf = Nothing 
Me.lbxModel.Requery 
End Sub 

當我選擇在lbxMake列表框的新值它會自動更新lbxModel列表框,方法是重新編寫傳遞查詢,然後重新運行存儲過程。