MS Access 內建函式



本章我們將學習內建函式。Access 中大約有一百個內建函式,幾乎不可能涵蓋每一個。本章將介紹基本結構、語法,並使用一些常用的函式以及潛在問題,以便您可以自行探索其他函式。

函式

函式是一個 VBA 過程,它執行任務或計算並返回結果。函式通常可以在查詢中使用,但您也可以在其他地方使用函式。

  • 例如,您可以在表屬性中使用函式,如果您想為日期/時間欄位指定預設值,您可以使用 date 或 **Now** 函式從系統中呼叫當前日期/時間資訊,並自動輸入該值。

  • 您還可以在建立計算欄位時在表示式中使用函式,或者在窗體或報表控制元件中使用函式。您甚至可以在宏引數中使用函式。

  • 函式可以很簡單,不需要其他資訊即可呼叫,或者只需引用表或查詢中的一個欄位。

  • 另一方面,它們也可以非常複雜,包含多個引數、欄位引用,甚至在另一個函式中巢狀其他函式。

現在讓我們來看一些使用內建函式的例子。

日期和時間函式

現在讓我們瞭解日期和時間函式:

  • Date() 函式旨在返回當前系統日期。此函式不需要任何函式引數或附加資訊。您只需編寫函式的名稱以及左括號和右括號。

  • 有兩個非常相似的內建函式 Time() 和 Now()。

  • Time() 函式僅返回當前系統時間,而 Now() 函式同時返回當前系統日期和時間。

  • 根據您想要跟蹤、儲存或查詢的資料,您可以使用三個易於使用的內建函式來完成此任務。

現在讓我們開啟您的資料庫,使用查詢設計建立一個新查詢,並新增 tblProjects 和 tblTasks。

Add Tables

從 tblProjects 新增 ProjectName,從 tblTasks 新增 TaskTitle、StartDate 和 DueDate,然後執行您的查詢。

Reconnecting

現在您可以看到所有專案中的所有不同任務。如果您想檢視今天正在進行的專案任務,則必須使用 **Date()** 函式指定條件來檢視今天或之後開始的專案。

現在讓我們在 StartDate 下方指定條件。

Date Function

條件以運算子 **大於符號** 開始,後跟 **等於符號**,然後是 **Date 函式**。

當我們執行此查詢時,所有任務都將發生在今天或將來,如下面的螢幕截圖所示。

Today Date

這是一個關於如何在查詢條件中使用 Date() 函式的示例。

  • 現在讓我們假設此查詢需要在它提取本週開始的日期方面更靈活。

  • 我們確實有一些本週開始的任務,由於我們的條件,這些任務沒有顯示在此當前列表中。它檢視等於或大於今天的開始日期。

如果我們想檢視本週開始、尚未完成或應在今天完成的任務,讓我們返回設計檢視。

在這裡,我們將向這些條件新增一些其他資訊。事實上,我們希望它大於或等於今天的日期減去七天。

Greater Than Date

如果我們鍵入減七並執行查詢,您也可以看到本週開始的任務。

Started Task

DateDiff() 函式

DateDiff() 函式是另一個非常流行的日期/時間函式。DateDiff 函式返回一個 Variant (Long),指定兩個指定日期之間的時間間隔數。換句話說,它計算兩個日期之間的差值,您可以選擇函式計算該差值的間隔。

現在讓我們假設我們想要計算我們作者的年齡。為此,我們首先需要建立一個新查詢並新增我們的作者表,然後新增 FirstName、LastName 和 BirthDay 欄位。

Datediff

我們可以透過計算他們的出生日期或生日與今天的日期之間的差值來計算人們的年齡。

讓我們嘗試在新欄位中使用 DateDiff 函式。

Add Datediff

讓我們將其命名為 Age,後跟冒號,然後編寫 DateDiff 函式。

  • DateDiff 函式的第一個函式引數是間隔,因此鍵入“yyyy”。
  • 下一個函式引數是我們想要根據其計算的第一個日期,在本例中為 Birthday 欄位。
  • 第三個函式引數是今天的日期。

現在,執行您的查詢,您將看到顯示每個作者年齡的新欄位。

Age of Each Author

Format() 函式

Format() 函式返回一個字串,其中包含根據格式表示式中的說明格式化的表示式。以下是可在 Format() 函式中使用的使用者定義格式列表。

設定 描述
yyyy
q 季度
m
y 一年中的第幾天
d
w 星期幾
ww
h 小時
n 分鐘
s

現在讓我們回到您的查詢,並使用 Format() 函式在其中新增更多欄位。

Format Function

鍵入 Format 函式。第一個函式引數可以幾乎是任何東西。現在讓我們將 birthday 欄位作為第一個,接下來要編寫我們的格式。在本例中,我們需要月、月、日、日。在引號中寫入“mmdd”,然後執行您的查詢。

Argument Expression

它現在正在從 birthday 欄位獲取日期,4 是月份,17 是日期。

讓我們在接下來的欄位中新增“mmm”和“mmmm”代替“mmdd”,如下面的螢幕截圖所示。

Add Month

執行您的查詢,您將看到結果,如下面的螢幕截圖所示。

Month Name

在下一個欄位中,它將返回該生日月份名稱的前 3 個字元,在最後一個欄位中,您將獲得完整的月份名稱。

要檢視生日後的月份和年份,讓我們也新增“yyyy”,如下面的螢幕截圖所示。

Year

讓我們再次執行您的查詢。

Month Year

您現在將看到月份後跟逗號,然後是年份。

IIf() 函式

IIf() 函式是“立即 If”的縮寫,此函式將表示式計算為真或假,併為每個表示式返回一個值。它最多有三個函式引數,所有引數都是必需的。

  • 第一個引數是您想要計算的任何表示式。
  • 下一個引數代表真部分,如果您的第一個表示式為真,則可以返回一個值或表示式。
  • 最後一個引數是如果您的表示式為假,您想要返回的內容。

示例

讓我們來看一個簡單的例子。我們將使用查詢設計建立一個新查詢並新增 tblAuthors 表,然後新增以下欄位。

Immediate If

現在您可以看到我們有三個欄位——FirstName、MiddleInitial、LastName,然後是這個連線欄位,它將所有三個欄位組合在一起。讓我們執行您的查詢以檢視此查詢的結果。

Concat Fields

現在,您可以看到查詢的結果,但您還會注意到有些記錄沒有中間首字母。例如,Joyce Dyer 記錄沒有中間首字母,但在 FullName 欄位中,您會看到實際上不需要的句點。因此,返回設計檢視。在這裡,我們將使用 IIf 函式以不同的方式連線名稱。

Different Way

讓我們在另一個欄位中寫入名稱,並將其命名為 FullName1,然後鍵入 IIf 函式。

  • 立即IF函式的第一個函式引數將是您的表示式。在表示式中,我們將檢視中間名欄位是否為空或為Null。

  • 下一個引數是真值部分。因此,如果中間名為空,則我們希望顯示FirstName和LastName。

  • 現在,對於我們的假值部分——如果MiddleInitial不為空,則我們希望顯示FirstName、MiddleInitial和LastName。

現在讓我們執行您的查詢,您將看到如下截圖所示的結果。

Display Result
廣告
© . All rights reserved.