メインコンテンツへスキップ
field値のデータベース チェックでは、認識されたfield値をデータベーステーブル内の値と比較します。抽出されたfield値がデータベース内の値の中に見つかった場合、チェックに合格します。そうでない場合、このルールはエラーを返します。 このルールを使用すると、抽出した値に対応するエントリがデータベース内に存在するかどうかを確認したり、fieldにタイプミスや誤りがあってもデータベース内であいまい検索を実行したり、field値をデータベース内の対応するrecordに置き換えたり、データベース内の特定の値をドキュメントのfieldにコピーしたりできます。

Database Check ルールの作成

データベース チェック ルールを作成するには、次の手順を実行します。
  1. field プロパティ ダイアログ (field を右クリックしてショートカットメニューを開き、Properties… を選択) または Document Definition Properties ダイアログ (Document Definition エディターのメニューで Document Definition → Document Definition Properties… を選択) を開きます。
  2. Rules タブに移動します。
  3. New Rule… ボタンをクリックします。
  4. ルールの型の一覧から Database Check を選択し、OK をクリックします。
  5. ルール名を入力します。
  6. 必要に応じて、Show rule name in message to verifier オプションを無効にします。このオプションを無効にすると、エラー メッセージは「ルール名: エラー メッセージ」ではなく「エラー メッセージ」として表示されます。
  7. ルールの重大度を指定します。
  8. 必要に応じて、このルールを適用する条件を指定します (既定では、ルールは無条件で適用されます) 。詳細については、ルールの適用条件を参照してください。
  9. ルールのタグを指定します。
  10. 必要に応じて、Enabled rule オプションを無効にします。ルールは作成されますが、このオプションがユーザーによって有効になるまで適用されません。
  11. Next > をクリックします。
  12. 型と接続パラメーターを指定して、データ ソースへの接続を設定します。 次のデータ ソースがサポートされています。
  • 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 認証を使用できます) 。
  1. ドロップダウンリストから必要なスキーマとデータベース テーブルを選択するか、データ セット型のソースへの接続を設定している場合は必要なデータ セットを指定します。 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. このエラー メッセージが表示された場合は、そのテーブルを含むスキーマ名を明示的に指定する必要があります。
  2. 比較対象の fields に値がない場合にルール チェックを省略するには、Don’t check if all fields are empty オプションを選択します。これにより、ルールの検証が高速化されます。
  3. Document Definition 内の fields とデータベース内の fields の間のリンクを設定します (以下の Specifying fields to compare を参照) 。
  4. Add…Edit…Delete ボタンを使用して、fields 間のリンクを追加、編集、または削除します。
  5. ソースとして データ セット を選択した場合は、Field where to save record ID ドロップダウンリストから、primary keyとして機能する field を選択できます。
データセットには、型が “Button” のコントロールを使ってデータ フォームから直接アクセスできます。データ フォームにボタンを追加するには、Document Definition エディターで Form → Insert Control → Button を選択します。データ フォームにボタンを追加すると、Properties ダイアログが開きます。Format タブをクリックし、Type ドロップダウンリストで Database Lookup を選択してから、あらかじめ作成しておいたデータベース チェック ルールを選択します。

比較するfieldの指定

Rule Settings タブの Field links グループでは、すでに設定されているfieldの比較を確認できます。Database Check ルールは、単一のfieldに対しても、複数のfieldのセットに対しても設定できます。 比較するfieldsを追加または変更する場合は、次の項目を指定する必要があります。
  • Document field データベースのfieldと比較する Document Definition のfield
  • Database field document field と比較するデータベース内のfield
  • Search 比較の種類を指定します。
    • Exact document field の値は、データベースfieldの値と完全に一致している必要があります (ただし、検索では大文字と小文字は区別されません)
    • Fuzzy document field の値は、データベース内の値と部分的に一致していてもかまいません。この種類の比較に使用できるのはテキストの fieldのみです。
あいまい検索では、最も近い一致が見つかります。つまり、一致させるために追加、削除、または置換する文字数が最小の単語です。許容エラー数は元の単語の長さによって異なります。あいまい検索で一致する値が複数見つかった場合、Operator には次のエラーメッセージが表示されます: Too many records found. このエラーメッセージには、データベース内の近い一致の一覧も表示されるため、Operator はその一覧から正しい値を選択できます。 次の追加オプションを使用できます。
  • 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 を右クリックし、shortcut menu の [Edit Data Set Record…] または [Add Data Set Record…] をクリックして開くことができます。 入力済みの field のデータを Delete key を押して削除すると、そのルールに関連する他のすべての field のデータも削除されます。 変更を適用すると、ルールが再度チェックされます。 主キーの動作
  1. ルールの対象となるすべての field で [Enter value from database] オプションが有効になっている必要があります。この場合、主キーとして機能する field に値が入っていれば、プログラムは他の field の値を検索せず、代わりにデータベースの値をそれらの field に入力します。
  2. 主キーとして機能する field に値が入っていない場合、プログラムは、Field Link ダイアログ ボックスで比較対象の field を指定したときに [Search] オプションが有効になっていた他の field を調べます (上記の 比較するフィールドの指定 を参照) 。これらの field に対して一意のレコードが見つかると、データベースの値が使用されます (上記 1. と同様) 。
これで、ユーザーはすべての変更を受け入れるか、データ セットから別のレコードを選択するかを決めるだけで済みます。 主キーを機能させるには、次の条件を満たしている必要があります。
  • ソースとして Data Set が選択されていること。
  • データ セットで主キーが指定されていること。つまり、field に対して [Primary key] オプションが有効になっていること
  • 主キーとして使用される field が、[Rule Settings] タブの [Field links] リストに含まれていないこと。
ABBYY FlexiCapture for Invoices セクションには、データ セットの詳細情報と、サンプル プロジェクトでの使用方法の説明があります。 Using vendor and business unit databases*.*を参照してください。 Looking up vendors and business units in the databaseを参照してください。

一連のfieldに対してデータベース チェックを行う

この場合、プログラムは一連のfieldの値に対応する一致文字列をデータベースから検索し、その一連のfield内の各値は、見つかった文字列の異なるcolumnに関連付けられます。 次の例を考えてみましょう。 document fieldである Fa、Fb、Fc を、次のようにデータベースのcolumnである Ta、Tb、Tc に関連付けます。
  • Fa fieldの値が Ta の値と完全に一致する
  • Fb の値が Tb の値とあいまいに一致する
  • 指定された条件が満たされると、Tc fieldの値が Fc fieldにコピーされる
プログラムが、Ta columnの値が Fa fieldの値と完全に一致し、かつ Tb columnの値が Fb fieldの値とあいまいに一致するデータベース文字列を見つけた場合、データベース チェックは成功します。この文字列の Tc columnの値は Fc fieldにコピーされます。 そのような文字列が見つからない場合、たとえばプログラムが異なる文字列内で Ta = Fa と Tb = Fb を見つけたとしても、ruleはエラーを返します。
完全一致/あいまい一致/混在一致、自動入力なし、field数の指定なしなど、さまざまな組み合わせが可能です。