在 Access 中的排序 IP 位址

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

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

簡介

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

MachineID

員工

位置

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. 按一下 [建立>查詢設計。 

  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函數來計算第四個組件中的位數。 傳回數然後搭配Right函數來從 IPAddress 欄位的右方擷取很多字元。 最後,您可以呼叫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 支援專員連絡以深入了解您的意見。

×