フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
ご連絡ありがとうございます。
[データベースアクセス]では複数のSQL文が実行できます。メソッド「SQL文を実行する(String)」で検索SQLを実行するかあるいは戻り値のないSQLを実行するかによって、実行完了後に発生するイベントや戻り値には違いがあります。
1)更新SQL(Update, Delete等)を実行した場合:
発生イベント:処理完了イベント
イベント内包データ、または戻り値として更新された行数を取得できる
2)検索SQL(Select)を実行した場合:
発生イベント:データ生成ベント
イベント内包データ、または戻り値として検索結果をテーブル型データで取得できる[1]1)で更新処理が終わった後に、メッセージダイアログで『更新処理が終わりました』『削除処理が終わりました』と出したいというときに、実行する文でイベント番号を分けることが考えられます。
例1)先に「イベント番号を指定してSQL文を実行する」を実行後、
[データベースアクセス]---処理完了イベント---[メッセージダイアログ](イベント番号)[2]2)の結果の返るSelect文の実行のとき、Selectの内容によって行数はもちろん列数の違うテーブルが取得されます。検索結果テーブルからデータを取得して処理を進める際、区別しておかないとエラーの原因となります。また反対にイベント番号があると検索結果を得てからの処理を分岐しやすいということにもなります。
例2)先に「SQL文を実行する(String)」でSelect文を実行後、
[データベースアクセス]---データ生成イベント---[テーブル格納変数] テーブルを設定する 引数:イベント内包、イベント対象データ
複数の検索結果が同じ[テーブル格納変数]に格納されるただし、戻り値をメソッド処理結果で取得する場合は各SQL文の実行を区別できれば、[2]の問題は起きにくいかもしれません。
例3)
[ボタン]---[データベースアクセス]SQL文を実行する
|--[テーブル格納変数]テーブルを設定する 引数:メソッド処理結果[3]複合コンポーネント内のコンポーネントのイベントは、複合コンポーネントのメソッド「(イベント番号を指定して)イベントを伝播させる(PFEvent)」外部に伝播させます。
同一イベント名のイベントを、複数複合コンポーネントから発生させる場合、イベント番号を付けないと区別できません。(例、[ボタン]、[フレーム]のアクションイベントを複合コンポーネント内から伝播し発生させる)
イベント伝播時に番号を付けることもできますが、メソッド「イベント番号を指定してSQL文を実行する(String,int)」で指定したイベント番号は「イベントを伝播させる(PFEvent)」で伝播されます。主に考えられる[1]~[3]を挙げてみましたが、目的や機能によって処理設定の方法は変わってくるかと存じます。ご不明な点、ご要望等ございましたら、どうぞ再度ご連絡ください。
よろしくお願い申し上げます。- この返信は2年、 7ヶ月前にMZPlatformユーザー会が編集しました。
MZPlatformユーザー会キーマスター帳票の[テーブル]要素の列属性の設定は、要素の上で右クリック>[カラム描画設定]>列を選択>[描画属性設定]を選択すると「テーブルカラム描画設定」画面が開きます。
ここで各列の属性を変更することができます。以上お試しただき、ご不明な点、ご要望等ございましたら、どうぞ再度ご連絡ください。
MZPlatformユーザー会キーマスター貴重なご意見有難うございます。
現在チュートリアル等の記述を見直し、補足の情報はHPで公開できるよう準備中です。
なかなか全ての機能を網羅するのには難しいため、
今後とも、ご意見ご要望等ございましたら、お知らせいただければ幸いです。
どうぞよろしくお願い申し上げます。MZPlatformユーザー会キーマスターご連絡ありがとうございます。
(1)グラフ類のコンポーネントはテーブル型のデータ(PFObjectTable)を設定し、それをグラフ状に表示させるものです。
テーブル型データを設定する主なコンポーネントは[テーブル]、[テーブル格納変数]です。
[テーブル]にデータを手入力することもできますが、データベースからSQLでの検索結果がテーブル型で取得できる[データベースアクセス]コンポーネントやcsvファイルを入力しテーブル型で取得できる[CSV入力]コンポーネントを使って設定することも多いです。
他に[エクセルファイルアクセス]コンポーネントもありますが、現在JavaからJDBC-ODBCブリッジが削除されサポートされていないため、現在のところ使用をお勧めしておりません。(2)グラフ類を使ったチュートリアルは、お調べいただいたように開発チュートリアルLesson8,Lesson9,Lesson11 にあります。また『エクセル連携導入チュートリアル』は(1)で書いたようにODBC接続の問題がありますが、それ以外のガントチャートへのデータ設定やデータ更新はご参考になるかと存じます。
設定するデータ形式については申し訳ございませんが、現在のところチュートリアルには詳細な記述がございません。手元にWeb公開用に準備している資料がございますので、PDF化して添付いたします。ご参考になれば幸いです。以上、ご不明な点ご要望等ございましたら、再度ご連絡いただければ幸いです。
よろしくお願い申し上げます。添付ファイル:
MZPlatformユーザー会キーマスターご連絡ありがとうございます。
「a*=2」のみを保存スクリプトに設定して、現在の環境で保存スクリプトを実行した後、変数の取得をお試しください。
このとき、少し手元で試した限りでは数値型の関係でaがint値でないとエラーが出てしまいましたので[数値入力フィールド]の数値型を「BigIntegr」に変更し、他にも演算に変数を用いる場合(例:a=a*b)には[整数(BigInteger)格納変数]に一旦格納してint値を取得して変数に設定してお試しください。また、もう少し複雑な式の場合には、関数を先に定義してから変数を定義してください。
例えば以下のようになります。
def average(nums):
return sum(nums)/len(nums)
a= average([1,3,5,7,9])
メソッド/値欄に入力するとき、改行文字を保持するにチェックを入れて、returnの前にだけ1つスペースを入れてお試しください。(スペースの有り無しで引っ掛かりました)
この後変数を取得します。以上お試しいただき、ご不明な点がございましたら、どうぞ再度ご連絡ください。
よろしくお願い申し上げます。- この返信は2年、 8ヶ月前にMZPlatformユーザー会が編集しました。
- この返信は2年、 8ヶ月前にMZPlatformユーザー会が編集しました。
MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
手元のPCで試しましたところ、jythonのバージョン2.7.3と2.7.2の環境ではアプリケーションを実行すると、お知らせいただいた通り『スクリプト実行エンジンが取得できません』というエラーが発生しました。
旧バージョンの2.7.1のJythonをダウンロードし、jython.jarをMZPlatformインストールフォルダ―\Java\jre8_mz3.6(_64)\lib\extフォルダーに入れ、アプリケーションを実行したところ動作しました。jythonの開発者も以前と変わり、あまり必要な情報が公開されていない状況で、原因究明には時間が掛かっております。
現在のところ、jython2.7.1を使って、お試しいただくことになってしまいます。
ご不便をお掛けいたしますが、もし何か分かりましたら、またご連絡いたします。また、設定されている「現在の環境で保存スクリプトを実行する(戻り値あり)」の処理では「SyntaxError: ‘return’ outside function」が発生してしまうため、メソッド「現在のスクリプト環境から変数を取得する()」に変更すると値を取得できました。
大変お手数をお掛けいたしますが、以上お試しいただきご不明な点等ございましたら、どうぞ再度ご連絡ください。
よろしくお願い申し上げます。MZPlatformユーザー会キーマスターご連絡ありがとうございます。
L11では[ガントチャート]のデータ更新イベント発生時に[ガントチャート]からテーブルデータを取得し、[テーブル]に設定するようになっていますが、メソッド「テーブルデータを設定する(PFObjectTable)」を使うと、[テーブル]のデータは上書きされます。
列幅などの列の属性は列が保持していますので、列が削除されたり上書きされた場合は設定してあった属性は消えてしまいます。列の属性を保持したい場合は、データクリアの際にメソッド「全行を削除する()」で行のみ削除します。テーブルデータの設定にはメソッド「行を追加する(PFObjectTable)」を使います。引数として設定するデータはテーブル型のデータですので、[ガントチャート]からのテーブルデータを設定するのは同じです。
お送りいただいたファイルに上記を設定してみましたので、ご確認ください。
どうぞよろしくお願い申し上げます。添付ファイル:
MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
詳しいキーコードについてはMZPlatform/3.6_64/docs/javadoc/jp/go/aist/dmrc/platform/beans/gui/event/keyCode.htmlをご覧ください。
ただし、(1)修飾コードに使えるキーは限られており、サンプルの説明文書『サンプル(キーイベントハンドラー).pdf』P3にある「shift」、「Alt」、「Ctl」の3つとなっています。
修飾キーを使わない時は、メソッド「キーバインディングを設定する(PFComponent,int,int,int)」の引数2(修飾キー)に「0」を設定します。(2)また、上記『keyCode.html』には実はWindowsキーの記載はありません。Javaでの定数値は「524」です。この「524」を修飾キー値として試してみましたが、やはり修飾キーとしては動作しませんでした。
ただし、メソッド「キーバインディングを設定する(PFComponent,int,int,int)」の引数1(キーコード)に524を使うことは可能です。MZPlatformユーザー会キーマスターご連絡ありがとうございます。
「ガントチャートのデータを設定する(PFObjectTable)」を選んだ後、全メソッド対象にチェックを入れて表示されるメソッド名は、恐らく「setObjectTable(PFObjectTable)」ではないかと思います。メソッド「setObjectTable(PFObjectTable)」の日本語別名が「ガントチャートのデータを設定する(PFObjectTable)」となっています。主要なメソッドには日本語別名が付けられて表示されるようになっています。
メソッド別名は、アプリケーションビルダー上部のメニュー>[オプション]>[コンポーネント情報編集]から各コンポーネント名を選択して確認することができます。自分で別名を付けて「公開する」にチェックを入れ「設定」ボタンを押すと、起動メソッド情報設定窓のメソッド選択欄に表示されるようになります。コンポーネント情報のファイルはMZPlatform\3.6_64\componentsフォルダに保存されています。起動メソッド情報設定窓で全メソッド対象にチェックを入れると、全てのメソッドが表示され、日本語別名が付いていないメソッドも表示されるとともに、別名が付いているメソッドは元々の英語名での表示になります。
以上、お手数ですがどうぞご確認ください。
MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
(1)
>3P 「ガントチャートに必要なデータ」とは
>[1] 「項目名」列
>[2] 「日付時刻」が二列
>[3] [2]が N 組
以上の条件に加えて、[1]は文字列型、[2]は日付型、または文字列型列です。
[2]の左側列の列名が[ガントチャート]の系列名となります。
[2]が文字列型列の場合、「年/月/日 時:分:秒」の形式(例:2023/01/31 12:30:00)でないとガンチャート用データとして受け付けられません。
[2]が日付型列の場合、書式に則って入力しないとデータが消えてしまいます。日付型の列は表示形式を「実行(設定可)」で実行時に列上で右クリック>[表示属性(日付)]>表示形式から、[日付と時間]、[日付のみ]等選ぶことができ、[その他…]を選んだ場合はJava書式に則った日付表示パターン(例:「yyyy/MM/dd H:mm:ss」)を入力、設定します。(2)
>15Pの「基本のデータ形式」とは上記 [1]~[3] でしょうか。
(3)
>「基本のデータ形式」以外に、①の構造を持つテーブルも認識できるという意味でしょうか。はい、その通りです。
ガントチャート用のデータフォーマットについてP2,P3を使って説明していますが、判りにくくご不便をお掛けいたします。次期バージョンアップ時に改善できるよう留意いたします。(4)
>「このメソッド」とは、「ガントチャートのデータを設定する」でしょうか。
メソッド「setRecordTable(PFObjectTable)」を指しています。
ここの部分は分かりにくく申し訳ありません。(5)MZPlatformには[データベースアクセス]や[CSV入力]といった入出力に関するコンポーネントが用意されています。例えばデータベースに蓄積されたデータをMZPlatform上に読み込んでテーブル表示したときは、P2,3で示したガントチャート用データの形式ではなく、P15のテーブルのような形式になるかと思います。
元々[ガントチャート]は(1)で示したフォーマット以外のテーブルデータには対応していませんでしたが、特別なフォーマットの表を用意しなくてもガントチャート表示できるよう追加したメソッドが「setRecordTable(PFObjectTable)」となっています。また、グラフ用にテーブルデータを整形する機能を複合コンポーネントに纏めたものがあります。ビルダー編集画面上で右クリック>[複合コンポーネント追加]>[グラフ化モジュール.mzcx]で複合コンポーネントを追加します。引数に必要な情報を設定すると、各グラフのフォーマーとに合ったテーブルデータが複合コンポ―ネント内部に作成されるので、それを取得します。詳しくはサンプルファイル「グラフ化.mzax」と、その説明文書『サンプル (グラフ化).pdf』、『エクセル連携導入チュートリアル.pdf』(応用)P2~P6、P28~29をご覧ください。
(6)お手数ですが、今一度メソッド「setRecordTable(PFObjectTable)」が選ばれているか、再度ご確認ください。
日本語名が付いているメソッドを選んだ場合は、全メソッド対象にチェックが入った状態でメソッドを選んでも、起動メソッド情報設定画面を閉じると全メソッド対象のチェックは消えてしまいます。動作確認のため、P15に近い形のテーブルをメソッド「setRecordTable(PFObjectTable)」で[ガントチャート]に設定するサンプルファイルを添付いたします。ご参考になれば幸いです。
ご不明な点、ご要望等ございましたら、再度ご連絡いただければ幸いです。
よろしくお願い申し上げます。添付ファイル:
-
投稿者投稿