A7-2:
> アクションイベントにはイベント番号以外の内包データを持っていないために、SQL文を渡すためにデータ設定イベントを使用しているという部分は、知らないと全く分からない部分でした。
> こういった知らないと何ともならない部分に対して何か良い参考書とかあれば教えて頂きたいです。
> (Javaの本でこういった部分について書かれているもの等あれば・・・)
SQL文に限らず、上位の階層へデータを伝達するためにイベント番号以外の内包データを持つイベントを用いるという手法は、MZ Platform固有のものですので、Javaなどの一般的な参考書などには記載されていないと思います。
イベントを利用して上位階層へデータを伝達する方法につきましては、付属の「複合コンポーネントチュートリアル」(複合コンポーネント-1.mzax)や「購買管理アプリケーション作成チュートリアル」の「3. 発注依頼部の作成」に記載されていますので、どうぞご覧ください。
> 題名のチュートリアルに関してですが、データベース検索複合コンポーネント内の比較演算からのイベントに 関して質問があります。
>
> ノードをツリーノード格納変数に設定し、そのパスをリストとしてリスト格納変数に設定し、そしてリストの要素数を取得してから演算処理という流れだと思いますが、この時のリストの要素数についてなのですが、要素数が2以上であれば要素1がデータベース名、要素数が3以上であれば要素2がテーブル名となって以後の処理に進んでいます。
>
> 仮にテーブルを選択した時は、要素数が3ということのようですが要素1がデータベース名、2がテーブル名の時、要素3は何なのでしょうか?要素の数値と実際にあるデータがひとつずれているのが気になります。<質問@>
リストの要素のインデックス(番号)は、0を起点として数えます。すなわち、要素数が3の場合に含まれている要素は、要素0、要素1、要素2ということになります。したがって、要素数が3のとき、要素3は存在しません(ちなみに、要素0はツリーのトップにあるノード名です)。
このようなインデックスの数え方は、リストのみならず、テーブルの行や列も同様です。
> また、データベースアクセス6についてですが、 アプリケーション開始時に論理値格納変数にfalseを設定しています。そして、ツリーのノードを移動しようとした時に論理値を取得していますがこの論理値というのは、引数が無い為に最初に論理値格納変数に設定した論理値とは違うとは思うのですが、どの論理値をどういう流れで取得しているのでしょうか?<質問A>
この論理値は、最初に論理値格納変数に設定した論理値です。
> マニュアルの説明を見ても日本語がどうも理解できません。
>
> ツリーのノードが移動された時にfalseを返すと何故移動が無効になるのかが分かってないのだと思いますが。
ツリーコンポーネントは、ノードが移動されたときに処理要求イベントを発生します。処理要求イベントは他のイベントと違い、接続先の最後の処理の実行結果をイベント発生元のコンポーネントに戻すという機能を持っています。
ツリーコンポーネントは、この処理要求イベントによって戻ってきた値がtrueの場合にはノードの移動処理をそのまま実行し、falseの場合には移動処理をキャンセルする仕様になっています。
ここでは、ツリーの移動処理をキャンセルするため、論理値格納変数に設定したfalseを戻すように作ってあります。
> Falseを返すだけなら固定値をFalseにしてもいいような気もしますし。
ご指摘のように、この論理値格納変数はfalseを返すだけです。したがって、処理要求イベントの接続先の処理として、
(1) 論理値格納変数の「論理値(Boolean)を設定する(Boolean)」を、固定値のfalseを引数として実行
(2) 論理値格納変数の「論理値(Boolean)を取得する()」を実行
の2つの起動メソッドを設定しても動作は同じとなります。
ここでは、ノードを移動しようとするたびに「論理値(Boolean)を設定する (Boolean)」を実行することを避け、起動時に1回だけこのメソッドを実行するようにしています。