DDF Builder User's Guide (v11)

レッスン 7 - 可変長レコードの不一致

シナリオ

このレッスンでは、テーブル定義で設定されている可変長レコードとは異なる可変長レコードを持つ Btrieve ファイルがあります。

目的

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


メモ

現在、DDF Builder は可変長レコードの不一致を修正するための解決策を提示していません。


必要な知識

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

<Application Data>¥DDFBUILDER¥TUTORIALS¥TUTORIAL2 

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


メモ

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


Btrieve ファイルを開く

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

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



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



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

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

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

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

    ヒント

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


不一致を探す

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

テーブル定義エディターのグリッド データ ビューでは、変更済みのテーブル定義が示されます。


メモ

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


DDF Builder では、変更または追加されたフィールドに対して不明な列インジケーターを追加し、注目すべき列であることを視覚的に示します。また、可変長列インジケーターが可変長の列に追加されます。


ヒント

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


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

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

エラーについて理解する

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

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

問題が発生した場所
DDF Builder で検出された問題
必要な対処
列: Name
DDFBLDR-12:可変長列にできるのはテーブル内の最後の列だけです。列の型を "Unknown" に変更しました。
既存の SQL テーブル定義にはレコードの途中に NOTE または LVAR データ型があります。 DDF Builder では、可変長列はレコード内の最後に配置する必要があると判断し、このデータ型を "Unknown"(不明)に変更します。DDF Builder が "Unknown"(不明)に変更した列を定義する必要があります。
インデックス:UK_ID
DDFBLDR-1:この SQL インデックスに対応する Btrieve キーがありません。インデックスを無視しました。
テーブル定義で見つかった SQL インデックスに対応するキーが Btrieve ファイルに存在しません。その結果、DDF Builder ではこのインデックスが無視されるため、実行できる操作は DDF Builder による変更の確認のみです。

DDFBLDR-12 エラーは、テーブル定義の最後の列ではない可変長フィールドが原因で発生しています。このファイルにはレコードの最後の列以外の位置に可変長フィールドがあるため、DDF Builder ではこのフィールドのデータ型を "Unknown"(不明)に変更します。


ヒント

レッスン 3 - 不正なデータ型とサイズ では、列のデータ型がその列のサイズに対して不正だった場合の具体的な対処手順を提供しています。


可変長フィールドの問題を修正するには、不明なフィールドを適切なデータ型で定義します。これは次のセクションで説明します。

最後に報告されたエラーは、DDF Builder が既存のテーブル定義でインデックスを検出したが、それに対応するキーが Btrieve ファイルにはないという事象です。このレッスンの過程で、このエラーは解決されません。解決されるのは可変長フィールドについてだけです。インデックスに関するエラーを解決するためには、レッスン 6 - インデックスの不一致を参照してください。

不明なフィールドを定義する

テーブル定義エディターのグリッド データ ビューで、不明なフィールドを定義します。

  1. Name フィールドをクリックして選択します。
  2. [Btrieve 型]ドロップダウン リストから "String" を選択します。




    メモ

    テーブル定義に BLOB または CLOB データ型が含まれている場合、テーブルの可変長部分にある列を編集することはお勧めしません。


テーブル定義を保存する

不明なフィールドを定義し、すべての問題を修正したら、テーブル定義を保存できます。

作業を保存する前に、もう一度テーブル定義を見直してください。

テーブル定義に未定義のフィールドがなく、すべてのバイトが明確に割り当てられています。これでテーブル定義を保存できます。

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

終わりに

おめでとうございます。テーブル定義が保存され、可変長フィールドの修正に成功しました。このレッスンでは、レコードの最後にない可変長フィールドを DDF Builder でどのように処理するかをご紹介しました。また、フィールドを定義する方法と、ファイルに対して有効なテーブル定義を作成する方法についても説明しました。


レッスン 6 - インデックスの不一致

レッスン 8 - レコード長の不一致