# DBからのe-Form事前入力

## ODIを利用してe-Form入力

1. HTMLアプリケーションでは、OZビューアはODIパラメータmemberNoの値をmembership.odiに渡します。&#x20;
2. Membership.odiは、OZサーバーにデータベースからのデータを要求します。
3. Membership.odiはデータをmembership-odiparam.ozrに返します。
4. Membership-odiparam.ozrは、データを各コンポーネントにバインドします。

### membership-odiparam.ozr

`membership.ozr` をコピーして `membership-odiparam.ozr` ファイルを生成します。その後、 `membership-odiparam.ozr`を開きます。

### ODI追加

セクション[ODIの作成](/report-design-examples/creating-dataset.md#odino)で既に作成したmembership.odiを挿入します。

![](/files/-MGMzx16sukbq7A50Oqm)

### TextBoxのデータを取得

メンバーデータセットフィールドから、memberNo、firstName、lastName、contactNo、email、CardNo、photo、sign、signDateTimeに値を割り当てます。

誕生日のデータを取得

{% tabs %}
{% tab title="Year" %}

```javascript
// ObBind of yyyy
var items = new Array();
var i = 0;
for ( i=1950; i<2020; items[i-1950]=i++) ;
This.SetItems(items.join("\n"));

var val = This.GetDataSetValue("member.birthday");
if (val) {
	var yyyy = val.substr(0,4);
	for ( i=0; items[i] != yyyy; i++) ;
	This.SetSelectedIndex(i);
} else {
	This.SetSelectedIndex((2020-1950)/2);
}
```

{% endtab %}

{% tab title="Month" %}

```javascript
// OnBind of mm
var items = new Array();
var i = 0;
for ( i=0; i<12; items[i]=("0"+i++).slice(-2)) ;
This.SetItems(items.join("\n"));

var val = This.GetDataSetValue("member.birthday");
if (val) {
	var mm = val.substr(4,2);
	for ( i=0; items[i] != mm; i++) ;
	This.SetSelectedIndex(i);
} else {
	This.SetSelectedIndex(0);
}
```

{% endtab %}

{% tab title="Date" %}

```javascript
// OnBind of dd
var items = new Array();
var i = 0;
for ( i=0; i<31; items[i]=("0"+i++).slice(-2)) ;
This.SetItems(items.join("\n"));

var val = This.GetDataSetValue("member.birthday");
if (val) {
	var dd = val.substr(6,2);
	for ( i=0; items[i] != dd; i++) ;
	This.SetSelectedIndex(i);
} else {
	This.SetSelectedIndex(0);
}
```

{% endtab %}
{% endtabs %}

### 性別のデータを取得

{% tabs %}
{% tab title="Male" %}

```javascript
// OnBind of male
if (This.GetDataSetValue("member.gender") == "M") {
	This.SetChecked(true);
}
```

{% endtab %}

{% tab title="Female" %}

```javascript
// OnBind of female
if (This.GetDataSetValue("member.gender") == "F") {
	This.SetChecked(true);
}
```

{% endtab %}
{% endtabs %}

### メンバーシップのデータを取得

{% tabs %}
{% tab title="Type" %}

```javascript
// OnBind of memberType
var items = [ "Trial", "Regular", "Premium" ];
This.SetItems(items.join("\n"));

var val = This.GetDataSetValue("member.memberType");
if (val) {
	for ( i=0; items[i][0] != val; i++) ;
	This.SetSelectedIndex(i);
} else {
	This.SetSelectedIndex(0);
}
```

{% endtab %}

{% tab title="From" %}

```javascript
// OnBind of fromDate
var val = This.GetDataSetValue("member.fromDate");
var fr = val.substr(0,4) + '-' + val.substr(4,2) + '-' + val.substr(0,4);
This.SetValue(fr);
```

{% endtab %}

{% tab title="To" %}

```javascript
// OnBind of toDate
var val = This.GetDataSetValue("member.toDate");
var fr = val.substr(0,4) + '-' + val.substr(4,2) + '-' + val.substr(0,4);
This.SetValue(fr);
```

{% endtab %}
{% endtabs %}

### 支払いのデータを取得

{% tabs %}
{% tab title="Card Type" %}

```javascript
// OnBind of cardType
var items = [ "VISA", "MASTER", "JCB", "HSBC", "UOB" ];
This.SetItems(items.join("\n"));

var val = This.GetDataSetValue("member.cardType");
if (val) {
	for ( i=0; items[i] != val; i++) ;
	This.SetSelectedIndex(i);
} else {
	This.SetSelectedIndex(0);
}
```

{% endtab %}

{% tab title="Card Holder" %}

```javascript
// OnBind of cardHolder
var val = This.GetDataSetValue("member.cardHolder");
if(!val) {
	val = This.GetDataSetValue("member.firstName") + " " + This.GetDataSetValue("member.lastName") ;
	This.SetValue(val);
}
```

{% endtab %}

{% tab title="Expiration MM" %}

```javascript
// OnBind of cardExpMM
var items = new Array();
var i = 0;
for ( i=0; i<12; items[i]=("0"+i++).slice(-2)) ;
This.SetItems(items.join("\n"));

var val = This.GetDataSetValue("member.cardExp");
if (val) {
	var mm = val.substr(0,2);
	for ( i=0; items[i] != mm; i++) ;
	This.SetSelectedIndex(i);
} else {
	This.SetSelectedIndex(0);
}
```

{% endtab %}

{% tab title="Expiration YY" %}

```javascript
// OnBind of cardExpYY
var items = new Array();
var i = 0;
for ( i=20; i<30; items[i-20]=("0"+i++).slice(-2)) ;
This.SetItems(items.join("\n"));

var val = This.GetDataSetValue("member.cardExp");
if (val) {
	var yy = val.substr(2,2);
	for ( i=0; items[i] != yy; i++) ;
	This.SetSelectedIndex(i);
} else {
	This.SetSelectedIndex(0);
}
```

{% endtab %}
{% endtabs %}

## ODIパラメーター伝達

{% code title="mambership-odi.html" %}

```javascript
<script type="text/javascript" >
var serverUrl = "https://" + location.host;
function SetOZParamters_OZViewer(){
	var oz = document.getElementById("OZViewer");
	oz.sendToActionScript("information.debug", "true"); // viewer console
	oz.sendToActionScript("connection.servlet",serverUrl + "/oz/server");
	oz.sendToActionScript("connection.reportname","/eform/membership-odiparam.ozr");
	oz.sendToActionScript("odi.odinames", "membership");
	oz.sendToActionScript("odi.membership.pcount", "1"); // number of odi parameters
	oz.sendToActionScript("odi.membership.args1", "memberNo=" + 1002); // odi parameter
	return true;
}
start_ozjs("OZViewer", serverUrl + "/oz/HTML5viewer/");
</script>
```

{% endcode %}

[Run example](http://oz.ozeform.io/oz/eform/membership-odiparam.html)

{% file src="/files/-MGN12Sw4V5MwxQYwOYj" %}
membership-odiparam.zip
{% endfile %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://jp.ozeform.io/eform-design-examples/bsunoe-form.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
