DDF Builder User's Guide (v11)

レッスン 3 - 不正なデータ型とサイズ

シナリオ

このレッスンでは、不正なデータ型とサイズを持つ Btrieve ファイルがあります。この結果、データは理解できるような書式に設定されません。

目的

このレッスンの目的は、DDF Builder で Btrieve ファイルの既存のテーブル定義を開くことです。Btrieve 型ビューですべてのデータ型とサイズを調べて必要な変更を行い、フィールドのサイズに対して的確なデータ型でデータが書式設定されるようにします。

必要な知識

このレッスンでは、TYPE_SIZE.MKD というファイルを使用します。このファイルは Tutorial2 フォルダー内にあります。デフォルトのインストール先にインストールしている場合、このフォルダーは次の場所にあります。

<Application Data>¥DDFBUILDER¥TUTORIALS¥TUTORIAL2 

このフォルダーは Tutorial2 データベースの一部です。


メモ

このチュートリアルのデータにアクセスするためには、このデータベースを指し示す DSN(データ ソース名)が必要です。まだ DSN を作成していない場合は、データ ソース名(DSN)の作成を参照してください。


Btrieve ファイルを開く

すぐ前のレッスンから引き続き作業していれば DDF Builder は起動しているはずです。終了していた場合は、DDF Builder を起動してください。

  1. DDF Builder のデータ ソース エクスプローラーで、[データベース]ノードを展開し、一覧から TUTORIAL2 データベースを見つけます。



  2. TUTORIAL2 データベース アイコンをダブルクリックしてそのノードを展開します。
  3. ノードをさらに展開して TYPE_SIZE.MKD ファイルを探し、それに関連付けられている SQL テーブルを表示します。



  4. type_size SQL テーブル名をダブルクリックするか、右クリックして[テーブル定義の編集]をクリックします。

テーブル定義エディターでは、次のメッセージが表示されます。

このメッセージは、DDF Builder で既存のテーブル定義を分析したら、その定義に問題があったということを知らせています。この結果、DDF Builder で既存のテーブル定義を開いて表示するために、いくつか修正を行う必要がありました。

  1. OK]をクリックすると、このメッセージがクリアされテーブル定義が表示されます。

    ヒント

    発生する可能性がある定義エラーの詳細については、テーブル定義エラーを参照してください。


不一致を探す

まずは DDF Builder インターフェイスで処理対象の不一致を確認します。特に、グリッド データ ビューと定義エラー ビューを見てください。

テーブル定義エディターのグリッド データ ビューでは、既存のテーブル定義に対して DDF Builder が行った変更を反映したテーブル定義が表示されています。


メモ

DDF Builder が行った変更は自動的に保存されません。DDF Builder による修正は保存する必要があります。


この例で、DDF Builder は新たに作成したフィールドや、DDF Builder がデータ型を「不明」に変更したフィールドに対して不明な列インジケーターを追加することにより、注目すべき列を視覚的に示しています。


ヒント

グリッド データ ビューにおける属性の詳細については、グリッド データ ビューでのフィールド属性を参照してください。


定義エラー ビューでは DDF Builder によって検出および変更された問題を表示します。

DDF Builder によって変更が行われる前の元のテーブル定義は、元の定義ビューで見ることができます。

エラーについて理解する

定義エラー ビューでは以下のことを通知します。

定義エラーでは次の 3 つの問題を挙げています。

問題が発生した場所
DDF Builder で検出された問題
必要な対処
列:フィールド6
DDFBLDR-6:テーブル定義内に未定義のバイトがあります。不明な列を追加しました。
DDF Builder が未定義のバイトを明らかにするために追加した不明な列を定義する必要があります。
列:Age
DDFBLDR-11:SQL 列の型が列サイズに適合していません。列の型を "Unknown" に変更しました。
DDF Builder が "Unknown"(不明)に変更した列の型を定義する必要があります。
列:dob
DDFBLDR-11:SQL 列の型が列サイズに適合していません。列の型を "Unknown" に変更しました。
DDF Builder が "Unknown"(不明)に変更した列の型を定義する必要があります。

1 番目のエラーは、元のテーブル定義では定義されていないバイト群がファイルに含まれていることを示しています。 DDF Builder はこれら未定義のバイトを新しい列として作成し、その列に "フィールド6" という名前を付けました。

また、このファイルには列のデータ型がその列のサイズに対して不正な 2 つのフィールド(Age と dob)があります。どちらも、フィールドの型が "Unknown"(不明)に変更されています。Age 列について詳しく見る前に、まず DDF Builder で判断できることとできないことを確認します。

不正なデータ型とサイズ

DDF Builder では、指定したデータ型に対して有効なサイズを確かめることはできませんが、指定したサイズに対して有効なデータ型を検証することはできます。 DDF Builder では問題を検出して一般的な変更を行い、その変更を記録することはできますが、選択されたデータ型が正しいかどうかを判断することはできません。

DDF Builder ではフィールドのサイズに応じて選択できるデータ型が制限されます。たとえば Age 列の不正なデータ型とサイズについて見てみると、サイズが 4 バイトになっています。グリッド データ ビューの[Btrieve 型]ドロップダウン リストには、4 バイトのサイズに対して適用可能なデータ型のみが設定されます。DDF Builder で選択可能なデータ型を 1 つずつ試してみるのではなく、Btrieve 型ビューや[プレビュー]ページでそのデータを見て適切なデータ型を判断してください。

次に、4 バイトのサイズに対して適用可能なデータ型を調べ、ファイルのデータをプレビューしてどのデータ型が最も適しているかを見ます。

データ型とサイズを検証する

フィールド サイズに対して有効なデータ型で書式設定されたデータを見るには、テーブル定義エディターの左側にある[Btrieve 型]タブの Btrieve 型ビューを使用します。

  1. テーブル定義エディターで Age 列をクリックして選択します。

    ヒント

    テーブル定義の Age 列を選択すると、次で説明しているように[Btrieve 型]タブで特定のデータを見ることができます。


  2. DDF Builder インターフェイスの左側にある[Btrieve 型]タブをクリックを表示します。[Btrieve 型]タブは次のように表示されます。




    ヒント

    Btrieve 型ビューの詳細については、Btrieve 型を参照してください。


  3. Btrieve 型ビューの[プレビュー]列に表示されるデータを注意深く見てください。
    Btrieve 型ビューでは、サイズが 4 バイトの場合に設定可能なデータ型のみを表示します。このように表示することで、その他の不正なデータ型をすべて除外することができるため非常に役に立ちます。
    その列が年齢を表すものでサイズが 4 バイトであることを知っていれば、そのデータに対して妥当なのは 3 種類のデータ型のみであることがわかります。



    次に、Auto Increment を妥当なデータ型の対象から除外します。これは Auto Increment データ型を使用すると新しいレコードごとに値が自動的に 1 ずつ増えるためです。自分の年齢に 1 を足す人はいないでしょう。
    この除外によって Btrieve 型の一覧の中から Integer と Unsigned Binary という 2 つのデータ型に絞り込まれました。
    Integer および Unsigned Binary データ型は実際によく似ています。これらのデータ型を試してみて、データがどのように解釈されるかを確認します。まず、Age 列の Btrieve 型として Integer を選択します。
  4. [Btrieve 型]ドロップダウン リストから "Integer" を選択します。



    グリッド データ ビューの[プレビュー]列では、データが適切に受け入れられているように見えます。[プレビュー]ページでファイルのすべてのデータを見るようにしてください。
  5. テーブル定義エディターの[プレビュー]タブをクリックします。ファイルの全データを読みやすいレイアウトで見ることができます。



    ファイルの全データを見ることによって全レコードをすばやく調査できるので、不正なデータ型かどうかをより確実に見極めるのに役立ちます。
    Integer データ型を使用すると、データが適切に書式設定されているように見えることが確認できます。念のため、Unsigned Binary データ型も使用して同じように検証してください。
  6. [Btrieve 型]ドロップダウン リストから "Unsigned Binary" を選択します。



    同様に、グリッド データ ビューの[プレビュー]列には適切な書式でデータが表示されています。確認のため、Integer データ型を使用したときと同じように、[プレビュー]ページでファイルの全データを見ます。
  7. テーブル定義エディターで[プレビュー]タブをクリックして、ファイルの全データを読みやすいレイアウトで表示します。



Integer および Unsigned Binary データ型はいずれもデータを適切に受け入れて理解できるように書式設定します。また、どちらのデータ型も 1、2、4 および 8 バイトをサポートします。このため、どちらかのデータ型を選択するための決定的な理由はないように思われます。この例は、テーブル定義を作成または変更する場合には、データの基本的な構造を知っておく必要があることを端的に示しています。

最終的な変更を行う

有効なデータ型と書式設定されたデータを再検討し、Age 列には Integer データ型を選択することにします。

これで 1 番目のテーブル定義エラーが解決されました。しかし、ほかのエラーを解決するまではテーブル定義を保存することができません。


ヒント

データ型が "Unknown"(不明)になっているものをすべて解決し、レコード内の未定義バイトを明確に割り当てるまで、テーブル定義を保存することはできません。


次のエラー対象の 2 つのフィールドは並んでいるので集合的に見ることができます。残りの 2 つのテーブル定義エラーを解決するには、これらを単一のエラーとして考える必要があります。

まず、dob フィールドに定義されていたデータ型(Date)は 2 バイトの列サイズに対して有効ではない、という点に DDF Builder が注目したことがわかります。その結果、DDF Builder はこのデータ型を "Unknown"(不明)に変更しました。

次に、元のテーブル定義では定義されていない 2 バイトがあります。DDF Builder はこれらの 2 バイトから新しい列(フィールド6)を作成し、"Unknown" データ型を割り当てました。

dob フィールドの用途に適したデータ型は Date ですが、この Date データ型は 4 バイトのフィールドが必要です。"dob" 列" と "フィールド6" 列をマージすれば、Date データ型に適合する 4 バイトのフィールドを作成できます。2 つの列をマージして Date データ型を使用した場合、1 番目のエラーでも行ったように、そのデータが適切に受け入れられ理解できるような書式になっているかどうかを検証する必要があります。

  1. テーブル定義エディターで、"dob" 列と "フィールド6" 列の両方を(Shift キーを使って)選択します。
  2. 右クリックして[列のマージ]を選択します。



    2 つの列が 1 つにマージされ、4 バイトの列が作成されます。
  3. [Btrieve 型]ドロップダウン リストから "Date" を選択します。



この情報の入力後に残りの列フィールドを見てみると、Date データ型を追加したことによってレコードのデータが適切に書式設定されることがわかります。

[プレビュー]ページで、Date データ型で書式設定されたデータがどのように処理されるかを確認することをお勧めします。

  1. グリッド データ ビューの下部にある[プレビュー]タブをクリックします。



[プレビュー]ページの dob 列を見て、全データが適切に受け入れられ理解できる書式で設定されていることを確認できます。

テーブル定義を保存する

これでテーブル定義が完了したので、この作業を保存して変更を有効にしてください。作業を保存する前に、もう一度テーブル定義を見直してください。データ グリッド ビューは次のようになります。

Btrieve 型がすべて定義されていること、未定義のフィールドが残っていないこと、またすべてのバイトが明確に割り当てられていることが一目でわかります。これでテーブル定義を保存できます。

  1. メニューから、[ファイル保管]を選択します。

終わりに

このレッスンでは、データ型とサイズが適合しない場合に DDF Builder でどのように処理されるかをご紹介しました。不正なデータ型やサイズが既存のテーブル定義内でどのように表示されるかを示し、サイズとデータ型が適合して情報が適切に正しく表示できるようテーブル定義を変更するための解決例をいくつか提供しました。


レッスン 2 - v6.x より前のファイル形式での作業

レッスン 4 - 列の定義の重複