作成した返信
-
著者投稿
-
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接続に使用しているパラメータを同じにすれば、接続できるかもしれません。
MZPlatformユーザー会サイト管理者データベースアクセスコンポーネントのソースは公開しても良いですが、それは本質的な問題ではないと思います。
確認ですが、JDBCで接続に成功している組み合わせはあるのでしょうか。
もしあれば、その設定をお知らせください。
MZだけ失敗という表現が気になるのですが、黒猫というのはODBCを利用しているのではないでしょうか。それならODBCで接続できているだけだと思います。こちらとしては、JDBCからODBCに接続するものと誤解があるのではないかという点が不安です。JDBC経由では、Oracleのサーバに直接接続しますので、サーバ側の設定が必要です。そのようにお試しいただいていると信じていますが、そうであれば、今はSIDがわからないことが問題ではないでしょうか。
サーバ側にログインできれば、環境変数でORACLE_SIDが確認できるそうですし、対象とするサーバにSQL文を送れるのであれば、select instance_name from v$instance;で取得できるという情報があるようです。
MZPlatformユーザー会サイト管理者tnsnames.oraというファイルにSERVICE_NAMEとSIDの指定が書いてあるらしいですが、もしその中にSIDが書いていないか指定してもうまくいかない場合は、サンプルのMZアプリにあるままの「orcl」で試してみていただけますでしょうか。
MZPlatformユーザー会サイト管理者それは残念です。
こちらで試す環境がないので推測ですが、ODBCデータソースの登録では、ローカルのOracleクライアントと接続されている感じがしますが、JDBCドライバの場合はOracleサーバと直接通信しますので、Oracleクライアントの接続設定をご確認いただく必要があるかもしれません。MZPlatformユーザー会サイト管理者情報ありがとうございます。
確かに、サーバ名かポート番号などの書き方に問題がありそうです。接続を試すMZアプリですが、MZ本体と一緒にインストールされている「データベースアクセス_4(DB切替版).mzax」をお使いいただけますでしょうか。場所はインストールフォルダの下の「AP_DATA/Sample」にあります。
こちらを起動していただくと、データベース接続設定のフレームに「登録名」のコンボボックスがありまして、こちらを「Oracle」にしてください。
あとは、「サーバ」のフィールドの中で「localhost」のところにサーバ名(ここでは//FT8000SVR?)、「orcl」のところにサービス名(ここではKAIHATU)を入れます。ポート番号は「1521」ではないでしょうか?独自の環境で指定されているならそれを書いていただきます。いただいた画像を拝見すると少なくとも「/em」は余計な感じがしますが、サーバ名がこの書き方で通るかどうかはよくわかりません。WindowsのPC名であれば、「\\」もお試しいただき、それでもだめならIPアドレスも試していただけるとうまくいくかもしれません。
最後に「ユーザ名」と「パスワード」を適切に入力していただき、「スキーマ名」も「ユーザ名」と同じものを入力してください。
これで接続できると良いのですが。
以上、お試しいただけますでしょうか。MZPlatformユーザー会サイト管理者まずはエラーの詳細についてお知らせいただけますでしょうか。
「IOエラー」以外に表示されている文字列をお書きいただくか、画像を添付していただけると助かります。画面上でそれ以上の表示がなければ、ログファイルをご確認ください。
ログファイルはMZインストール先(例えばC:\MZPlatform\3.5)のlogフォルダに、Platform***.logという名前で、曜日ごとのテキストファイルが作成されています。
atの行をすべて書くと多いので、該当する箇所で例えば接続に失敗している理由等が書かれている部分を抜き出してください。また、お手数ですが使用環境について可能な範囲でお知らせいただけますでしょうか。
Oracle DBのバージョンと、使用したJDBCドライバの名前、JDBCドライバの配置先のパス、MZ側で接続先サーバの情報として記入したパラメータ、ODBC側で記入したパラメータ、これらを見れば何かわかるかもしれません。 -
著者投稿