Access で IP アドレスを並べ替える

注: 最新のヘルプ コンテンツをできるだけ早く、お客様がお使いの言語で提供したいと考えております。このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。私たちの目的は、このコンテンツがお客様の役に立つようにすることです。お客様にとって役立つ情報であったかどうかを、このページの下部でお知らせください。簡単に参照できるように、こちらに英語の記事があります。

このトピックでは、 Accessデータベースに格納されているインターネットプロトコル (IP) アドレスを並べ替える手順について説明します。

概要

IP アドレスを使用している場合は、テキストや数値を操作するのと同じくらい簡単ではないことがわかっている可能性があります。これは、IP アドレスが実際にはピリオド (.) で区切られた4つの数値の集合であり、それぞれの値が 0 ~ 255 の数値であるためです。次の表は、並べ替え順序が適用される前のデータを示しています。

MachineID

Employee

場所

system.devices.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 アドレスには3つのピリオド (.) が含まれているためです。これは、テキストフィールドに住所を保存する必要があることを意味します。

テキストフィールドに IP アドレスを保存しているため、Access の組み込みの並べ替えボタンを使用して、わかりやすい方法でアドレスを並べ替えることはできません。[並べ替え] ボタンでは、文字が数値の場合でも、常にテキストフィールドの値がアルファベット順に並べ替えられます。つまり、アドレスは、住所を構成する数値ではなく、最初の桁の順に並べ替えられます。次に、2番目の数字を指定します。次の表では、前の表のアドレスが ip フィールドのアルファベット順に並べ替えられています。

MachineID

system.devices.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

system.devices.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 アドレスを4つの数値の部分に分割します。アドレスは、最初の部分によって並べ替えられ、最初の部分の各値について、次に2番目の部分によって並べ替える必要があります。次の表に示すように、列には単純な数値が格納されているため、テーブルには各部分が異なる列に表示され、列を左から右に昇順で並べ替えることができます。

その

その

3

その

1

198

3

93

32

183

93

40

104

30

244

2

104

244

4

1

104

244

253

29

123

4

245

23

4つの部分を別々に並べ替えることは、IP アドレスの並べ替えの背後にあるトリックです。次の手順では、[IP アドレス] フィールドに加えて、各列にアドレス値の一部が格納されている4つの計算列が含まれているクエリを作成します。最初の計算列はアドレスの最初の数値部分を保持し、2番目の計算列はアドレスの2番目の数値部分を保持します。[ip アドレス] フィールドでレコードを並べ替える代わりに、クエリでは4つの計算列を使ってレコードを並べ替えることができます。

クエリを作成する

[並べ替えられた IPAddresses] という名前の選択クエリを作成して、レコードを IP アドレスの昇順で表示します。現在のデータベースに、MachineDetails という名前のテーブルがあり、ip アドレスという名前のテキストフィールドが含まれていることを前提とします。

  1. [作成]、[クエリデザイン] の順にクリックします。注: Access 2007 を使用している場合は、[作成] タブの [その他] グループで [クエリデザイン] をクリックします。

  2. [テーブルの表示] ダイアログボックスの [テーブル] タブで、[ MachineDetails ] をクリックし、[追加] をクリックします。ダイアログボックスを閉じます。

  3. MachineID と ip アドレスフィールドをクエリデザイングリッドにドラッグします。

  4. これで、集計列を追加する準備が整いました。右側の1番目の空白の列で、「InStr」と入力します。次のように、式を指定します。-1) )) をフィールド行に入力します。式は、ip アドレスフィールドの最初のピリオド (.) の前にある文字を返します。

    次に、式を確認します。アドレスの最初の部分を構成する数字の数がわからないため、 InStr関数を使用して、最初のピリオドの位置を検索します。1を減算すると (ピリオドを除く)、最初の部分の桁数が返されます。その後、 Left関数を使ってこの数値を使用して、左端の文字から開始する多くの文字を ip アドレスフィールドから抽出します。最後に、 Val関数を呼び出して、 Left関数によって返される文字を数値に変換します。この最後の手順は、基になるデータ型がテキストであるために必要です。

  5. クイックアクセスツールバーの [保存] をクリックして、クエリを保存します。これは、各中間ステップの後に行うことをお勧めします。

  6. 2番目のアドレス部分の列を追加します。1番目の右側の列には、「InStr」と入力します。 (Mid: Val ([ip アドレス]、[".+ 1, InStr (InStr (1, [ip アドレス], ".")+ 1、[ip アドレス]、[.])-InStr (1, [ip アドレス], ".")-1))をフィールド行に入力します。式は、[ip アドレス] フィールドの最初と2番目のピリオドの間にある文字を返します。

    もう一度、式を確認します。住所の2番目の部分を構成する数字の数や、第2の部分の開始位置を正確に把握していないため (最初の部分の長さはわからないため)、 InStr関数を使用してピリオドの位置を検索します。次に、 Mid関数を使用して、最初のピリオドの後に続く2番目のピリオドの前にある文字を抽出します。最後に、 Val関数を呼び出して、 Mid関数によって返される文字を数値に変換します。この最後の手順は、基になるデータ型がテキストであるために必要です。

  7. 3番目のアドレス部分の列を追加します。2番目の右側の列に、 3: Val (Mid ([ip アドレス]、InStr (InStr (1, [ip アドレス]、[.]) を入力します。+ 1、[ip アドレス]、[.])+ 1, InStr (InStr (InStr (1, [ip アドレス], ".")+ 1、[ip アドレス]、[.])+ 1、[ip アドレス]、[.])-InStr (InStr (1, [ip アドレス], ".")+ 1、[ip アドレス]、[.])-1))をフィールド行に入力します。式は、[ip アドレス] フィールドの2番目と3つのピリオドの間にある文字を返します。

    もう一度、式を確認します。住所の3番目の部分を構成する桁数や、3番目の部分を正確に開始する場所がわからないので (最初と2番目の部分の長さがわからないため)、 InStr関数を使用してピリオドの位置を検索します。次に、 Mid関数を使用して、2番目のピリオドの後に3番目のピリオドの前に続く文字を抽出します。最後に、 Val関数を呼び出して、 Mid関数によって返される文字を数値に変換します。この最後の手順は、基になるデータ型がテキストであるために必要です。

  8. 4番目と最後のアドレス部分の列を追加します。3の右側の列にその: Val (right ([ip アドレス]、Len ([ip アドレス])-InStr (InStr (InStr (1, [ip アドレス], ".") を入力します。+ 1、[ip アドレス]、[.])+ 1, [ip アドレス], "." ))))[フィールド]行を選びます。式は、最後のピリオドに続く文字を返します。

    もう一度、式を確認します。キーは、3番目のピリオドの場所を検索し、その後に続くすべての文字を抽出することです。3番目のピリオドが配置されている場所を正確に把握していないため、 InStr関数を3回呼び出して、3番目のピリオドの位置を見つけます。次に、 Len関数を使用して、4番目の部分の桁数を計算します。返される桁数は、 適切な関数と共に使用され、ip アドレスフィールドの右側の部分から多くの文字を抽出します。最後に、 Val関数を呼び出して、 Mid関数によって返される文字を数値に変換します。この最後の手順は、基になるデータ型がテキストであるために必要です。

  9. 4つすべての計算列の [並べ替え] 行を [昇順] に設定します。

    重要   ip アドレス列の [並べ替え] 行は空白のままにする必要があります。

    他のフィールド値による並べ替えを行う場合は、住所の他に、 4 つの計算列すべての左または右にフィールドを配置します。計算列の間に他の並べ替えフィールドを配置しないでください。

  10. 次の手順では、データシートから4つの計算列を非表示にします。この操作を行う前に、データシートビューに切り替えて、計算列の式の結果を確認します。次の表は、データシートビューに表示される列を示しています。

    MachineID

    system.devices.ipaddress

    その

    その

    3

    その

    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. デザインビューに切り替えて、4つの計算列すべての [表示] 行のチェックボックスをオフにします。これにより、集計列がデータシートビューに表示されなくなります。

  12. 必要に応じて、クエリからレコードを除外するための抽出条件を指定します。

  13. データシートビューに切り替えて、レコードを並べ替えられた順序で表示します。レコードが IP アドレスの昇順で正しく並べ替えられていることがわかります。

並べ替えられた IP アドレスのその他の用途

データ入力時に IP アドレスを検証する

コードを記述しなくてもアドレスを検証する場合、フィールドの"プロパティを # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #"および [IP アドレス] フィールドの" Format/ 書式"プロパティを、& & & & & & & & にします。

入力マスクの動作[アドレス] フィールドに入力を開始すると、3つのピリオドの間に数字やスペース以外の文字を入れることができなくなります。数値の部分が2桁の数値である場合は、3番目の数字を空白のままにするか、代わりにスペースを入力します。アドレスの1つまたは複数の部分を入力してスキップした場合、または数値ではなくスペースのみを入力した場合、この input mask はユーザーに警告を表示しないことに注意してください。たとえば、"345..3. "は有効なアドレスとして受け取ることができます。

表示形式にはどのようなものがありますか?入力を終了して、フィールドをそのままにすると、表示形式によってアドレス内のスペースが削除され、数値とピリオドだけが示されます。したがって、「354.35 0.2 0.12」と入力すると、アドレスは "354.35.2.12" と表示されます。アドレス内をクリックした場合、または F2 キーを押してアドレスを選択すると、スペースが再び表示されることに注意してください。

ヒント: アドレスをコピーする場合は、前の列またはコントロールに移動し、tab キーを押して書式設定されたアドレスを選択し、[コピー] をクリックします。これにより、スペースを含むアドレス文字列はコピーされません。

フォームまたはレポートのレコードを IP アドレスで並べ替える

レコードが IP アドレスによって並べ替えられているフォームまたはレポートを作成する必要がある場合は、アドレスを格納するテーブルではなく、前に説明したようにアドレスを並べ替えるクエリの新しいオブジェクトを基にします。

ページの先頭へ

Office のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×