DDF Builder User's Guide (v11)

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

シナリオ

このレッスンでは、既存のテーブル定義があり、ファイル内で同じバイトを共有する 2 つの列定義が含まれています。これは重複する列定義を作成することになるので修正が必要です。

目的

このレッスンの目的は、DDF Builder でファイルを開き、DDF Builder によってこの定義になんらかの変更が行われるかどうかを確認することです。DDF Builder が実施する変更を調べ、重複している列定義を修正するために必要となる変更について検討します。


メモ

DDF Builder はファイル内の重複する列定義を修正するための解決策を提示し、それらの変更を保存できるようにします。


必要な知識

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

<Application Data>¥DDFBUILDER¥TUTORIALS¥TUTORIAL2 

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


メモ

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


Btrieve ファイルを開く

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

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



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



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

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

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

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

    ヒント

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


不一致を探す

まずは DDF Builder インターフェイスで、元の定義と DDF Builder による変更後の定義との違いを確認し、報告されたエラーについても再調査します。

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

変更または追加されたフィールドであること示す不明アイコンやその他の視覚的なインジケーターはありません。

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

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


メモ

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


元の定義と変更後の定義はすぐに比較できますが、最初は DDF Builder によって報告されるエラーを見てください。

エラーについて理解する

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

定義エラー ビューでは次の 1 つの問題が挙げられています。この問題について詳しく見てみましょう。

問題が発生した場所
DDF Builder で検出された問題
必要な対処
列:firstName
DDFBLDR-4:SQL 列がほかの列にオーバーラップしています。列のサイズを切り詰めました。
DDF Builder が指名した列(firstName)はほかの列と重なっています。重複する列をなくし、テーブル定義と Btrieve ファイルが同じレコード長になるようにするために、DDF Builder は列のサイズを短くしました。

DDF Builder によって報告されたエラーは列定義の重複です、これは、テーブル定義に同じバイトを共有する 2 つの列の定義が含まれていることを意味します。

DDF Builder では、firstName 列が次の列と重ならないようにするために、この列のサイズを自動的に削減します。これで列の長さが一致し、複数の列にわたって定義されているバイトがなくなります。

グリッド データ ビューと元の定義を見比べると、重複している列を確認することができます。

変更後の定義で firstName フィールドのサイズが 20 であるのに対し、元の定義ではサイズが 30 になっていることに注目してください。元の定義では、[プレビュー]列にファースト ネームの "Joe" とラスト ネームの "Smith" の両方が表示されています。変更後の定義ではこのフィールドのサイズが小さくなり、[プレビュー]列にはファースト ネームのみが適切に表示されています。

変更を受け入れるまたは拒否する

元の定義と DDF Builder によって変更された定義を比較し、それに加えてデータがどのように書式設定されたかを検証することは、DDF Builder によって行われた変更を受け付けるかどうかを判断するのに役立ちます。

DDF Builder が行った変更の結果、データが期待どおりの書式で表示され、列の長さも一致することが確認できます。

両ファイルの違いを調べ、DDF Builder による変更を理解し、データが適切に表示されていることを検証できたら、いつでもその変更を受け入れることができます。

テーブル定義を保存する

テーブル定義の変更を行ったのが、ユーザーであろうと DDF Builder であろうと、その変更を有効にするためにはそれを保存する必要があります。テーブル定義を保存する前に、もう一度テーブル定義と[プレビュー]タブを見て、すべてのフィールドが定義済みで各バイトが明確にされていることを確認すると良いでしょう。


メモ

テーブル定義で Btrieve 型が "Unknown"(不明)であったり、明確に割り当てられていないバイトが含まれているフィールドがあると、そのテーブル定義は保存することができません。


すべての Btrieve 型が定義済みで、レコード内のすべてのバイトが明確に割り当てられていることがわかります。これでテーブル定義を保存できます。

  1. メニューから、[ファイル保管]を選択するとテーブル定義が保存されます。

これで、列定義の重複を修正するために DDF Builder が変更したテーブル定義は、現在の定義として保存できました。

終わりに

このレッスンでは、列定義の重複が DDF Builder でどのように処理されるか、また列の重複を解決するために DDF Builder が実施する変更についてご紹介しました。DDF Builder によって変更された定義と元の定義を比較して、その変更を受け入れるか、あるいは拒否するかを判断する方法も示しました。


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

レッスン 5 - ファイル/フィールド フラグの不一致