CookBook

フォームに入力した内容をデータベースに登録する

投稿日:2015-12-14 更新日:

登録フォームに入力した内容をデータベースに登録する手順をご紹介します。

今回は例として、CookBook:スクリプト開発で登録フォームを作成するで作成した登録フォームに入力された内容をデータベースに登録するスクリプトを作成します。データの送信先にマッピングしている cookbook_109004/ajax/ajax.js のinit()関数にコードを記述します。

完成イメージ

<操作方法>

1. フォームに任意の内容を入力します。
2. 「登録」ボタンをクリックします。
3. データベースに登録が成功した場合は「登録に成功しました」と表示されます。
4. データベースに登録が失敗した場合は「登録に失敗しました」と表示されます。

完成サンプル

以下の完成サンプルをダウンロードしてご活用ください。
e builder プロジェクト : im_cookbook_109004.zip
imm ファイル : im_cookbook_109004-1.0.0.imm

ローカル環境で表示させる場合は以下のURLにアクセスしてください。
http://localhost:8080/imart/im_cookbook/109004/edit
なおベースURLである以下の部分は環境に合わせて適宜変更してください。
http://localhost:8080/imart

レシピ

  1. リクエストされたデータをデータベースへ登録できる形に設定します。
  2. データベースにデータを登録します。
  3. データベースへの登録結果を画面に表示します。

注意:データベースにデータを登録するにはあらかじめデータベースにテーブルを作成しておく必要があります。
配布しているユーザモジュールを利用する場合、データベースにPostgreSQLを利用していればテナント環境セットアップ時に自動的にテーブルが作成されます。
配布しているユーザモジュールを利用しないで今回のプログラムを作成した場合や、データベースにSQLServerやDB2やOracleを利用されている場合は以下のようなテーブルを作成してからプログラムを実行してください。

テーブル名:cb109004
カラム名 データ型 備考
item_cd 文字列型 20 主キー
item_name 文字列型 100
item_price 数値型 15
comment 文字列型 200

1. リクエストされたデータをデータベースへ登録できる形に設定します。

入力フォームから送られてきた内容をデータベースのテーブルへ登録できる形に設定します。

データを登録するときはオブジェクトの形でデータを渡します。
登録するテーブルのカラム名をキーに設定します。
登録するテーブルは item_cd を主キーとしているので、ユニークなIDを自動生成するAPIであるIdentifier.get()を利用します。
Identifier.get()の詳細はAPIドキュメントIdentifierオブジェクトをご参照ください。
商品名や金額や備考はリクエスト情報から取り出して設定します。金額は数値型に変換が必要なので、parseInt()を利用して変換します。

2. データベースにデータを登録します。

以下のように設定したデータをデータベースに登録します。

(1) Transaction.begin()を利用してトランザクション処理を開始します。
Transaction.begin()は関数を受け取ることが出来ます。関数を受け取る場合コミット漏れやロールバック漏れを予防できます。
Transactionオブジェクトの詳細はAPIドキュメントTransactionオブジェクトをご参照ください。

(2) TenantDatabase().insert()を利用してデータをテーブルに登録します。
TenantDatabaseオブジェクトのinsert()メソッドを利用することで、SQLを書くことなく簡単にテーブルにデータを登録することができます。
insert()の第一引数には登録するデータベースのテーブル名を、第二引数には先ほど登録内容を設定したオブジェクトを渡します。
insert()は処理結果が格納されたDatabaseResultオブジェクトを返します。
TenantDatabaseオブジェクトの詳細はAPIドキュメントTenantDatabaseオブジェクトをご参照ください。

(3) 処理に失敗した場合ロールバックします。
データベース処理に失敗した場合、result.errorにtrueが格納されています。
エラー判定がtrueの場合、Transaction.rollback()を利用してロールバックします。
データベース処理に成功した場合はトランザクション終了時に自動的にコミットされます。

3. データベースへの登録結果を画面に表示します。

以下のように呼出元にデータベース処理の結果を返却し、メッセージを表示させます。

(1) Web.getHTTPResponse()を利用してHTTPレスポンスオブジェクトを取得します。
Webオブジェクトの詳細はAPIドキュメントWebオブジェクトをご参照ください。

(2) setContentType()を利用してMIMEタイプと文字コードを設定します。ここではMIMEタイプをJSON、文字コードをUTF-8に設定しています。
HTTPResponseオブジェクトの詳細はAPIドキュメントHTTPResponseオブジェクトをご参照ください。

(3) sendMessageBodyString()を利用してメッセージを返却します。
送信データはImJson.toJSONString()を利用してJSON文字列に変換します。
ImJsonオブジェクトの詳細はAPIドキュメントImJsonオブジェクトをご参照ください。
errorにはデータベース処理結果のエラー判定を設定します。
errorがfalseの場合、ページにsuccessMessageが表示されます。
errorがtrueの場合、ページにerrorMessageが表示されます。

以上でデータベースの登録処理の作成は完了です。

-CookBook
-,

執筆者:


  1. […] ださい。 CookBook:フォームに入力した内容をデータベースに登録する […]

  2. […] フォームに入力した内容をデータベースに登録する […]

  3. […] 今回は例として、フォームに入力した内容をDBに登録するで利用するテーブルをテナント環境セットアップ時に作成するよう設定していきます。 […]

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

IM-BloomMaker 変数セレクタを表示中でも変数を編集できます

IM-BloomMaker で画面を作成している際、エレメントのプロパティに変数値を設定しようとして変数セレクタを開いてから、『あ!変数を作り忘れてたから、いったん作成するために画面を戻らなくては』と …

特定フローの特定ノードで、処理中の案件に対し、任意の処理対象者を追加する方法

このCookBookでは、LogicDesignerを利用して、特定フローの特定ノードで、処理中の案件に対し、任意の処理対象者を追加する方法について紹介しています。 人事異動で担当者が追加となり、複数 …

no image

Formaのスクリプトから処理対象者を制御するには

このCookBookでは、スクリプトを利用してIM-Workflowの動的ノード(動的承認、縦配置、横配置)の処理対象者を制御する方法をご紹介します。 スクリプトから動的処理対象者設定機能を利用するこ …

no image

ワークスペースとToDo機能との連携

このCookBookでは、「intra-mart Accel Collaboration」の機能の1つであるワークスペースと「intra-mart Accel Collaboration」のToDo機 …

no image

完了したワークフロー案件の登録データをメンテナンスする方法

このCookBookでは、IM-BISとIM-FormaDesignerで作成したワークフロー案件の登録データを編集する方法を紹介します。 一部制限はありますが、IM-FormaDesignerのアプ …