> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# サンプル データベース検索スクリプト

> FlexiCapture Web Verification Station からデータ セットを検索し、見つかった値を現在の field にコピーするサンプルの Web カスタムアクション スクリプト。

このサンプル スクリプトは、Web Verification Station からデータ セットを検索し、見つかった値を現在の field にコピーします。

<div id="create-a-data-set">
  ## データ セットを作成する
</div>

スクリプトを設定する前に、検索に使用するデータ セットを作成します。

<Steps>
  <Step title="Document Definitions を開く">
    Project Setup Station を開き、**Project → Document Definitions** をクリックします。
  </Step>

  <Step title="データ セットを追加する">
    **Document Definition → Document Definition Properties** をクリックし、**Data Sets** タブを開いて **Add** をクリックします。
  </Step>

  <Step title="レコードを作成する">
    データ セットを作成し、いくつかのレコードを追加して、**Close** をクリックします。
  </Step>
</Steps>

このスクリプトは、Web Verification Station のユーザースクリプトとして追加します。詳細については、[Web Verification Station のユーザースクリプト](/ja/flexi-capture/appendix/scripts/web-custom-action-script)を参照してください。

<div id="sample-script">
  ## サンプル スクリプト
</div>

```javascript theme={null}
//データセット名
var dbCacheName = 'DataSet1';
//データセット内のfield。現在のfield値を置き換えるために使用
var fieldNameInCache = 'Field2';
var self = this;
var styles = {
    display: 'block',
    position: 'absolute',
    top: '0px',
    bottom: '0px',
    left: '0px',
    right: '0px',
    width: '100%',
    height: '100%',
    border: '0',
    overflow: 'hidden',
    'overflow-x': 'hidden',
    'overflow-y': 'hidden',
    'z-index': '10000'
}
var newValueToInsert = '';
// iframeのスタイルを設定
setStyles(
    styles,
    function() {
        //ダイアログのマークアップ
        var windowMarkup = "<div class='frame'><div class='searchField'><input id='searchValue' /><button id='searchButton'>Search</button></div><div id='recordspanel'><table id='resultspreview'></table><div id='norecord'>No records found</div></div><div class='buttonsfield'><button id='confirm'>Ok</button><button id='cancel'>Cancel</button></div></div>";
        //ダイアログのスタイル
        var css = "<style>body{width:100vw;height:100vh;background:rgba(0,0,0,0.1);margin:0;padding:0;display:flex;align-items:center;justify-content:center;}.frame{width:400px;max-height:80vh;background:white;min-height:200px;padding:50px;}#norecord{display:none;}#searchValue{width:calc(100% - 60px);}#cancel{margin-left:20px;}.buttonsfield{display:flex;justify-content:flex-end;height:25px;}.bolded{font-weight:bold;}button{width:60px;}#confirm{display:none;}#recordspanel{min-height:145px;padding: 10px 0;}#searchfield{height:30px;}</style>";
        //スタイルを設定
        $('head').append(css);
        //iframe内にDOMを作成
        $("body").append(windowMarkup);
        // 検索ボタンクリック時
        $('#searchButton').click(function () {
            //Dictionaryを検索
            getDict(
                {
                    cacheName: dbCacheName, //データセット名
                    filters: [{ FieldName: "", FieldValue: $('#searchValue').val() }] //検索するfields
                },
                function (result) {
                    //データセットから取得したレコード行
                    var records = result.detail.result;
                    //先頭行の情報
                    var firstRecord = records[0];
                    //結果が見つからない場合は「テーブル」と「ok」ボタンを非表示にする
                    if (!firstRecord && !firstRecord.BoldMask){
                        $('#resultspreview').hide();
                        $('#norecord').show();
                        $('#confirm').hide();
                    } else {
                        $('#resultspreview').show();
                        $('#confirm').show();
                        $('#norecord').hide();
                        $('#resultspreview').html('');
                        firstRecord.forEach(function (recordData) {
                            if (fieldNameInCache === recordData.FieldName) {
                                newValueToInsert = recordData.FieldValue;
                            }
                            $('#resultspreview')
                                .append('<tr class="' +
                                    (fieldNameInCache === recordData.FieldName ? 'bolded' : '') +
                                    '"><td>' +
                                    recordData.FieldName +
                                    '</td><td>' +
                                    recordData.FieldValue +
                                    '</td></tr>');
                        });
                    }
                });
        });
        //「ok」ボタンクリック時
        $('#confirm').click(function () {
            if (newValueToInsert) {
                //現在のfieldに値を設定
                setCurrentFieldValue(newValueToInsert);
                //保存してiframeを閉じる
                save();
            }
        });
        //「cancel」ボタンクリック時
        $('#cancel').click(function () {
            cancel();
        });
    });
```

このサンプル スクリプトは `https://<ApplicationServer>/FlexiCapture12/Verification/Scripts/CustomScripts/customActionLookup.js` にもあります。ここで、`<ApplicationServer>` は Application Server がインストールされているコンピューター名です。

次の行の値を置き換えてください:

* `var dbCacheName = 'DataSet1';` — `DataSet1` は、作成したデータ セットの名前です。
* `var fieldNameInCache = 'Field2';` — `Field2` は、コピーする値が含まれているデータ セットの field 名です。
