2014-06-10 87 views
1

我正在使用Access 2010.我有一個交叉表查詢,我試圖根據窗體上的文本框的值進行過濾。完整的SQL是如下:使用窗體過濾交叉表查詢MS Access 2010

PARAMETERS Forms!SelectForm!Text27 DateTime; 

TRANSFORM nz(Sum([Raw Contract Data].[Action Obligation]), 0) AS [SumOfAction Obligation] 

SELECT [Raw Contract Data].[NAICS Code], [Raw Contract Data].[NAICS Description], Sum([Raw 
Contract Data].[Action Obligation]) AS [Total Of Action Obligation], NZ(round(avg([SumOfAction 
Obligation]),0),) AS [Average Obligation], 
nz(round(stdev([SumOfAction Obligation]),0),0) AS [StDev of CTRs], 
nz(round(var([SumOfAction Obligation]),0),0) AS [Variance of Obligations] 

FROM [Raw Contract Data] 

WHERE [Raw Contract Data].[Date Signed] <= Forms!SelectForm!Text27 

GROUP BY [Raw Contract Data].[NAICS Code], [Raw Contract Data].[NAICS Description] 

PIVOT format([Raw Contract Data].[Date Signed], "yyyy-mm"); 

的問題是,該查詢將運行,但彈出一個框,要求文本27的價值它不會從處於它的價值認識它形成。當我手動輸入一個日期(沒有前面的PARAMETERS聲明)時,WHERE子句將起作用,但是當我希望它引用文本字段的值時,我什麼也得不到。

回答

0

記住,你必須在打開狀態的形式從你所指的Text27

否則當你執行查詢時,查詢不會因爲形式沒有打開得到的參數值,它會問你價值爲Text27

+0

是的。我在開放狀態。 – user2907249

1

給一個嘗試這種方法,讓我知道如果這有助於你

PARAMETERS EnterDate DateTime; 
TRANSFORM nz(Sum([Raw Contract Data].[Action Obligation]), 0) AS [SumOfAction Obligation] 
SELECT [Raw Contract Data].[NAICS Code], [Raw Contract Data].[NAICS Description], 
Sum([RawContract Data].[Action Obligation]) AS [Total Of Action Obligation], 
NZ(round(avg([SumOfAction Obligation]),0),) AS [Average Obligation], 
nz(round(stdev([SumOfAction Obligation]),0),0) AS [StDev of CTRs], 
nz(round(var([SumOfAction Obligation]),0),0) AS [Variance of Obligations] 
FROM [Raw Contract Data] 
WHERE [Raw Contract Data].[Date Signed] <= EnterDate 
GROUP BY [Raw Contract Data].[NAICS Code], [Raw Contract Data].[NAICS Description] 
PIVOT format([Raw Contract Data].[Date Signed], "yyyy-mm"); 

此查詢保存說名字查詢1

在篩選器操作說點擊過濾器按鈕定義以下代碼

Dim qdf As DAO.QueryDef 
Dim rst as DAO.Recordset 
Set qdf = CurrentDb.QueryDefs("Query1") 
qdf!EnterDate = Forms!SelectForm!Text27 
Set rst = qdf.OpenRecordset 
Set rst = Nothing 
Set qdf = Nothing 
+0

是否可以用宏而不是vba來實現? – davejal