建立要求用戶輸入的查詢

此頁(yè)沒(méi)有內(nèi)容條目
內(nèi)容

Access > 查找和篩選數(shù)據(jù)

 

建立要求用戶輸入的查詢

blueup_CLV全部顯示

bluedrop_CLV全部隱藏

如果需要查詢?cè)诿看芜\(yùn)行時(shí)都要求用戶輸入,那么可以創(chuàng)建參數(shù)查詢 (參數(shù)查詢:在這種查詢中,用戶以交互方式指定一個(gè)或多個(gè)條件值。參數(shù)查詢不是一個(gè)單獨(dú)種類的查詢,而是擴(kuò)展了查詢的靈活性。)

還可以創(chuàng)建窗體來(lái)收集參數(shù)值。使用窗體可以:

使用特定于數(shù)據(jù)類型的控件
啟用參數(shù)值的持久性
提供組合框控件(這樣您就可以從列表中選取值,而不是鍵入值)
使用窗體中可用的其他控件

 注釋    不可使用窗體來(lái)收集 Web 數(shù)據(jù)庫(kù)中的查詢參數(shù)。

本文提供參數(shù)概述,說(shuō)明如何在查詢中使用參數(shù),以及如何使用窗體來(lái)增強(qiáng)參數(shù)的使用。

本文內(nèi)容


hrefIcon_ZA10069439 概述

hrefIcon_ZA10069439 在查詢中使用參數(shù)

hrefIcon_ZA10069439 指定參數(shù)數(shù)據(jù)類型

hrefIcon_ZA10069439 創(chuàng)建收集參數(shù)的窗體


概述

可以在 Access 的查詢中使用條件來(lái)限制查詢所返回的記錄集。請(qǐng)考慮以下情況。

假設(shè)您有一個(gè)名為“上一個(gè)訂單”的查詢,該查詢返回客戶的名稱和地址,以及該客戶最近訂單的發(fā)貨日期。最近,您向產(chǎn)品目錄和庫(kù)存中添加了一些令人興奮的新產(chǎn)品。您每次按訂單發(fā)貨時(shí),都會(huì)附上一份最新的目錄。您預(yù)期新產(chǎn)品將非常受歡迎,并希望確保所有的客戶都知道它們。您希望向尚未收到隨貨發(fā)運(yùn)的新目錄的所有客戶郵寄新目錄。

因此,您希望創(chuàng)建一個(gè)郵寄列表,在其中包含其最近的訂單發(fā)貨日期是在您制作新目錄之前的客戶的名稱和地址。為此,請(qǐng)向“上一個(gè)訂單”查詢的“發(fā)貨日期”字段應(yīng)用一個(gè)條件。該條件指定,“發(fā)貨日期”字段中的日期在開始分發(fā)新目錄的日期(例如,3/31/2006)之前。當(dāng)您運(yùn)行該查詢時(shí),將獲得一個(gè)郵寄列表,其中只包含尚未收到新目錄的客戶。

但是,如果這種情況再次出現(xiàn)該怎么辦?可以通過(guò)更改條件所指定的值來(lái)修改查詢的設(shè)計(jì),但是,如果查詢要求您輸入日期,并使用該日期來(lái)確定要包括在郵寄列表中的客戶,不是更好嗎?通過(guò)使用一種稱為“參數(shù)”的特殊條件,可以讓查詢完成上述操作。

您可能會(huì)發(fā)現(xiàn)參數(shù)查詢提供的對(duì)話框不足以滿足需要。在這種情況下,可以創(chuàng)建一個(gè)能夠更好地滿足參數(shù)收集需要的窗體。本文說(shuō)明如何創(chuàng)建用來(lái)收集報(bào)表參數(shù)的窗體。

本文假設(shè)您熟悉創(chuàng)建查詢的過(guò)程。繼續(xù)之前,您至少應(yīng)該熟悉如何創(chuàng)建選擇查詢。

有關(guān)如何創(chuàng)建選擇查詢的詳細(xì)信息,請(qǐng)參閱查詢簡(jiǎn)介一文。

本文舉例說(shuō)明如何在查詢中使用參數(shù),但是未提供關(guān)于如何指定條件的全面參考資料。

有關(guān)如何指定條件的詳細(xì)信息,請(qǐng)參閱查詢條件示例一文。

TopPageIcon_CLV 返回頁(yè)首

在查詢中使用參數(shù)

在查詢中使用參數(shù)與創(chuàng)建使用條件的查詢一樣簡(jiǎn)單??梢栽O(shè)計(jì)提示您輸入一段信息(如部件號(hào))的查詢,也可以設(shè)計(jì)提示您輸入多段信息(如兩個(gè)日期)的查詢。對(duì)于每個(gè)參數(shù),參數(shù)查詢都顯示一個(gè)單獨(dú)的對(duì)話框,提示您輸入該參數(shù)的值。

將參數(shù)添加到查詢

1.創(chuàng)建一個(gè)選擇查詢,然后在設(shè)計(jì)視圖 (設(shè)計(jì)視圖:顯示數(shù)據(jù)庫(kù)對(duì)象(包括表、查詢、窗體、報(bào)表和宏)的設(shè)計(jì)的視圖。在設(shè)計(jì)視圖中,可以創(chuàng)建新的數(shù)據(jù)庫(kù)對(duì)象以及修改現(xiàn)有對(duì)象的設(shè)計(jì)。)中打開該查詢。
2.在要應(yīng)用參數(shù)的字段的“條件”行中,鍵入您希望該參數(shù)對(duì)話框顯示的文本,并用方括號(hào)括起來(lái),例如:

[開始日期]

運(yùn)行該參數(shù)查詢時(shí),對(duì)話框中會(huì)顯示該提示(不帶方括號(hào))。

還可以在表達(dá)式中使用參數(shù)提示,例如:

Between [開始日期] And [結(jié)束日期]

 注釋    對(duì)于每個(gè)參數(shù)提示,會(huì)出現(xiàn)單獨(dú)的對(duì)話框。在第二個(gè)示例中,將出現(xiàn)兩個(gè)對(duì)話框:一個(gè)對(duì)應(yīng)“開始日期”,另一個(gè)對(duì)應(yīng)“結(jié)束日期”。

3.對(duì)要添加參數(shù)的每個(gè)字段重復(fù)步驟 2。

可以使用上面的步驟將參數(shù)添加到以下類型的任一查詢:

選擇查詢
交叉表查詢
追加查詢
生成表查詢
更新查詢

將參數(shù)添加到聯(lián)合查詢

還可以將參數(shù)添加到聯(lián)合查詢。

1.在 SQL 視圖中打開聯(lián)合查詢。
2.添加一個(gè) WHERE 子句,其中包含要提示用戶輸入?yún)?shù)的每個(gè)字段。

如果已經(jīng)存在一個(gè) WHERE 子句,請(qǐng)檢查要使用參數(shù)提示的字段是否已在該子句中,如果沒(méi)有,則添加它們。

3.在 WHERE 子句中使用參數(shù)提示,而不是使用條件。

將字段值的一部分與參數(shù)字符串進(jìn)行匹配

您可能希望查詢應(yīng)用參數(shù)的方式稍有不同。例如,您可能希望查詢接受文本字符串,并將該文本字符串與某個(gè)字段的任一部分進(jìn)行匹配。這可以通過(guò)將 Like 關(guān)鍵字與通配符結(jié)合使用來(lái)實(shí)現(xiàn)。例如,您可能希望查詢提示您輸入原產(chǎn)國(guó)/地區(qū),但是希望在相關(guān)字段值中包含參數(shù)字符串時(shí)進(jìn)行匹配。要執(zhí)行此操作:

1.創(chuàng)建一個(gè)選擇查詢,然后在“設(shè)計(jì)”視圖中打開該查詢。
2.在要應(yīng)用參數(shù)的字段的“條件”行中,鍵入 Like "*"&[,再鍵入要用作提示的文本,然后鍵入 ]&"*"。

當(dāng)您運(yùn)行該參數(shù)查詢時(shí),對(duì)話框中會(huì)顯示該提示(不帶中括號(hào),不帶 Like 關(guān)鍵字和通配符)。

3.當(dāng)參數(shù)查詢接受參數(shù)時(shí),會(huì)與包含參數(shù)字符串的值進(jìn)行匹配。例如,參數(shù)字符串 us 與參數(shù)字段值為 Australia 的行和值為 USA 的行匹配。

還可以使用 Like 關(guān)鍵字和通配符來(lái)指定參數(shù)應(yīng)當(dāng)與字段值的開頭或末尾匹配。若要與字段值的開頭匹配,請(qǐng)省略左方括號(hào)前面的引號(hào)、通配符和與號(hào) (&)。若要與字段值的末尾匹配,請(qǐng)省略右方括號(hào)后面的與號(hào) (&)、引號(hào)和通配符。

基于不相等值匹配

您可能希望收集一個(gè)參數(shù),但不希望查詢返回有匹配值的行,而希望查詢返回另外某個(gè)比較的結(jié)果為 True 的行。例如,您可能希望查詢提示輸入一個(gè)年份并返回年份值大于參數(shù)字符串的行。為此,請(qǐng)?jiān)谟脕?lái)將參數(shù)提示括起來(lái)的第一個(gè)方括號(hào)的左側(cè)鍵入一個(gè)比較運(yùn)算符,例如, >[年份:]。

TopPageIcon_CLV 返回頁(yè)首

指定參數(shù)數(shù)據(jù)類型

您還可以指定參數(shù)應(yīng)該接受的數(shù)據(jù)類型??梢灾付ㄈ魏螀?shù)的數(shù)據(jù)類型,但尤其重要的是指定數(shù)值、貨幣或日期/時(shí)間數(shù)據(jù)的數(shù)據(jù)類型。在指定參數(shù)應(yīng)該接受的數(shù)據(jù)類型后,如果用戶輸入錯(cuò)誤類型的數(shù)據(jù)(例如,應(yīng)該輸入貨幣,但輸入了文本),則會(huì)看到更有幫助的錯(cuò)誤消息。

 注釋    如果將參數(shù)配置為接受文本數(shù)據(jù),則輸入的任何內(nèi)容都將被解釋為文本,并且不會(huì)顯示任何錯(cuò)誤消息。

若要指定查詢中參數(shù)的數(shù)據(jù)類型,請(qǐng)按照下面的步驟執(zhí)行:

1.在設(shè)計(jì)視圖中打開查詢,在“設(shè)計(jì)”選項(xiàng)卡上的“顯示/隱藏”組中,單擊“參數(shù)”。
2.“查詢參數(shù)”對(duì)話框中的“參數(shù)”列中,為您要為其指定數(shù)據(jù)類型的每個(gè)參數(shù)鍵入提示信息。請(qǐng)確保每個(gè)參數(shù)都與您在查詢?cè)O(shè)計(jì)網(wǎng)格的“條件”行中使用的提示信息相匹配。
3.“數(shù)據(jù)類型”列中,選擇每個(gè)參數(shù)的數(shù)據(jù)類型。

TopPageIcon_CLV 返回頁(yè)首

創(chuàng)建收集參數(shù)的窗體

 注釋    不可使用窗體來(lái)收集 Web 數(shù)據(jù)庫(kù)中的查詢參數(shù)。

雖然參數(shù)查詢特有收集參數(shù)的內(nèi)置對(duì)話框,但它們只提供基本功能。使用窗體來(lái)收集參數(shù),可以獲得下面的功能:

使用特定于數(shù)據(jù)類型的控件(如日期的日歷控件)
持久保留收集的參數(shù),這樣就可以在多個(gè)查詢中使用這些參數(shù)。
提供用于收集參數(shù)的組合框或列表框,讓用戶從可用數(shù)據(jù)值的列表中選取值。
提供用于執(zhí)行其他功能(如打開或刷新查詢)的控件。

按照下面的步驟創(chuàng)建收集參數(shù)的窗體。

hrefIcon_ZA10069439 步驟 1:創(chuàng)建接受輸入的窗體

hrefIcon_ZA10069439 步驟 2:創(chuàng)建模塊來(lái)檢查參數(shù)窗體是否已經(jīng)加載

hrefIcon_ZA10069439 步驟 3:創(chuàng)建控制窗體的宏組

hrefIcon_ZA10069439 步驟 4:向窗體中添加“確定”“取消”命令按鈕

hrefIcon_ZA10069439 步驟 5:使用窗體數(shù)據(jù)作為查詢條件


步驟 1:創(chuàng)建接受輸入的窗體

1.“創(chuàng)建”選項(xiàng)卡上的“窗體”組中,單擊“窗體設(shè)計(jì)”
2.在“設(shè)計(jì)”視圖中,按 F4 顯示屬性表,然后如下表所示指定窗體屬性。

屬性

設(shè)置

標(biāo)題

輸入要出現(xiàn)在窗體標(biāo)題欄中的名稱。

默認(rèn)視圖

單個(gè)窗體

允許窗體視圖

允許數(shù)據(jù)表視圖

允許數(shù)據(jù)透視表視圖

允許數(shù)據(jù)透視圖視圖

滾動(dòng)條

兩者均無(wú)

記錄選擇器

導(dǎo)航按鈕

邊框樣式

對(duì)話框

 

3.對(duì)于要窗體收集的每個(gè)參數(shù),在“設(shè)計(jì)”選項(xiàng)卡上的“控件”組中,單擊“文本框”按鈕。
4.如下表所示設(shè)置文本框?qū)傩浴?/span>

屬性

設(shè)置

名稱

輸入描述參數(shù)的名稱,如“開始日期”。

格式

選擇一種反映參數(shù)字段的數(shù)據(jù)類型的格式。例如,為日期字段選擇常規(guī)日期。

 

5.保存該窗體并為其命名,如“日期范圍”。

步驟 2:創(chuàng)建模塊來(lái)檢查參數(shù)窗體是否已經(jīng)加載

1.“創(chuàng)建”選項(xiàng)卡上的“宏和代碼”組中,單擊“模塊”。

新模塊隨即在 Visual Basic 編輯器中打開。

2.在 Visual Basic 編輯器中鍵入或粘貼下面的代碼:

Function IsLoaded(ByVal strFormName As String) As Boolean

Dim oAccessObject As AccessObject

Set oAccessObject = CurrentProject.AllForms(strFormName)

If oAccessObject.IsLoaded Then

  If oAccessObject.CurrentView <> acCurViewDesign Then

    IsLoaded = True

  End If

End If

End Function

3.保存模塊,然后關(guān)閉 Visual Basic 編輯器。

步驟 3:創(chuàng)建控制窗體的宏

1.“創(chuàng)建”選項(xiàng)卡上的“宏和代碼”組中,單擊“宏”。
2.“設(shè)計(jì)”選項(xiàng)卡上的“顯示/隱藏”組中,單擊“顯示所有操作”。
3.右鍵單擊宏對(duì)象選項(xiàng)卡,然后單擊“保存”
4.“宏名稱”框中鍵入名稱,如打開對(duì)話框,然后單擊“確定”。
5.單擊“添加新操作”旁邊的下拉箭頭,然后單擊“OpenForm”。您將使用此操作打開先前創(chuàng)建的參數(shù)窗體。

“OpenForm”操作隨即出現(xiàn),并顯示一組參數(shù)。

6.如下表所示設(shè)置操作參數(shù)。

參數(shù)

設(shè)置

窗體名稱

輸入賦予參數(shù)窗體的名稱。

視圖

窗體

數(shù)據(jù)模式

編輯

窗口模式

對(duì)話框

 

7.單擊“添加新操作”旁邊的下拉箭頭,然后單擊“If”。
8.“If”操作中,在“If”旁邊的框中鍵入 Not IsLoaded,后跟您賦予報(bào)表參數(shù)窗體的名稱,名稱括在引號(hào)和括號(hào)內(nèi)。例如,如果窗體名為“日期范圍”,那么鍵入 Not IsLoaded("日期范圍")。
9.“If”操作中,單擊“添加新操作”旁邊的下拉箭頭,然后單擊“CancelEvent”。
10.保存并關(guān)閉宏。
11.重復(fù)步驟 1 到 3 創(chuàng)建新宏。為新宏命名,如“關(guān)閉對(duì)話框”。
12.單擊“添加新操作”旁邊的下拉箭頭,然后單擊“CloseWindow”。此操作將由查詢用來(lái)關(guān)閉參數(shù)窗體。
13.如下表所示設(shè)置操作參數(shù)。

參數(shù)

設(shè)置

對(duì)象類型

窗體

對(duì)象名稱

輸入賦予參數(shù)窗體的名稱。

保存

 

14.保存并關(guān)閉宏。
15.重復(fù)步驟 1 到 3 創(chuàng)建另一個(gè)新宏。為新宏命名,如“確定”。
16.單擊“添加新操作”旁邊的下拉箭頭,然后單擊“SetValue”。此操作將用來(lái)在用戶單擊“確定”時(shí),隱藏報(bào)表參數(shù)窗體。
17.如下表所示設(shè)置操作參數(shù)。

參數(shù)

設(shè)置

項(xiàng)目

[可見]

表達(dá)式

18.重復(fù)步驟 1 到 3 創(chuàng)建另一個(gè)新宏。為新宏命名,如“取消”。
19.單擊“添加新操作”旁邊的下拉箭頭,然后單擊“CloseWindow”。此操作將用來(lái)在用戶單擊“取消”時(shí),關(guān)閉參數(shù)窗體。
20.如下表所示設(shè)置操作參數(shù)。

參數(shù)

設(shè)置

對(duì)象類型

窗體

對(duì)象名稱

輸入賦予參數(shù)窗體的名稱。

保存

 

步驟 4:向窗體中添加“確定”“取消”命令按鈕

1.從“設(shè)計(jì)”視圖中重新打開參數(shù)窗體。
2.確保在“設(shè)計(jì)”選項(xiàng)卡上的“控件”組中,未選中“使用控件向?qū)А?/span>。
3.“設(shè)計(jì)”選項(xiàng)卡上的“控件”組中,單擊“按鈕”。
4.將指針?lè)旁诖绑w上的文本框下面,然后拖動(dòng)鼠標(biāo)創(chuàng)建“確定”命令按鈕。
5.如果屬性表不可見,請(qǐng)按 F4 顯示該表。
6.如下表所示設(shè)置“確定”按鈕的屬性。

屬性

設(shè)置

名稱

確定

標(biāo)題

確定

默認(rèn)

OnClick

輸入宏的名稱,例如,“日期范圍.確定”。

 

7.創(chuàng)建一個(gè)“取消”命令按鈕并如下表所示設(shè)置其屬性。

屬性

設(shè)置

名稱

取消

標(biāo)題

取消

OnClick

輸入宏的名稱,例如,“日期范圍.取消”。

 

8.保存并關(guān)閉窗體。

步驟 5:使用窗體數(shù)據(jù)作為查詢條件

1.在“設(shè)計(jì)”視圖中打開查詢。
2.輸入數(shù)據(jù)的條件。使用 Forms 對(duì)象、窗體名稱,以及控件 (控件:允許用戶控制程序的圖形用戶界面對(duì)象,如文本框、復(fù)選框、滾動(dòng)條或命令按鈕等??墒褂每丶@示數(shù)據(jù)或選項(xiàng)、執(zhí)行操作或使用戶界面更易閱讀。)的名稱:
例如,在 Access 數(shù)據(jù)庫(kù)(.accdb 或 .mdb)中,對(duì)于名為“日期范圍”的窗體,使用下面的表達(dá)式在查詢中引用名為“開始日期”和“結(jié)束日期”的控件:

Between [Forms]![日期范圍]![開始日期] And [Forms]![日期范圍]![結(jié)束日期]

TopPageIcon_CLV 返回頁(yè)首