在 Access 中的 IP 地址进行排序

注意: 我们希望能够尽快以你的语言为你提供最新的帮助内容。本页面是自动翻译的,可能包含语法错误或不准确之处。我们的目的是使此内容能对你有所帮助。可以在本页面底部告诉我们此信息是否对你有帮助吗?请在此处查看本文的英文版本以便参考。

本主题介绍排序 Internet 协议 (IP) 地址Access数据库中存储的过程。

简介

如果您使用的 IP 地址,您可能已经知道不为使用文本或数字一样简单。这是因为 IP 地址是真正的分隔以句点 (.),其中每个值是一个介于 0 到 255 的四个数值集。下表显示数据之前应用按任何顺序排序。

计算机 Id

Employee

位置

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 地址字段的字母顺序排在上表中的地址。

计算机 Id

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,等等。下表中正确升序顺序显示的地址。

计算机 Id

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 地址。地址必须通过的第一部分,然后每个值中的第一部分,然后按第二部分中,进行排序,依此类推。下表显示不同的列中的每个部分,因为列包含简单的数值,就可以从左到右的列排序升序排序,如下表所示。

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 地址字段中,每列在其中存储的地址值的一部分的四个计算的列。第一个计算的列将保持地址数值的第一部分,第二个计算列将包含地址等的第二个数值部分。而不是按 ip 地址字段的记录进行排序,查询将记录排序通过四个计算列。

创建查询

您将创建名为进行排序,用于按 IP 地址的升序顺序显示的记录的选择查询。假定当前的数据库具有名为 MachineDetails 包含名为 ip 地址的文本字段的表。

  1. 单击创建>查询设计。请注意,如果您使用 Access 2007 中,在创建选项卡上的中其他组中,单击查询设计

  2. 显示表对话框中,在表格选项卡上,单击MachineDetails ,然后单击添加。关闭对话框。

  3. 将计算机 Id 和 ip 地址字段拖动到查询设计网格中。

  4. 现在您可以添加计算的列。在第一个空白列右侧,键入表达式PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".")-1)))字段行中。该表达式返回第一个句点 (.) 前面 ip 地址字段中的字符。

    现在,检查表达式。由于您不知道多少位数组成地址的第一部分,您可以使用InStr函数来查找第一个期间的位置。减去 1 (排除句点) 返回的第一部分中的位数。然后使用此数字Left函数提取该数目的字符,从最左侧的字符,从 ip 地址字段。最后,调用Val函数将转换成数字Left函数返回的字符。此最后一步是必需的因为基础数据类型是文本。

  5. 通过单击快速访问工具栏上的保存保存该查询。最好执行此操作后每个中间步骤。

  6. 添加的列中的第二个地址部分。在右侧的 PartI 列中,键入PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".")+1,InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")-InStr(1,[IPAddress],".")-1))字段行中。该表达式返回位于 ip 地址字段中第一个和第二个付款期之间的字符。

    再次检查表达式。您不知道多少位数组成地址的第二部分或第二部分具体从哪里开始 (因为没有多长时间的第一部分是),因为使用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))字段行中。该表达式返回位于 ip 地址字段中第二个和第三个付款期之间的字符。

    再次检查表达式。您不知道多少位数组成地址的第三部分或第三部分具体从哪里开始 (因为您不知道多长时间的第一个和第二部分是),因为使用InStr函数来找到时间段的位置。然后使用Mid函数提取的字符后面的第二个期间但前面第三个时间段。最后,您可以呼叫Val函数将转换成数字Mid函数返回的字符。此最后一步是必需的因为基础数据类型是文本。

  8. 添加的列中的第四个和最终地址部分。在右侧的 PartIII 列中,键入PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")+1,[IPAddress],".")))字段行中。该表达式返回后面的最后一个期间的字符。

    再次检查表达式。密钥是查找第三个时间段的位置,然后提取其后的所有字符。由于您不知道完全第三个时间段所在的位置,请三次调用InStr函数来查找第三个时间段的位置。然后使用Len函数来计算第四部分的位数。返回的位数然后通过使用Right函数从右侧部分的 ip 地址字段中提取该数目的字符。最后,您可以呼叫Val函数将转换成数字Mid函数返回的字符。此最后一步是必需的因为基础数据类型是文本。

  9. 将所有四个计算列的排序行设置为升序

    重要   排序行中的 ip 地址列中必须保留为空。

    如果您想要的其他字段值排序,除了地址,将字段放到左侧或右侧的所有四个计算的列。不要放置在计算列之间的其他排序字段。

  10. 下一步是隐藏在数据表中的四个计算的列。但在您之前执行,请切换到数据表视图,以查看计算列中的表达式的结果。下表显示了您将看到数据表视图中的列。

    计算机 Id

    Ip 地址

    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 支持专员。

×