Avg 函數
計算在查詢的指定字段中所包含的一組值的算術平均值。
語法
Avg(expr)
expr 占位符代表一個字符串表達式,它標識的字段包含被計算平均值的數據,或者代表使用該字段的數據執行計算的表達式。expr 中的操作數可包括表字段名、常量名或函數名(可以是固有的或用戶自定義的函數,但不能是其他 SQL 聚合函數)。
說明
使用 Avg 計算的平均值是算術平均值(值的總和除以值的數目)。例如,可以使用 Avg 計算運費的平均值。
在計算中,Avg 函數不能包含任何 Null 字段。
您可以將 Avg 用於查詢表達式中和 QueryDef 對象的 SQL 屬性中,或者在基於 SQL 查詢創建 Recordset 對象時使用。
Count 函數
計算查詢所返回的記錄數
語法
Count(expr)
expr 占位符代表字符串表達式,它標識的字段包含了要統計的數據,或者是使用該字段的數據執行計算的表達式。expr 中的操作數可包括表字段名或函數名(可以是固有的或者用戶自定義的函數,但不能是其他 SQL 聚合函數)。可以統計包括文本在內的任何類型數據。
說明
可以使用 Count 來統計基本查詢的記錄數。例如,可以通過 Count 來統計已發往特定城市的定單數目。
盡管 expr 能夠對字段執行計算,但是 Count 僅僅計算出記錄的數目。記錄中所存儲的數值類型與計算無關。
Count 函數不統計包含 Null 字段的記錄,除非 expr 是星號 (*) 通配符。如果使用了星號通配符,Count 會計算出包括包含 Null 字段在內的所有記錄的數目。使用 Count(*) 方式比使用 Count([Column Name])方式快很多。不要用單引號 (' ') 將星號括起來。下面的示例計算 Orders 表中的記錄數目。
SELECT Count(*)
AS TotalOrders FROM Orders;
如果 expr 標識多個字段,那么 Count 函數僅統計至少有一個字段為非 Null 值的記錄。如果所有指定字段均為 Null 值,那么該記錄不被統計在內。可以使用 & 號分隔字段名。下面的示例顯示了如何將計算限於那些 ShippedDate 或 Freight 為非 Null 值的記錄:
SELECT
Count('ShippedDate & Freight')
AS [Not Null] FROM Orders;
可以在查詢表達式中使用 Count。也可以將該表達式用於 QueryDef 對象的 SQL 屬性中,或者在基於 SQL 查詢創建 Recordset 對象時使用該表達式。
First、Last 函數
返回在查詢所返回的結果集中的第一個或者最后一個記錄的字段值。
語法
First(expr)
Last(expr)
expr 占位符代表一個字符串表達式,它標識了包含您要使用的數據的字段,或者是使用該字段中的數據執行計算的表達式。expr 中的操作數可以包括表字段、常量或函數(可以是固有的或者用戶自定義的函數,但不能是其他 SQL 聚合函數)的名稱。
說明
First 和 Last 與 DAO Recordset 對象的MoveFirst 和 MoveLast 方法相似。它們只是分別返回查詢所返回結果集中第一個或最后一個記錄中指定字段的值。因為記錄通常以非特定順序返回(除非查詢中包含了 ORDER BY 子句),所以這些函數返回的記錄是任意的。
Min、Max 函數
返回包含在查詢的指定字段內的一組值中的最小和最大值。
語法
Min(expr)
Max(expr)
expr 占位符代表一個字符串表達式,它標識了包含要計算的數據的字段,或者是使用該字段中的數據執行計算的表達式。expr 中的操作數可包括表字段、常量或函數(可以是固有的或用戶自定義的函數,但不能是其他 SQL 聚合函數)的名稱。
說明
通過 Min 和 Max,可以基於指定的聚合(或分組)來確定字段中的最小和最大值。例如,可以通過這些函數來返回最低和最高的運費。如果沒有指定聚合函數,將使用整個表。
可以將 Min 和 Max 用在查詢表達式中和 QueryDef 對象的 SQL 屬性中,或者在基於 SQL 查詢創建 Recordset 對象時使用這些表達式。
StDev、StDevP 函數
返回以包含在查詢的指定字段內的一組值作為總體樣本或總體樣本抽樣的標准偏差的估計值。
語法
StDev(expr)
StDevP(expr)
expr 占位符代表字符串表達式,它標識了包含您希望計算的數據的字段,或者是使用該字段中的數據執行計算的表達式。expr 中的操作數可包括表字段、常量或函數(可以是固有的或者用戶自定義的函數,但不能是其他 SQL 聚合函數)的名稱。
說明
StDevP 函數對總體樣本進行計算,StDev 函數對總體樣本抽樣進行計算。
如果基礎查詢包含少於兩個的記錄(或者沒有記錄,對於 StDevP 函數),那么,這些函數將返回 Null 值(表示無法計算標准偏差)。
您可以在查詢表達式中使用 StDev 和 StDevP 函數。也可以將該表達式用於 QueryDef 對象的 SQL 屬性,或者在基於 SQL 查詢來創建 Recordset 對象時使用它們。
Sum 函數
返回在查詢的指定字段中所包含的一組值的總和。
語法
Sum(expr)
expr 占位符代表字符串表達式,它標識了包含要添加的數字數據的字段,或者是使用該字段中的數據執行計算的表達式。expr 中的操作數可包括表字段、常量或函數(可以是固有的或者用戶自定義的函數,但不能是其他 SQL 聚合函數)的名稱。
說明
Sum 函數計算字段值的總和。例如,可以使用 Sum 函數來確定運貨的總費用。
Sum 函數將忽略包含 Null 字段的記錄。下面的示例展示了如何計算 UnitPrice 和 Quantity 字段的產品總和:
SELECT
Sum(UnitPrice * Quantity)
AS [Total Revenue] FROM [Order Details];
可以在查詢表達式中使用 Sum 函數。可以將該表達式用於 QueryDef 對象的 SQL 屬性中,或者在基於 SQL 查詢來創建 Recordset 對象時使用該表達式。
Var、VarP 函數
返回以包含在查詢的指定字段內的一組值為總體樣本或總體樣本抽樣的方差的估計值。
語法
Var(expr)
VarP(expr)
expr 占位符代表字符串表達式,它標識了包含您要計算的數字數據的字段,或者是使用該字段中的數據執行計算的表達式。expr 中的運算符可以包括表字段、常量或者函數(可以是固有常量,也可以是用戶自定義的函數,但不能是其他 SQL 聚合函數)的名稱。
說明
VarP 函數計算總體樣本,Var 函數計算總體樣本抽樣。
如果基礎查詢中包含了兩個以下個記錄,那么 Var 和 VarP 函數返回 Null 值,這表示無法計算方差。
可以在查詢表達式或 SQL 語句中使用 Var 和 VarP 函數。
IsError 函數
返回 Boolean 值,該值指示表達式是否是錯誤值。
語法
IsError(expression)
必選參數 expression 可以是任何有效的表達式。
說明
錯誤值是通過使用 CVErr 函數將真實數字轉換為錯誤值而創建的。IsError 函數用於確定數字表達式是否表示錯誤。如果 expression 參數表示錯誤,則 IsError 返回 True。否則,返回 False。
Day 函數
返回 Variant (Integer),該返回值指定介於 1 與 31 之間的整數(含 1 和 31),代表月中的日期。
語法
Day(date)
date 參數是必選的,它是能夠代表日期的任何 Variant、數值表達式、字符串表達式或上述任意組合。如果 date 包含 Null,那么將返回 Null。
注釋 如果 Calendar 屬性設置是公歷,那么返回的整數將代表 date 參數的月部分的公歷日。如果 Calendar 是回歷,那么返回的整數將代表 date 參數的月部分的回歷日。
使用 SQL 函數計算字段
可以在 SQL 聚合函數中使用字符串表達式參數來計算字段中的值。例如,通過將分數乘以值可以計算百分比(如附加費或營業稅)。
下表提供了對 Northwind.mdb 數據庫中的“訂單”表和“訂單明細”表上的字段進行計算的示例。
計算 |
示例 |
字段加一個數 |
Freight + 5 |
字段減一個數 |
Freight - 5 |
字段乘以一個數 |
UnitPrice * 2 |
字段除以一個數 |
Freight / 2 |
字段與其他字段相加 |
UnitsInStock + UnitsOnOrder |
字段減去其他字段 |
ReorderLevel - UnitsInStock |
下面的示例用於計算 Northwind.mdb 數據庫中所有訂單的平均折扣量。UnitPrice 字段值和 Discount 字段值相乘用於確定每一個訂單的折扣數量,然后再計算它們的平均值。可以在 Visual Basic 代碼內的 SQL 語句中使用這個表達式:
SELECT Avg(UnitPrice * Discount) AS [Average Discount] FROM [Order Details];
Hour 函數
返回 Variant (Integer) 值,該值指定 0 和 23 之間(包括 0 和 23)的整數(表示一天中某個小時)。
語法
Hour(time)
必選參數 time 是可以表示時間的任何變量、數值表達式、字符串表達式或任何組合。如果 time 包含 Null,則返回 Null。
IsEmpty 函數
返回 Boolean 值,該值指示變量是否已初始化。
語法
IsEmpty(expression)
必選參數 expression 是包含數值或字符串表達式的變量。但是,因為 IsEmpty 用於確定單個變量是否已初始化,所以 expression 參數是大多數情況下是單個變量名。
說明
如果變量未初始化或被顯式設為 Empty,則 IsEmpty 返回 True。否則,它會返回 False。如果 expression 包含多個變量,則始終返回 False。IsEmpty 只返回對變體型值有意義的信息。
IsNumeric 函數
返回 Boolean 值,該值指示表達式的計算結果是否是數字。
語法
IsNumeric(expression)
必選參數 expression 是包含數值表達式或字符串表達式的變量。
說明
如果將整個 expression 被識別為數字,則 IsNumeric 返回 True。否則,返回 False。
如果 expression 是日期表達式,則 IsNumeric 返回 False。
FormatDateTime 函數
說明
返回設置為日期或時間格式的表達式。
語法
FormatDateTime(Date[,NamedFormat])
FormatDateTime 函數語法具有以下幾部分:
部分 |
說明 |
Date |
必選。要格式化的日期表達式。 |
NamedFormat |
可選。指示所使用的日期/時間格式的數值。如果忽略,則使用 vbGeneralDate。 |
設置
NamedFormat 參數具有以下設置:
常量 |
值 |
說明 |
vbGeneralDate |
0 |
顯示日期和/或時間。如果有日期部分,則將它顯示為短日期。如果有時間部分,則將它顯示為長時間。如果這兩部都有,則都會顯示。 |
vbLongDate |
1 |
使用在計算機的區域設置中指定的長日期格式來顯示日期。 |
vbShortDate |
2 |
使用在計算機的區域設置中指定的短日期格式來顯示日期。 |
vbLongTime |
3 |
使用在計算機的區域設置中指定的時間格式來顯示時間。 |
vbShortTime |
4 |
使用 24 小時格式 (hh:mm) 來顯示時間。 |
Asc 函數
返回 Integer 值,該值代表一個字符代碼,此字符代碼對應於字符串中的第一個字母。
語法
Asc(string)
必選參數 string 是任何有效的字符串表達式。如果 string 未包含任何字符,將產生運行時錯誤。
說明
在非 DBCS 系統中,返回值的范圍為 0 到 255,在 DBCS 系統中,為 –32768 到 32767。
注釋 AscB 函數用於包含在字符串中的字節數據。AscB 返回的不是第一個字符的字符代碼,而是返回第一個字節。AscW 函數將返回 Unicode 字符代碼(在不支持 Unicode 的平台上除外,在這種情況下,其行為與 Asc 函數相同)。
注釋 Visual Basic for Macintosh 不支持 Unicode 字符串。因此,AscW(n) 無法像在 Windows 環境中那樣返回范圍在 128 到 65,535 之間的值 n 的所有 Unicode 字符。AscW(n) 將試圖對大於 127 的 Unicode 值 n 進行“最佳猜測”。因此,不應該在 Macintosh 環境中使用 AscW。
SLN 函數
返回 Double 值,該值指定資產的每期線性折舊費。
語法
SLN(cost, salvage, life)
SLN 函數具有下面這些命名參數:
部分 |
說明 |
cost |
必選。Double 值,該值指定資產的初始成本。 |
salvage |
必選。Double 值,該值指定使用期結束時資產的值。 |
life |
必選。Double 值,該值指定資產使用期的長度。 |
說明
折舊期限的單位必須與 life 參數的單位相同。所有參數都必須是正數。
TimeSerial 函數
返回 Variant (Date) 值,該值包含具體的時、分、秒時間。
語法
TimeSerial(hour, minute, second)
TimeSerial 函數語法具有下面這些命名參數:
部分 |
說明 |
hour |
必選;Variant (Integer)。從 0(上午 12:00)到 23(下午 11:00)的數字(包括 0 和 23),或者是數值表達式。 |
minute |
必選;Variant (Integer)。任意數值表達式。 |
second |
必選;Variant (Integer)。任意數值表達式。 |
說明
若要指定時間,如 11:59:59,每個 TimeSerial 參數的數值范圍應該在相應單位的正常范圍內;即小時應該是 0–23,分鍾和秒應該是 0–59。不過,也可在某個時間之前或之后,使用表示小時數、分鍾數或秒數的任意表達式來指定每個參數的相對時間。下面的示例使用了表達式而沒有使用絕對的時間數。TimeSerial 函數將返回中午前六小時 (12 - 6) 再往前的 15 分鍾 (-15),即上午 5:45:00。
TimeSerial(12 - 6, -15, 0)
當任何參數超過了該參數的正常范圍時,它將遞增為下一個更大的單位。例如,如果指定了 75 分鍾,則它將被視為 1 小時 15 分鍾。如果任一參數超出 -32,768 到 32,767 的范圍,將發生錯誤。如果由三個參數指定的時間使日期超出了日期的可接受范圍,將發生錯誤。
在查詢中包括用戶定義函數 (ADP)
注釋 本主題中的信息僅適用於 Microsoft Access 項目 (.adp)。
1. 在“數據庫”窗口中,單擊“對象”下的“查詢”,再單擊要打開的查詢,然后單擊數據庫窗口工具欄上的“設計”。
2. 設計要向其中添加函數的查詢。在“查詢設計器”中,確保“圖表”窗格是可見的。
3. 從函數列表中,將該函數拖到“圖表”窗格上。
1. 在“數據庫”窗口中,單擊“對象”下的“查詢”,再單擊要打開的查詢,然后單擊數據庫窗口工具欄上的“設計”。
2. 設計要向其中添加函數的查詢。在“查詢設計器”中,確保“網格”窗格是可見的。
3. 在“網格”窗格的第一個空行中,在“列”列中輸入函數的名稱。
DSum 函數
DSum 函數可用於計算一組指定記錄(域)中的一組值的總和。可以在 Visual Basic、宏、查詢表達式或計算控件 中使用 DSum 函數。
例如,可以在查詢的計算字段表達式中通過 DSum 函數來計算某一段時間內特定雇員的總銷售量。或者在計算控件中使用 DSum 函數來顯示特定產品的流水銷售總額。
DSum(expr, domain, [criteria])
DSum 函數包含以下參數:
參數 |
說明 |
expr |
表達式,用於標識被計算值的總和的數字字段。它可以是標識表或查詢中的字段的字符串表達式,或者是對該字段中的數據進行計算的表達式。在 expr 中,可以包含表中的字段、窗體上的控件、常量或者函數的名稱。如果 expr 包含函數,那么該函數可以是內置的或用戶定義的,但不能是其他域聚合函數或 SQL 聚合函數。 |
domain |
字符串表達式,用於標識組成域的一組記錄。它可以是不需要參數的查詢的表名或查詢名。 |
criteria |
可選的字符串表達式,用於約束對其執行 DSum 函數的數據的范圍。例如,criteria 常常等價於 SQL 表達式中除去 WHERE 關鍵字的 WHERE 子句。如果 criteria 被忽略,DSum 函數將對整個域計算 expr。任何包含在 criteria 中的字段必須也是 domain 中的字段;否則 DSum 函數將返回 Null 值。 |
說明
如果沒有記錄滿足 criteria 參數或者域中不包含記錄,那么 DSum 函數會返回 Null 值。
不論是否在宏、模塊、查詢表達式或計算控件中使用 DSum 函數,都必須仔細構造 criteria 參數,以確保它將被正確計算。
可以使用 DSum 函數來指定這些情況下的條件:在查詢的條件行中,在查詢表達式內的計算字段中,或者在更新查詢的“更新到”行中。
注釋 可以將 DSum 和 Sum 函數用於總計查詢中的計算字段表達式。如果使用 DSum 函數,將在數據分組之前計算值。如果使用 Sum 函數,則先進行數據分組,然后再計算字段表達式中的值。
需要顯示不在窗體或報表的記錄源中的字段的一組值的總和時,可以使用 DSum 函數。例如,假定有一個顯示特定產品信息的窗體。可以在計算控件中使用 DSum 函數來隨時統計產品的流水銷售總額。
如果需要在報表上某個控件中維持流水總和,假定所基於的字段包含在報表的記錄源中,則可以使用該控件的 RunningSum 屬性。通過 DSum 函數來維持窗體的流水總和。
注釋 使用這些函數時,對 domain 內的記錄的未保存更改不包括在內。如果希望使 DSum 函數基於更改的值,必須先通過單擊“記錄”菜單上的“保存記錄”來保存更改,然后將焦點移動到其他記錄,或者使用 Update 方法。
CurDir 函數
注釋 如果 Microsoft Jet Expression Service 正在沙盒模式下運行(此模式將阻止對可能不安全的表達式進行計算),則本主題中的函數、方法、對象或屬性都將被禁用。有關沙盒模式的詳細信息,請在幫助中搜索“沙盒模式”。
返回一個代表當前路徑的 Variant (String)。
語法
CurDir[(drive)]
可選參數 drive 是一個指定現有驅動器的字符串表達式。如果未指定驅動器或 drive 是一個零長度字符串 (""),那么 CurDir 將返回當前驅動器的路徑。在 Macintosh 上,CurDir 將忽略任何指定的 drive,而只返回當前驅動器的路徑。
Tan 函數
返回 Double 值,該值指定角度的正切值。
語法
Tan(number)
必選參數 number 是任何以弧度表示角度的 Double 值或有效的數值表達式。
說明
Tan 的操作對象是角度,並返回直角三角形兩邊的比率。該比率是在直角三角形中該角度的對邊長度除以鄰邊的長度所得的值。
若要將角度轉換成弧度,請用 pi/180 乘以角度。若要將弧度轉換成角度,請用 180/pi 乘以弧度。
IMEStatus 函數
返回 Integer 值,該值指定 Microsoft Windows 的當前輸入方法編輯器 (IME) 模式。只能在東亞版本中使用。
語法
IMEStatus
返回值
日語區域設置的返回值如下所示:
常量 |
值 |
說明 |
vbIMEModeNoControl |
0 |
不控制 IME(默認值) |
vbIMEModeOn |
1 |
IME 啟用 |
vbIMEModeOff |
2 |
IME 禁用 |
vbIMEModeDisable |
3 |
IME 禁用 |
vbIMEModeHiragana |
4 |
全角平假名模式 |
vbIMEModeKatakana |
5 |
全角片假名模式 |
vbIMEModeKatakanaHalf |
6 |
半角片假名模式 |
vbIMEModeAlphaFull |
7 |
全角字母數字模式 |
vbIMEModeAlpha |
8 |
半角字母數字模式 |
朝鮮語區域設置的返回值如下所示:
常量 |
值 |
說明 |
vbIMEModeNoControl |
0 |
不控制 IME(默認值) |
vbIMEModeAlphaFull |
7 |
全角字母數字模式 |
vbIMEModeAlpha |
8 |
半角字母數字模式 |
vbIMEModeHangulFull |
9 |
全角 Hangul 模式 |
vbIMEModeHangul |
10 |
半角 Hangul 模式 |
中文區域設置的返回值如下所示:
常量 |
值 |
說明 |
vbIMEModeNoControl |
0 |
不控制 IME(默認值) |
vbIMEModeOn |
1 |
IME 啟用 |
vbIMEModeOff |
2 |
IME 禁用 |
Right 函數
返回 Variant (String) 值,該值包含從字符串右側起的指定數量的字符。
語法
Right(string, length)
Right 函數語法具有下面這些命名參數:
部分 |
說明 |
string |
必選。從中返回最右側字符的字符串表達式。如果 string 包含 Null,則將返回 Null。 |
length |
可選;Variant (Long)。指示將返回多少個字符的數值表達式。如果為 0,則返回零長度字符串 ("")。如果大於或等於 string 中的字符串個數,則返回整個字符串。 |
說明
若要確定 string 中的字符數,請使用 Len 函數。
注釋 RightB 函數用於計算字符串中包含的字節數據。需要為該函數的 length 指定字節數,而不是指定要返回的字符數。