フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
コンボボックスからのイベント発生の件,イベント伝播制御コンポーネントを用いて,イベントの伝播を制御することにより対応可能です.お送りいただいたアプリケーションデータでは,コンボボックスのデータ選択イベントにファンクションコンポーネントが直接接続されておりますが,これら二つのコンポーネントの間に,イベント伝播制御コンポーネントを挿入します.コンボボックスのデータ選択イベントにイベント伝播制御の「受け取ったイベントを発生させる」を定義し,イベント伝播制御のデータ選択イベントに,ファンクションのメソッドを定義します.テキストフィールドのアクションイベント発生時に,イベント伝播制御の「イベント伝播無視モードを設定する」を引数にtrueを設定して実行することにより,コンボボックスからのイベントはイベント伝播制御から伝播しなくなります.処理実行後,同メソッドにfalseを設定して実行することにより,元に戻りイベントが伝播するようになります.詳細は添付のサンプルをご確認ください.
テキストフィールドコンポーネント上でマウスで左ボタンクリックした時には編集状態になり,マウスボタンイベントが発生しません.そのため,大変申し訳ございませんが,現状では左クリック押下のイベントは取得できません.添付ファイル:
MZPlatformユーザー会キーマスター試してみましたが、こちらではメモリ使用量が増えるという現象は確認できませんでした。
一方で、添付していただいた作成方法でご希望の処理が実現できないのは確かです。
タイマーでも難しいかもしれません。スレッドアロケータを用いたサンプルを添付しますので、この方法で実現できそうかお試しください。
添付ファイル:
MZPlatformユーザー会キーマスター拡張用のJARファイルとサンプルアプリをまとめたZIPファイルを添付します。
ZIPファイルを展開すると中にJARファイルがありますので、MZのインストールフォルダの下にあるjarsフォルダに配置してください。また、同じくetcフォルダにあるPlatformClassPath.iniをテキストエディタで開いて、先頭行にjars/file20170330.jarと記入して保存してください。それからビルダーを起動して、一緒に含まれているMZアプリを開いてください。上記の作業で誤りがあると、エラーが表示されると思います。
拡張パッチ適用後のビルダー画面でサンプルアプリを開くと、ファイル属性表示のサブルーチンの処理中に、ファイルコンポーネントのgetCreated()メソッドを起動しているところがあります。このメソッドが追加したものです。実際に取得できるかどうか、このMZアプリを実行して、ファイルを選択してみてください。なお、OSによっては作成日時が取得できない場合があるそうですが、その場合はOSとJavaの制限ですので、ご容赦ください。
添付ファイル:
MZPlatformユーザー会キーマスター解決したのであればよかったです。
ところで、やはり表現に問題があると思うのですが、今回の問題がJDBCと関係ないということはないでしょう。MZはJDBCでOracleに接続しますので、JDBCでの接続方法としてはご報告いただいた内容を設定する必要があったということになります。
もし可能であれば、MZのサンプルアプリでどのように設定したら接続できたか、どのように設定すると失敗したかのご報告をいただければ、他の方々が同様な問題に直面した時に参考になるので助かります。
MZPlatformユーザー会キーマスター補足ですが、この掲示板に記入したSQL文をコピーペーストして使用すると、シングルクオーテーションが全角文字になってしまって実行時にエラーとなるので、半角に修正してお使いください。
MZPlatformユーザー会キーマスターこれまでご質問いただいたようなことを検討したことがありませんでしたが、調べてみると簡単にできるようです。
ここでは、H2というデータベースを使う方法をご紹介します。
http://www.h2database.com/html/main.html上記の公式サイトからZIPファイルをダウンロードしていただき、展開したフォルダに含まれるJARファイルを、MZで利用しているJavaのフォルダ(3.5の標準インストールであれば、C:\MZPlatform\Java\jre8_mz3.5\lib\ext)にコピーしてください。準備はこれだけで完了です。
あとは、データベースアクセスコンポーネントでの接続設定と、SQL文を適切に書くことでCSVファイルを対象とした検索が自由に実行できます。その方法をMZのサンプルアプリを用いて説明します。ここでは「データベースアクセス_3(機能拡張版).mzax」を使います。
上記のアプリが起動したら、設定用のフレームでドライバのフィールドを「org.h2.Driver」、サーバのフィールドを「jdbc:h2:mem:」、ユーザ名とパスワードとデータベース名をすべて空にします。スキーマ使用や大小区別のチェックは外してください。
この状態で接続ボタンを押すと、接続できるはずです。もう一つのフレームにツリーが表示されると成功です。接続に失敗した場合は、JARファイルのコピー先か入力するパラメータの設定に失敗している可能性がありますので、ご確認ください。
最後に、SQL文として下記のようなクエリを作成して実行してみてください。
select * from csvread(‘(ファイルパス)’,null,’Shift-JIS’)
(ファイルパス)のところで検索したいCSVファイルのパス名を指定します。
‘Shift-JIS’はファイルのエンコードに応じて変えるようです。
書き方が合っていれば、CSVファイルの中身がテーブルとして表示されると思います。
これが実行できたら、後ろにwhere節を追加していろいろ試してみてください。こちらでも初めて使用したので、何か制限があるかもしれません。
もし何か問題がありましたらご報告ください。MZPlatformユーザー会キーマスター残念ながら、現在ファイルコンポーネントに作成日時取得のメソッドはありません。
MZの開発を開始した当初は、Java側でその機能の提供がなかったためです。調べたところ、Javaの現在のバージョンでは作成日時取得の機能が提供されているようなので、MZの次期バージョンから追加します。
もしすぐにでもこの機能が必要であれば、拡張パッチをここに添付できますので、ご希望であればお知らせください。
MZPlatformユーザー会キーマスター散布図を用います.
x座標y座標の順にすべての系列の座標値を格納したテーブルデータを作成し,散布図に設定します.その際,メソッドsetLineVisibleを用いて線の描画の有無,メソッドsetMarkerVisibleを用いて点の描画の有無を指定できます.
引数のbooleanは描画の有無,intは系列インデックスを示します.
もし折れ線が各系列に関連するもので,数式が分かっている場合には,setTrendDataMathematicLineで関数が描画できます.ただし,各系列と同じ色になってしまいます.数式の記述については,MZ Platform JavadocのPFPlotChartをご参照ください.
数式ではなく座標データの場合にはsetTrendDataを用いて,座標データを設定してください.
ご参考のため,サンプルアプリケーションを添付します.添付ファイル:
MZPlatformユーザー会キーマスターつまり、現在の問題はOracleにJDBCで接続を確立することができないということですね。
もし他のソフトウェアを用いて、JDBC経由で接続を確立することができれば、その設定を参考にすればMZでも接続できると思います。こちらから提供している情報は、サーバに直接接続する設定だけですが、実際にはOracleへのJDBC接続は3種類提供されています。下記リンク先をご覧ください。
https://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleDriver.htmlもしサーバに直接接続する方法(thinドライバ)ではできない状況であれば、Oracleクライアント経由(oci)の設定も選択肢としては存在します。ただし、産総研では確認していないのと、こちらはOracleのバージョンごとにJDBCドライバ(jarファイル)が異なったり追加ライブラリが必要なようなので、公式情報をよくお読みください。
MZPlatformユーザー会キーマスターこちらでは黒猫というソフトを使用したことがありませんが、インターネット上で検索する限りはOracleにもODBC経由で接続するという情報しか得られませんでした。「Oracle Provider for OLE DB」を選択しているわけではないということでしょうか?
公式ページが存在しないようなので、詳細が確認できておりません。もし本当にJDBC経由であれば、使用しているJDBCドライバやJDBC接続に使用しているパラメータを同じにすれば、接続できるかもしれません。
-
投稿者投稿