在 Access 中的排序 IP 位址

附註: 我們想要以您的語言,用最快的速度為您提供最新的說明內容。本頁面是經由自動翻譯而成,因此文中可能有文法錯誤或不準確之處。讓這些內容對您有所幫助是我們的目的。希望您能在本頁底部告訴我們這項資訊是否有幫助。此為英文文章出處,以供參考。

本主題說明排序儲存Access資料庫中的網際網路通訊協定 (IP) 地址的程序。

簡介

如果您使用的 IP 位址,您可能已經知道這並非使用文字或數字為乾淨的簡單。這是因為 IP 位址是以句點 (.),其中每個值是介於 0 到 255 的四個數值的集合。下表會顯示資料之前就會套用任何排序順序。

MachineID

Employee

位置

IPAddress

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 中使用內建的排序] 按鈕以有意義的方式排序地址。[排序] 按鈕一律排序依字母順序文字欄位中的值,即使字元都是數字。換句話說,地址所依據的第一位數,然後第二個位數,並等等,而不是以數字值組成的地址。下表顯示 IPAddress 欄位上,依字母順序排序的前一個資料表中的地址。

MachineID

IPAddress

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,依此類推地址。下表中的正確遞增順序顯示地址。

MachineID

IPAddress

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 位址到四個數值的部分。地址進行排序的第一個部分,然後為第一組件中,每個值,然後第二部分,依此類推。下表顯示不同資料行中的每一個部分,因為欄按住簡單的數值,就可以從左到右的資料行排序以遞增順序] 下表所示。

PartI

PartII

PartIII

PartIV

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 位址] 欄位中,儲存每個資料欄的地址值的組件的四個導出資料行。第一個導出資料行會保留地址的第一個數字部分,第二個導出資料行就會保存第二個數值的組件的地址,依此類推。而非排序 IPAddress 欄位的記錄,查詢會四個導出資料行排序記錄。

建立查詢

您將建立選取查詢命名為顯示記錄的 IP 位址的遞增順序排序 IPAddresses。假設目前的資料庫有一個名為 MachineDetails 包含名為 IPAddress 的文字欄位的資料表。

  1. 按一下 [建立] >查詢設計。請注意,如果您使用 Access 2007 中,按一下 [建立] 索引標籤的 [其他] 群組中的 [查詢設計

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

  3. 將 [MachineID] 和 [IPAddress 欄位拖曳到 [查詢設計格線。

  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. 將所有四個導出資料行 [排序] 資料列設定為 [遞增]

    重要   必須空白 IPAddress 資料行的 [排序] 資料列。

    如果您想要作為排序依據的其他欄位值,除了地址,將欄位放到左邊或右邊的所有四個導出資料行。無法將導出資料行之間的其他排序欄位。

  10. 下一步是隱藏從資料工作表的四個導出資料行。但之前執行的切換至 [資料工作表檢視以查看導出資料行中的運算式的結果。下表顯示的資料行,您會看到 [資料工作表檢視] 中。

    MachineID

    IPAddress

    PartI

    PartII

    PartIII

    PartIV

    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

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

  12. 或者,您可以指定準則的查詢排除記錄。

  13. 切換至 [資料工作表檢視],請參閱排序順序中的記錄。您會看到正確的 IP 位址的遞增順序排序的記錄。

更多排序 IP 位址的使用

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

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

輸入的遮罩的做什麼?當您開始在 [位址] 欄位中輸入輸入的遮罩可讓您輸入非數字與三個週期之間的空格字元。如果數字的部分兩的數字,留第三個字,或改為輸入一個空格。請注意,此輸入的遮罩不會警告使用者如果他略過輸入一或多個部分的地址或類型只空格,而非數字的值。例如,「 345。。3.」 會接受為有效地址。

顯示格式的做什麼?當您完成輸入,並保留欄位時,顯示格式會移除空格的地址,並顯示數字和週期。因此,如果您輸入 「 354.35.2.12 」,地址會顯示為 「 354.35.2.12 」。請注意,如果您按一下地址,或按下 F2 (輸入編輯模式) 選取地址時,會出現空格。

提示: 如果您想要複製的地址,移至前一欄或控制項,按下 TAB 鍵以選取的格式設定的地址,然後按一下 [複製。如此一來,您將不會複製的地址字串包含空格。

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

如果您需要建立表單或報表的記錄依據的 IP 位址,排序如上所述,而不是在表格儲存地址的地址的查詢為基礎的新的物件。

頁面頂端

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

這項資訊有幫助嗎?

感謝您的意見反應!

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

×