IP アドレスを並べ替える

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

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

この記事の内容

概要

クエリを作成します。

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

はじめに

IP アドレスを操作する場合は、それがテキストや数の操作ほど単純でないことを既に承知しているでしょう。この理由は、IP アドレスは実際にはピリオド (.) で区切られた 4 つの数値の集合であり、それぞれの値が 0 ~ 255 の数になっているためです。次の表は、並べ替え順序が適用される前のデータの一覧です。

MachineID

Employee

場所

IPAddress

"1"。

...

...

123.4.245.23

51

...

...

104.244.253.29

76

...

...

1.198.3.93

1.8

...

...

32.183.93.40

5

...

...

104.30.244.2

2.7

...

...

104.244.4.1


Access には IP アドレスを格納するための特別なデータ型は用意されていないため、Access で IP アドレスを並べ替えるのは難しい問題です。IP アドレスは数の集合にすぎませんが、IP アドレスを数値フィールドに格納することはできません。この理由は、数値フィールドでは 1 つの小数点 (.) しかサポートしていませんが、IP アドレスにはピリオド (.) が 3 つあるためです。つまり、アドレスはテキスト フィールドに格納する必要があるということです。

IP アドレスはテキスト フィールドに格納されるため、Access に組み込まれている並べ替えボタンを使用しても有意義な方法でアドレスを並べ替えることはできません。並べ替えボタンを使用すると、テキスト フィールド内の値は、文字が数であっても常にアルファベット順に並べ替えられます。つまり、アドレスは最初の桁、次に 2 番目の桁、以下同様に各桁で並べ替えられ、アドレスを構成する数値で並べ替えられることはありません。次の表は、IPAddress フィールドでアルファベット順に並べ替えられた、前の表のアドレスの一覧です。

MachineID

IPAddress

76

1.198.3.93

51

104.244.253.29

2.7

104.244.4.1

5

104.30.244.2

"1"。

123.4.245.23

1.8

32.183.93.40


1 で始まるアドレスが 2 で始まるアドレスより前に表示され、以下同様に表示されます。次の表は、"正しい" 昇順でアドレスを示したものです。

MachineID

IPAddress

76

1.198.3.93

1.8

32.183.93.40

5

104.30.244.2

2.7

104.244.4.1

51

104.244.253.29

"1"。

123.4.245.23


こうしたアドレスの並べ替えに必要な手順を理解しやすくするために、IP アドレスを 4 つの数値部分に分解します。アドレスは、最初の部分、次に最初の部分の各値、さらに 2 番目の部分、以下同様に各部分で並べ替える必要があります。表では各部分を異なる列に示しており、列には単純な数値が保持されるため、次の表に示すように、左から右に昇順で列を並べ替えることができるようになります。

PartI

PartII

PartIII

PartIV

"1"。

198

76

93

32

183

93

4

104

[エンタープライズ日付 30

244

51

104

244

1.8

"1"。

104

244

253

29

123

1.8

245

23


4 つの部分を別々に並べ替えるというしくみで IP アドレスを並べ替えます。この後の手順では、IPAddress フィールドに加えて、各列にアドレス値の各部分が格納される 4 つの計算型の列を用意したクエリを作成します。最初の計算型の列ではアドレスの最初の数値部分、2 番目の計算型の列ではアドレスの 2 番目の数値部分、以下同様に各数値部分が保持されます。このクエリでは、IPAddress フィールドでレコードを並べ替えるのではなく、4 つの計算型の列でレコードを並べ替えます。

ページの先頭へ

クエリを作成する

IP アドレスのレコードを昇順で表示する Sorted IPAddresses という名前の選択クエリを作成します。カレント データベースに、IPAddress という名前のテキスト フィールドを備えた MachineDetails という名前のテーブルがあるとします。

  1. [作成] タブの [その他] で、[クエリ デザイン] をクリックします。

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

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

  4. これで、計算型の列を追加するための準備ができました。右側の最初の空白列で、[Field] 行に式「PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".")-1)))」を入力します。この式では、IPAddress フィールドに最初のピリオド (.) の前の文字列が返されます。

    これで、式を確認します。使用するアドレスの最初の部分が何桁かわからないため、 InStr関数を最初の期間の位置を探します。1 を引いて、期間を除外する) では、最初の部分で以下の桁数を返します。この番号を使用して、 Left関数を ip アドレスのフィールドから、左端の文字から始まる、多くの文字を抽出します。最後に、呼び出す、 Val関数は、数値、 Left関数から返された文字に変換します。最後の手順は、基になるデータ型は文字列のために必要があります。

  5. クイック アクセス ツールバーの [上書き保存] をクリックして、クエリを保存します。各手順の途中で保存することをお勧めします。

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

    式をもう一度確認します。桁数を構成するアドレスの 2 番目の部分または (ため、どのくらい時間の最初の部分がない) 2 番目の部分の正確な開始がわからないため、 InStr関数を使用する期間の位置を見つけます。使用して、 、最初の期間が続くの文字を抽出するMid関数は、2 番目の期間を付けます。最後に、数値、 Mid関数から返された文字に変換するVal関数を呼び出します。最後の手順は、基になるデータ型は文字列のために必要があります。

  7. 3 番目のアドレス部分の列を追加します。PartII の右の列で、[Field] 行に「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 フィールドの 2 番目のピリオドと 3 番目のピリオドの間にある文字列が返されます。

    もう一度、式を確認します。アドレスの 3 番目の部分が何桁かわからない、または (最初と 2 番目の部分の長さが不明なので) 3 番目の部分の正確な開始位置がわからないため、InStr 関数を使用してピリオドの位置を見つけます。次に、Mid 関数を使用して、2 番目のピリオドの後かつ 3 番目のピリオドの前にある文字列を抽出します。最後に、Val 関数を呼び出して、Mid 関数で返された文字列を数に変換します。この最後の手順が必要な理由は、基になるデータ型がテキスト型であるためです。

  8. 4 番目と最後のアドレス部分の列を追加します。PartIII の右の列で、[Field] 行に「PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress],".")+1,[IPAddress],".")+1,[IPAddress],".")))」を入力します。この式では、最後のピリオドの後の文字列が返されます。

    式をもう一度確認します。キーは、3 番目の期間の場所を検索し、[フォローしているすべての文字を抽出します。3 番目の正確な位置がわからない、ため、 InStr関数を 3 回呼び出して期目の位置を探します。使用して、 Len関数を 4 番目の部分の桁数の値を計算します。以下の桁数が返されますが、使われている、 ip アドレス] フィールドの右側の部分からその文字を抽出するRight関数。最後に、数値、 Mid関数から返された文字に変換するVal関数を呼び出します。最後の手順は、基になるデータ型は文字列のために必要があります。

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

    重要     [IPAddress] 列の [並び替え] 行は、空白のままにする必要があります。

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

  10. 次の手順では、4 つの計算型の列をデータシートに表示されないようにします。ただしその前に、データシート ビューに切り替えて、計算型の列で式の結果を確認します。次の表は、データシート ビューに表示される列の一覧です。

MachineID

IPAddress

PartI

PartII

PartIII

PartIV

76

1.198.3.93

"1"。

198

76

93

1.8

32.183.93.40

32

183

93

4

5

104.30.244.2

104

[エンタープライズ日付 30

244

51

2.7

104.244.4.1

104

244

1.8

"1"。

51

104.244.253.29

104

244

253

29

"1"。

123.4.245.23

123

1.8

245

23

  1. デザイン ビューに切り替えて、4 つの計算型の列すべての [Show] 行でチェック ボックスをオフにします。これにより、計算型の列がデータシート ビューに表示されなくなります。

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

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

ページの先頭へ

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

データ入力中に IP アドレスの妥当性を検査する

コードを記述することがなく、住所を確認する場合は、これを行う限定#するフィールドの定型入力のプロパティを設定して. ###. ###.##. ###.##; 0;""に IP アドレス] の [書式] プロパティと& & & & & & & & & & & &します。

入力マスクのはたらき。アドレス フィールドに入力し始めると、入力マスクにより、3 つのピリオドの間に数と空白以外の文字を入力できなくなります。数値の部分が 2 桁の数である場合は、3 桁目を空白のままにするか、代わりに空白文字を入力します。この入力マスクでは、ユーザーがアドレスの 1 つ以上の部分の入力を省略した場合や、数値ではなく空白文字だけを入力した場合は、警告されないことに注意してください。たとえば、"345. .3. " は有効なアドレスとして受け入れられます。

表示書式のはたらき。入力を完了すると、表示書式によりアドレス内の空白文字は削除され、数とピリオドだけが表示されます。したがって、「354.35 .2 .12 」と入力しても、アドレスは「354.35.2.12」と表示されます。アドレスをクリックするか、アドレスが選択されているときに F2 キー (編集モードにする) を押すと、空白文字が再表示されます。

ヒント: アドレスをコピーする場合は、前の列またはコントロールに移動し、Tab キーを押して書式設定されたアドレスを選択します。次に、[コピー] をクリックします。この方法では、空白文字が含まれているアドレス文字列はコピーされません。

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

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

ページの先頭へ

注: 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

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

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

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

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

×