排序 IP 位址

重要:  本文係由機器翻譯而成,請參閱免責聲明。本文的英文版本請見這裡,以供參考。

本主題描述排序 Microsoft Office Access 2007 資料庫中儲存之網際網路通訊協定 (IP) 位址的程序。

本文內容

簡介

建立查詢

更多排序 IP 位址的使用

簡介

如果您使用 IP 位址,可能已經知道它不像使用文字或數字一樣簡單明了。這是因為 IP 位址實際上是以句點 (.) 分隔之四個數值的集合,其中每個值都是介於 0 到 255 之間的數字。下表顯示套用任何排序順序之前的資料。

機器識別碼

員工

位置

IP 位址

1

...

...

123.4.245.23

2

...

...

104.244.253.29

3

...

...

1.198.3.93

4

...

...

32.183.93.40

5

...

...

104.30.244.2

6

...

...

104.244.4.1


由於 Access 不提供儲存 IP 位址的特殊資料類型,因此在 Access 中排序 IP 位址很有挑戰性。因為數值欄位只支援單一小數點 (.),而 IP 位址包含三個句點 (.),所以雖然 IP 位址只是數字的集合,但是並不能在數值欄位中儲存 IP 位址。這表示必須在文字欄位中儲存位址。

因為是在文字欄位中儲存 IP 位址,所以不能使用 Access 中的內建排序按鈕以有意義的方式排序位址。即使文字欄位中的字元是數字,排序按鈕也一律會以字母順序排序其中的值。換句話說,位址是依照第一個數字,然後第二個數字的順序排序,而不是以組成位址的數值順序排序。下表顯示前一表格中 [IP 位址] 欄位上依照字母順序排序的位址。

機器識別碼

IP 位址

3

1.198.3.93

2

104.244.253.29

6

104.244.4.1

5

104.30.244.2

1

123.4.245.23

4

32.183.93.40


以 1 開頭的位址出現在以 2 開頭的位址之前,依此類推。下表顯示以正確 遞增順序排列的位址。

機器識別碼

IP 位址

3

1.198.3.93

4

32.183.93.40

5

104.30.244.2

6

104.244.4.1

2

104.244.253.29

1

123.4.245.23


為了讓排序這些位址所涉及的步驟更易於了解,可以將 IP 位址分成四個數值部分。位址的排序順序必須是第一部分、第一部分的每個值、第二部分,依此類推。下表在不同的欄中顯示每一個部分,而且因為欄中都是簡單的數值,所以就可以依照遞增順序從左到右排序各欄,如下表所示。

第一部分

第二部分

第三部分

第四部分

1

198

3

93

32

183

93

40

104

30

244

2

104

244

4

1

104

244

253

29

123

4

245

23


分別對四部分進行排序是排序 IP 位址的訣竅。在下列程序中,您會建立一個查詢,其除了包括 IP 位址欄位之外,還包括四個計算結果欄,其中每個欄儲存位址值的一部分。第一個計算結果欄保留位址的第一個數值部分,第二個計算結果欄保留位址的第二個數值部分,依此類推。查詢將依照四個計算結果欄,而不是依照 [IP 位址] 欄位來排序記錄。

頁面頂端

建立查詢

建立名為 [已排序 IP 位址] 的選取查詢,其會以 IP 位址的遞增順序顯示記錄。假設目前的資料庫具有名為 [機器詳細資料] 的資料表,該資料表包括名為 [IP 位址] 的文字欄位。

  1. [建立] 索引標籤上,按一下 [其他] 群組中的 [查詢設計]

  2. 在 [顯示資料表] 對話方塊中,按一下 [資料表] 索引標籤上的 [機器詳細資料],然後按一下 [新增]。關閉對話方塊。

  3. 將 [機器識別碼] 及 [IP 位址] 欄位拖曳到查詢設計格線。

  4. 您已準備好加入導出資料行。在右側的空白第一欄,輸入運算式PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".")-1)))欄位] 列中。運算式會傳回前面 IPAddress 欄位中的第一個句號 (.) 的字元。

    現在,檢閱運算式。您不知道多少位數構成第一部分的地址,因為您使用InStr函數,若要尋找的第一個期間的位置。減去 1 (若要排除期間) 會傳回第一個組件中的位數。然後,您使用這個數字Left函數來擷取的多個字元,從左邊的字元,從 IPAddress 欄位開始。最後,呼叫Val函數將左側函數將數字傳回的字元。因為基礎的資料類型是文字,才能使用此最後一個步驟。

  5. 按一下 [快速存取工具列] 上的 [儲存],儲存查詢。請在每個中繼步驟之後執行此動作。

  6. 新增第二個地址組件的欄。在右側的 PartI 欄中,輸入PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".")+1,InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")-InStr(1,[IPAddress],".")-1))欄位] 列中。運算式會傳回位於 [IPAddress] 欄位中的第一個和第二個週期之間的字元。

    同樣地,檢閱運算式。因為您不知道多少位數構成地址的第二部分或完全第二部分的開始位置 (因為您不是多久第一部分),您可以使用InStr函數尋找期間的位置。然後,您使用Mid函數來擷取的第一個期間但字元在前面的第二個期間。最後,您可以撥打Val函數將轉換成數個Mid函數所傳回的字元。因為基礎的資料類型是文字,才能使用此最後一個步驟。

  7. 新增第三個地址組件的欄。在右側的 PartII 欄中,輸入PartIII: Val(Mid([IPAddress],InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")+1,InStr(InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")+1,[IPAddress],".")-InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")-1))欄位] 列中。運算式會傳回位於 [IPAddress] 欄位中的第二個和第三個週期之間的字元。

    再次檢閱運算式。由於您不知道組成位址第三部分的數字位數,或者第三部分的確切開始位置 (因為不知道第一部分及第二部分的長度),所以會使用 InStr 函數找到句點的位置。然後使用 Mid 函數擷取第二個句點之後與第三個句點之前的字元。最後,呼叫 Val 函數,將 Mid 函數傳回的字元轉換成數字。因為基本資料類型是 [文字],所以最後一個步驟是必要的。

  8. 新增第四個和最後一個地址組件的欄。在右側的 PartIII 欄中,輸入PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")+1,[IPAddress],".")))在 [欄位] 列中。運算式會傳回最後一期的字元。

    同樣地,檢閱運算式。索引鍵是尋找第三個期間的位置,然後從其中擷取的所有字元。您不知道完全第三個期間的所在位置,因為您撥InStr函數三次尋找第三個期間的位置。然後,您使用Len函數來計算第四個組件中的數字數目。傳回數字數目然後使用擷取 IPAddress 欄位的右邊的字元, Right函數。最後,您可以撥打Val函數將轉換成數個Mid函數所傳回的字元。因為基礎的資料類型是文字,才能使用此最後一個步驟。

  9. 將所有四個計算結果欄的 [排序] 列設為 [遞增]。

    重要    必須將 [IP 位址] 欄的 [排序] 列留為空白。

    如果您除了依照位址之外,還要依照其他欄位值來排序,請將欄位置於「全部四個計算結果欄」的左側或右側。切勿將其他排序欄位置於計算結果欄之間。

  10. 下一個步驟是在資料工作表中隱藏四個計算結果欄。但是在此之前,請切換至 [資料工作表檢視],查看計算結果欄中運算式的結果。下表顯示您會在 [資料工作表檢視] 中看到的欄。

機器識別碼

IP 位址

第一部分

第二部分

第三部分

第四部分

3

1.198.3.93

1

198

3

93

4

32.183.93.40

32

183

93

40

5

104.30.244.2

104

30

244

2

6

104.244.4.1

104

244

4

1

2

104.244.253.29

104

244

253

29

1

123.4.245.23

123

4

245

23

  1. 切換回 [設計檢視],清除所有四個計算結果欄內 [顯示] 列中的核取方塊。這會防止在 [資料工作表檢視] 中顯示計算結果欄。

  2. 選擇性地指定從查詢中排除記錄的準則。

  3. 切換至 [資料工作表檢視],查看以排序順序顯示記錄。您將看到以 IP 位址的遞增順序正確排列的記錄。

頁面頂端

已排序 IP 位址的其他用途

在資料輸入期間驗證 IP 位址

如果您要驗證地址,而不需要撰寫程式碼,您可以執行有限的程度#欄位的[輸入遮罩]屬性設定。 ## #。 # # #。 # # #; 0; 」「的 IP 位址欄位的 [格式] 屬性和& & & & & & & & & & & &

輸入遮罩會做什麼?當您開始在位址欄位中進行輸入時,輸入遮罩會防止您在三個句點之間輸入數字及空格以外的字元。如果數值部分是雙位數字,可以將第三位數留為空白或者輸入空格。請注意,如果使用者在位址的一個或多個部分中未輸入內容,或者只輸入空格而沒有輸入數值,此遮罩並不提出警告。例如,會接受 "345. .3. " 做為有效的位址。

顯示格式會做什麼?當您完成輸入並離開欄位時,顯示格式會移除位址中的空格,而只顯示數字及句點。所以,如果輸入 "354.35 .2 .12 ",則位址會顯示為 "354.35.2.12"。請注意,如果在位址中按一下,或者在選取位址時按 F2 鍵 (進入編輯模式),空格將重新出現。

提示: 如果您要複製位址,移至前一個欄或控制項,按 TAB 鍵選取已格式化的位址,然後按一下 [複製]。執行此動作,所複製的位址字串不會包含空格。

依照 IP 位址排序表單或報表中的記錄

如果需要建立表單或報表,且其中的記錄需要依照 IP 位址排序,則新物件要以前述之排序位址的查詢為基礎,而不要以儲存位址的表格為基礎。

頁面頂端

附註: 機器翻譯免責聲明︰本文係以電腦系統翻譯而成,未經人為介入。Microsoft 提供此等機器翻譯旨在協助非英語系使用者輕鬆閱讀 Microsoft 產品、服務及技術相關內容。基於本文乃由機器翻譯而成,因此文中可能出現詞辭、語法、文法上之錯誤。

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×