使用 DAvg 函數(shù)可以計(jì)算特定記錄集(一個(gè)域)內(nèi)一組值的平均值??梢栽?Visual Basic 代碼、宏、查詢(xún)表達(dá)式或計(jì)算控件中使用 DAvg 函數(shù)。
例如,可以在選擇查詢(xún)的運(yùn)費(fèi)字段所對(duì)應(yīng)的條件行中使用 DAvg 函數(shù),來(lái)限制返回運(yùn)費(fèi)超過(guò)平均值以上的記錄。或者在計(jì)算控件中使用包含 DAvg 函數(shù)的表達(dá)式,在新訂單值旁邊顯示舊訂單的平均值。
DAvg(expr, domain, [criteria])
DAvg 函數(shù)具有以下參數(shù):
參數(shù) |
說(shuō)明 |
expr |
一個(gè)表達(dá)式,代表要計(jì)算其平均值的數(shù)值數(shù)據(jù)字段??梢允怯脕?lái)標(biāo)識(shí)表或查詢(xún)中字段的字符串表達(dá)式,也可以是對(duì)該字段上的數(shù)據(jù)執(zhí)行計(jì)算的表達(dá)式。在 expr 中可以包括表中字段的名稱(chēng)、窗體上的控件、常量或函數(shù)。如果 expr 包含函數(shù),那么它可以是內(nèi)置的,也可以是用戶(hù)定義的,但不能是另一個(gè)域聚合函數(shù)或 SQL 聚合函數(shù)。 |
domain |
字符串表達(dá)式,代表組成該域的記錄集??梢允潜砻Q(chēng)或不需要參數(shù)的查詢(xún)名稱(chēng)。 |
criteria |
可選的字符串表達(dá)式,用于限制 Davg 函數(shù)執(zhí)行的數(shù)據(jù)范圍。例如,criteria 通常等價(jià)于 SQL 表達(dá)式中的 WHERE 子句,只是不含 WHERE 關(guān)鍵字。如果忽略 criteria,DAvg 函數(shù)將對(duì)整個(gè)域計(jì)算 expr。任何包含在 criteria 中的字段必須同時(shí)也是 domain 中的字段,否則 DAvg 函數(shù)將返回 Null。 |
包含 Null 值的記錄不能在平均值的計(jì)算中使用。
無(wú)論是在宏、模塊、查詢(xún)表達(dá)式還是在計(jì)算控件中使用 DAvg 函數(shù),都必須仔細(xì)地構(gòu)造 criteria 參數(shù),以確保能夠正確地進(jìn)行計(jì)算。
在查詢(xún)的“條件”行中可以使用 DAvg 函數(shù)來(lái)指定條件。例如,要查看所有定購(gòu)數(shù)量在平均訂購(gòu)量以上的產(chǎn)品列表,可以基于“Orders”、“Order Details”和“Products”表創(chuàng)建一個(gè)查詢(xún),包含“Product Name”和“Quantity”字段,并在“Quantity”字段下的“條件”行中加入以下表達(dá)式:
>DAvg("[Quantity]", "Orders")
在查詢(xún)的計(jì)算字段表達(dá)式中,或更新查詢(xún)中“更新到”行中的計(jì)算字段表達(dá)式中,也可以使用 DAvg 函數(shù)。
注釋 在總計(jì)查詢(xún)的計(jì)算字段表達(dá)式中,既可以使用 DAvg 函數(shù),也可以使用 Avg 函數(shù)。如果使用 DAvg 函數(shù),將在數(shù)據(jù)分組之前計(jì)算平均值。如果使用 DAvg 函數(shù),則在數(shù)據(jù)分組之后計(jì)算字段表達(dá)式的平均值。
當(dāng)需要指定條件來(lái)限制 DAvg 函數(shù)執(zhí)行的數(shù)據(jù)范圍時(shí),應(yīng)在計(jì)算控件中使用 DAvg 函數(shù)。例如,要顯示到 California 的運(yùn)費(fèi)的平均值,應(yīng)將文本框的 ControlSource 屬性設(shè)為如下表達(dá)式:
=DAvg("[Freight]", "Orders", "[ShipRegion] = 'CA'")
如果只對(duì)所有 domain 中的記錄計(jì)算平均值,則可使用 Avg 函數(shù)。
如果要顯示的字段不在窗體的基礎(chǔ)記錄源中時(shí),可以在模塊或宏中,或者窗體上的計(jì)算控件中,使用 DAvg 函數(shù)。例如,有一個(gè)基于“訂單”表的窗體,希望包含“訂單明細(xì)”表中的“數(shù)量”字段,以顯示按特定客戶(hù)排序的項(xiàng)目平均值,可以使用 DAvg 函數(shù)來(lái)執(zhí)行這項(xiàng)計(jì)算并在窗體中顯示該數(shù)據(jù)。
提示
? | 在計(jì)算控件中使用 DAvg 函數(shù)時(shí),有時(shí)需要將控件放在窗體頁(yè)眉或頁(yè)腳中,以便該控件的值在每次移動(dòng)到新記錄時(shí)不必重新計(jì)算。 |
? | 如果 expr 所源于的字段數(shù)據(jù)類(lèi)型為數(shù)字,則 DAvg 函數(shù)將返回 Double 數(shù)據(jù)類(lèi)型。如果在計(jì)算控件中使用 DAvg 函數(shù),可在表達(dá)式中包含數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù),以提高性能。 |
? | 雖然使用 DAvg 函數(shù)可以確定外部表字段的數(shù)據(jù)平均值,但是通過(guò)創(chuàng)建含有所有需要字段的查詢(xún),然后將窗體或報(bào)表建立在這個(gè)查詢(xún)的基礎(chǔ)上,效率將更高。 |
注釋 當(dāng)使用此函數(shù)時(shí),不包括對(duì) domain 記錄未保存的更改。如果希望 DAvg 函數(shù)基于更改后的值,必須首先保存更改,方法是:?jiǎn)螕?/span>“記錄”菜單中的“保存記錄”、將焦點(diǎn)移動(dòng)到另一條記錄,或使用 Update 方法。
下列函數(shù)返回特定日期或特定日期以后已發(fā)訂貨的平均運(yùn)費(fèi)。域?yàn)椤癘rders”表。條件參數(shù)根據(jù)給定的國(guó)家/地區(qū)和發(fā)貨日期來(lái)限制生成的記錄集。請(qǐng)注意,關(guān)鍵字 AND 包含在字符串內(nèi),用于分隔條件參數(shù)內(nèi)的多個(gè)字段。包含在 DAvg 函數(shù)計(jì)算內(nèi)的所有記錄都將滿(mǎn)足這兩個(gè)條件。
Public Function AvgFreightCost(ByVal strCountry As String, _
ByVal dteShipDate As Date) As Double
AvgFreightCost = DAvg("[Freight]", "Orders", _
"[ShipCountry] = '" & strCountry & _
"'AND [ShippedDate] >= #" & dteShipDate & "#")
End Function
若要調(diào)用該函數(shù),請(qǐng)?jiān)凇傲⒓础贝翱谥惺褂孟铝写a行:
:AvgFreightCost "UK", #1/1/96#