本ページでは、リストビュー、テーブル、またはその他の配列型のデータをパラメーターとしてサーバーサイドコマンドへ受け渡す方法を説明します。
配列型のパラメーターは、通常のコマンドである「サーバーサイドコマンド呼び出し」を使用して呼び出す場合においてのみ有効です。サーバーのコマンド「サーバーサイドコマンドの呼び出し」では配列型のパラメーターを受け渡すことはできません。
基本型のパラメーターの手順で作成したサンプルに、次のようなテーブルとページが追加されている状態を前提に、注文を作成し、その注文数に応じて在庫数が減少するサンプルの作成を通して配列型のパラメーターの使用方法を説明します。なお、基本型のパラメーターの手順で作成したサーバーサイドコマンドは「在庫数の更新」という名前で登録されているものとします。
このような処理をサーバーサイドコマンドを使用せずに実現しようとした場合、注文とそれに紐づく注文明細のデータを登録し、それに応じた在庫数の変更を行うといった一連の処理を1つのトランザクションで実行することはできません。処理の途中で、他のユーザーが在庫数を変更してしまう可能性があります。サーバーサイドコマンドを使用することにより、このような問題を解決することができます。
[作成]リボンタブ -[サーバーサイドコマンド]をクリックし、[新しいサーバーサイドコマンドの作成]ダイアログを開きます。
[サーバーサイドコマンドの設定]ダイアログで[パラメーター]タブを選択し、[新しいパラメーター]ボタンをクリックし、パラメーターを1つ作成します。
[パラメーターの名前]を「注文名」、[パラメーターの種類]を「基本型」に設定します。
パラメーターの作成を繰り返し、次の図のように[パラメーターの名前]と[パラメーターの種類]を設定します。
[説明を追加...]でパラメーターの説明を入力できます。説明は「サーバーサイドコマンドの呼び出し」コマンドなどで、パラメーターを参照した際に表示されます。
配列型の「注文明細」パラメーターの右側にある[...]ボタンをクリックして[配列項目の編集]ダイアログを開き、[新しい配列の項目]ボタンをクリックして次の図のように配列項目を作成します。
[新しい配列の項目]のドロップダウンボタンをクリックし、[テーブルからフィールドを選択して追加…]を選択すると、テーブルを参照してパラメーターを設定できます。詳細については、テーブルからフィールドを選択して追加を参照してください。
配列項目を作成した後に、[OK]ボタンをクリックしてダイアログを閉じます。
配列項目のデータ入力検証設定は基本型のパラメーターの場合と同様です。基本型のパラメーターを参照してください。
[コマンド]タブを選択し、[コマンド...]ハイパーリンクをクリックしてダイアログを開きます。
[コマンドの選択]で「トランザクション」コマンドを選択します。
「トランザクション」コマンド内のコマンドとして「テーブルデータの更新」コマンドを選択します。
[処理の種類]を「追加」に、[対象テーブル]は「注文」を選択します。
[対象フィールド]の[新しいフィールド]ボタンをクリックし、フィールドを2つ追加します。
フィールドは、自動的にそれぞれ「注文名」と「注文日」が選択されます。
「注文名」フィールドの[値]の右側にある[]ボタンをクリックしてダイアログを開き、[パラメーター一覧]から「注文名」をダブルクリックしてパラメーターを設定し、[OK]ボタンをクリックしてダイアログを閉じます。
同様の手順で「注文日」フィールドの値には「注文日」パラメーターを設定し、[OK]ボタンをクリックしてダイアログを閉じます。
ヒント:配列型のパラメーターには、配列の要素数を返す「パラメーター名.Count」をパラメーター一覧から選択できます。
配列型のパラメーター名が「注文明細」の場合は、「注文明細.Count」になります。
[新しいレコードのパラメーター名]を「新しい注文」に変更します。
[新しいコマンド]ボタンをクリックしてコマンドを1つ作成し、[コマンドの選択]で「繰り返し」コマンドを選択します。
[繰り返し回数、または繰り返し配列]の入力テキストボックスの右側にある[]ボタンをクリックしてダイアログを開き、「注文明細」パラメーターをダブルクリックした後に[OK]ボタンによりダイアログを閉じます。
「繰り返し」コマンド内のコマンドとして「テーブルデータの更新」コマンドを選択します。
[処理の種類]を「追加」に、[対象テーブル]は「注文_詳細」を選択します。
[対象フィールド]の[新しフィールド]ボタンをクリックしてフィールドを1つ追加し、「注文_ID]が選択されているのを確認した後に右側の[]ボタンをクリックしてダイアログを開き、「新しい注文.ID」をダブルクリックしてパラメーターを設定します。
同様の手順で、フィールドを2つ追加し、「商品」フィールドの値に「Item.商品名」パラメーターを、「注文数」フィールドの値に「Item.注文数」パラメーターを設定します。
[新しいコマンド]ボタンをクリックしてコマンドを1つ作成し、[コマンドの選択]で「サーバーサイドコマンドの呼び出し」コマンドを選択します。
[サーバーサイドコマンド]は「在庫数の更新」を選択します(「在庫数の更新」サーバーサイドコマンドの作成方法は基本型のパラメーターを参照してください)。
パラメーター「商品名」の[値]の右側にある[]ボタンをクリックしてダイアログを開き、[パラメーター一覧]から「Item.商品名」をダブルクリックしてパラメーターを設定し、[OK]ボタンをクリックしてダイアログを閉じます。
同様の手順で、パラメーター「出荷数」には「Item.注文数」パラメーターを設定します。その後、[OK]ボタンをクリックしてすべてのダイアログを閉じます。
「注文_登録」ページにある「登録」ボタンを選択し、右ペインから[コマンド...]をクリックしてコマンドウィンドウを開きます。
[コマンドの選択]で「サーバーサイドコマンドの呼び出し」コマンドを選択し、[サーバーサイドコマンド]には作成した「注文登録」を設定します。
パラメーターの設定を「注文名」に入力した注文名が、「注文日」に入力した注文日が受け渡されるようにページ上のセルを設定します。
本例では、「注文名」に「G2」セル、「注文日」に「G4」セルを設定しています。
パラメーター「注文明細」の右側にある[]ボタンをクリックしてダイアログを開き、[対象リストビュー]に注文明細を表示するリストビュー(ここでは「リストビュー1」)を選択します。
もし、対象としたいリストビューがコンテナー型セルやタブコントロール型セル内に表示されるページ上にある場合、ドロップダウンリストの選択肢にはそれらのリストビュー名は表示されません。そのような場合には、対象となるリストビュー名を直接入力します。
注文明細を表示するリストビューの各列には名前を設定しておく必要があります。リストビューの列名の設定方法はリストビューの名前定義を参照してください。「商品名」の配列項目に「商品」を、「注文数」の配列項目に「注文数」を設定し、[OK]ボタンをクリックしてすべてのダイアログを閉じます。
[ホーム]リボンタブにあるデバッグの[開始]ボタンをクリックし、アプリケーションの動作を確認します。
「注文一覧」ページから「注文登録」ページに遷移し、注文情報を入力して[登録]ボタンをクリックすると、注文数に応じて在庫テーブルの在庫数が減少することを確認できます。