Database Check ルールの作成
- field プロパティ ダイアログ (field を右クリックしてショートカットメニューを開き、Properties… を選択) または Document Definition Properties ダイアログ (Document Definition エディターのメニューで Document Definition → Document Definition Properties… を選択) を開きます。
- Rules タブに移動します。
- New Rule… ボタンをクリックします。
- ルールの型の一覧から Database Check を選択し、OK をクリックします。
- ルール名を入力します。
- 必要に応じて、Show rule name in message to verifier オプションを無効にします。このオプションを無効にすると、エラー メッセージは「ルール名: エラー メッセージ」ではなく「エラー メッセージ」として表示されます。
- ルールの重大度を指定します。
- 必要に応じて、このルールを適用する条件を指定します (既定では、ルールは無条件で適用されます) 。詳細については、ルールの適用条件を参照してください。
- ルールのタグを指定します。
- 必要に応じて、Enabled rule オプションを無効にします。ルールは作成されますが、このオプションがユーザーによって有効になるまで適用されません。
- Next > をクリックします。
- 型と接続パラメーターを指定して、データ ソースへの接続を設定します。 次のデータ ソースがサポートされています。
- External Database (Simple) 外部データベースへの接続は、Document Definition の各ルールごとに設定されます。
- External Database (Variable) 外部データベースへの接続は、プロジェクトのプロパティ (Project Properties → Environment Variables) でのみ設定されます。この型のデータ ソースは、複数のルールで同時に使用できます。プロジェクトで別のデータベースを使用する場合、接続設定を変更する必要があるのはプロジェクトのプロパティだけです。
- データ セット データ セットへの接続は、Document Definition のプロパティ (Document Definition Properties → Data Sets) でユーザーが設定します。 Tip. OLE DB Provider には、次のものを選択することをお勧めします。
- SQL にエクスポートする場合は、OLE DB Provider for ODBC Drivers を使用してください
- Oracle にエクスポートする場合は、Oracle Provider for OLE DB を使用してください (詳細については、Oracle データベースへのエクスポートを参照してください) Note: データベースへの接続時に毎回パスワードを入力しないようにするには、Allow saving password オプションを選択するか、接続時にパスワードが不要になるようにデータベースを設定します (たとえば、Windows 認証を使用できます) 。
- ドロップダウンリストから必要なスキーマとデータベース テーブルを選択するか、データ セット型のソースへの接続を設定している場合は必要なデータ セットを指定します。 Note: スキーマとして Find in all schemas が選択されており、指定したテーブルが既定のスキーマに含まれていない場合、次のエラー メッセージが表示されることがあります。 [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name K1. [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. このエラー メッセージが表示された場合は、そのテーブルを含むスキーマ名を明示的に指定する必要があります。
- 比較対象の fields に値がない場合にルール チェックを省略するには、Don’t check if all fields are empty オプションを選択します。これにより、ルールの検証が高速化されます。
- Document Definition 内の fields とデータベース内の fields の間のリンクを設定します (以下の Specifying fields to compare を参照) 。
- Add…、Edit…、Delete ボタンを使用して、fields 間のリンクを追加、編集、または削除します。
- ソースとして データ セット を選択した場合は、Field where to save record ID ドロップダウンリストから、primary keyとして機能する field を選択できます。
比較するfieldの指定
- Document field データベースのfieldと比較する Document Definition のfield
- Database field document field と比較するデータベース内のfield
- Search 比較の種類を指定します。
- Exact document field の値は、データベースfieldの値と完全に一致している必要があります (ただし、検索では大文字と小文字は区別されません)
- Fuzzy document field の値は、データベース内の値と部分的に一致していてもかまいません。この種類の比較に使用できるのはテキストの fieldのみです。
- Don’t search if field is empty field が空の場合、その値はデータベース内の値と比較されません。
-
Enter value from database あいまい検索でデータベース内に一致する値が見つかった場合、次の条件ではその値を自動的にfieldに入力できます。
- field 内の値とデータベース内の値が異なる
- field が空である。 注: 完全一致検索では、Enter value from database オプションを選択しても意味はありません。2 つの値は同一になるためです。
-
Allow empty values in database データベースチェックの結果や他の設定に応じて、このオプションの意味は次のようになります。
- データベースfieldが空で、document field が空でない場合、field の値とデータベースの値は同一と見なされます
- データベースfieldが空で、document field が空でなく、Fill from database が選択されている場合、空のデータベース値はfieldに入力されません。
データ セットの主キー
プロジェクトにデータ セット (外部データベースのローカル コピー) が含まれており、ドキュメントの処理時にそこから field 値を取得したい場合は、データベース チェック ルールを使用して、データ セット内のレコードの主キー (一意の identifier) となる field を指定できます。 これを行うと、データ フォーム上のデータはデータ セット内のデータに対応付けられます。レコードを選択すると、すべての field にデータ セットの値が入力されます。データ フォーム上の値は編集できなくなります。編集しようとすると、次のいずれかの操作を行うよう求めるダイアログが表示されます。- データ セットから別のレコードを選択する
- 既存のレコードを編集する
- ルールの対象となるすべての field で [Enter value from database] オプションが有効になっている必要があります。この場合、主キーとして機能する field に値が入っていれば、プログラムは他の field の値を検索せず、代わりにデータベースの値をそれらの field に入力します。
- 主キーとして機能する field に値が入っていない場合、プログラムは、Field Link ダイアログ ボックスで比較対象の field を指定したときに [Search] オプションが有効になっていた他の field を調べます (上記の 比較するフィールドの指定 を参照) 。これらの field に対して一意のレコードが見つかると、データベースの値が使用されます (上記 1. と同様) 。
- ソースとして Data Set が選択されていること。
- データ セットで主キーが指定されていること。つまり、field に対して [Primary key] オプションが有効になっていること
- 主キーとして使用される field が、[Rule Settings] タブの [Field links] リストに含まれていないこと。
一連のfieldに対してデータベース チェックを行う
- Fa fieldの値が Ta の値と完全に一致する
- Fb の値が Tb の値とあいまいに一致する
- 指定された条件が満たされると、Tc fieldの値が Fc fieldにコピーされる

完全一致/あいまい一致/混在一致、自動入力なし、field数の指定なしなど、さまざまな組み合わせが可能です。
