フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
お問い合わせありがとうございます。
こちらはSQL文の変更は難しそうですので、MZ上での処理の追加をお勧めいたします。
データベースからの検索結果を一旦[テーブル格納変数]等に入れた後、該当の列のセルの値を取得して[文字列格納変数]に設定し、メソッド「trim()」または「trimThenReplace()」を実行することが考えられます。このメソッドは設定した文字列の先頭と末尾の空白文字および改行やタブ文字、半角スペースなどを削除するものです。
「trim()」の方は変数の値は置き換わらず、戻り値が返ります。「・・・ThenReplace()」の方は[文字列格納変数]の値が置換わるので変数から値を取得します。
ただし、全角の空白文字は削除されないので注意してください。例えば以下のようのな処理が考えられます。
1)検索結果を取得した後[繰り返し制御(FOR)]でテーブルの行数分繰り返し処理を実行します。
2)[繰り返し制御(FOR)]のアクションイベントの接続先処理に[テーブル格納変数]「セルを位置指定で取得する(int,int)」を設定します。引数0(指定行)は[繰り返し制御(FOR)]の現在値、引数1(指定列)は固定値で指定します。
3)2番目の接続先処理に[文字列格納変数]「文字列を設定(String)」します。引数にはメソッド処理結果で(2)の返値を設定します。
4)3番目の接続先処理で「trim()」を実行します。
5)4番目に[テーブル格納変数]「セルデータを位置指定で設定する(String,int,int)」でメソッド処理結果で(4)の返値を取得して、[テーブル格納変数]の同じ位置のセルに値を設定します。以上お試しいただき、ご不明な点がございましたら、再度ご連絡ください。
どうぞよろしくお願いいたします。MZPlatformユーザー会キーマスターご確認ありがとうございます。
FAQ実現したいFAQ実現したい処理Q90のサンプルファイルは、アプリケーションを1つだけ立ち上げて、メインフレームとサブフレームとの間で連携しているので、複数のアプリケーション間で連携するのとは少し違っています。
独立した2つのアプリケーション間でデータを連携したい場合は、送信側、受信側それぞれにPlatfromNameとLocalhostAddress、RMIPortを記入したPlatfrom.iniをご用意ください。例えば
PlatformName=Platform01
LocalhostAddress=127.0.0.1
RMIPort=未記入(デフォルト1099)
PlatformName=Platform02
LocalhostAddress=127.0.0.1
RMIPort=3000
となります。以下3つの場合に分けて考えます。
1.アプリケーションビルダーまたはローダーを1つ起動し、一つのアプリケーション内のメインフレーム、サブフレーム間でデータを取得する場合。FAQ実現したい処理Q90のサンプルファイルのような状況です。
この場合、一つのPlatform.iniを編集し、PlatformNameとLocalhostAddressを設定します。hostsfile.iniとAccessPolicy.iniの設定はしなくても起動できます。2.同一のJava環境でビルダーまたはローダーを複数起動する場合。2つのアプリケーション間でデータの連携をする場合には、双方のビルダーまたはローダーに連携の設定をしておく必要があります。
iniファイルはデータ連携を利用して起動する数だけ作成し、ポート番号は他と競合しない任意の番号を設定します。例えばPlatform01.iniとPlatform02.iniが必要です。また、hostsfile.iniとAccessPolicy.iniもPlatform01とPlatform02について記述します。
hostsfile.iniは手順書の記述例に倣って記述します。
AccessPolicy.iniのallowAllの項は、例えば「allowAll=local, Platform01, Platform02」となります。3.2台の別々の環境のPCで起動する場合、ほぼ2と同じ考え方になります。
ポート番号は同一PC内で重ならなければ、他のPCと同じ番号も利用できます。以上、ご不明な点がございましたら、どうぞ再度ご連絡ください。
よろしくお願い申し上げます。MZPlatformユーザー会キーマスター説明が不足していて申し訳ございません。
アプリケーションローダーでもビルダーでも、iniファイルに指定されているjava環境を使用しているので、データ連携用の設定をしている場合には、同一の環境で複数立ち上げることはできません。
前回検証用には実行環境をコピーして、元々インストールされていたものとは別環境にすることを提案いたしましたが、データ連携用にさらに複数のローダーあるいはビルダーを起動したいという場合には、一々コピーする訳にもいかないので、起動時のオプションにiniファイルを指定して起動する方法をご案内します。
1)etcフォルダの中にPlatformName、LocalhostAddres、RMIPortを指定したiniファイルを別名を付けて保存します。例えばPlatform01.iniとします。
2)PFBuilder.exe、(あるいはPFLoader.exe)のショートカットを作成します。
3)ショートカットを右クリック>プロパティを選択します。
4)プロパティ画面のショートカットタブをクリックし、リンク先項を以下のように書き換えます(ビルダーの場合)
C:\MZPlatform\4.0\PFBuilder.exe -ini etc/Platform01.ini
5)ショートカットをクリックすると、Platform01.iniを使ってビルダーが起動するようになります。
6)コマンドプロンプトを立ち上げて「C:\MZPlatform\4.0\PFBuilder.exe -ini etc/Platform01.ini」と入力しても、起動することができます。データ連携用にビルダー、ローダーを起動する数だけ、他と競合しないRMIPort番号を設定したiniファイルを作成し、別名で保存します。
以上お試しいただき、ご不明な点がございましたら、どうぞ再度ご連絡ください。
よろしくお願い申し上げます。MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
PlatformNameとLocalhostAddresを設定したiniファイルを使い起動したアプリケーションビルダーは、通信の準備をした状態でデフォルトでは1099のポートを使用し立ち上がっていることになります。
したがって、もう一つビルダーを立ち上げようとすると、アドレス及びポート番号が既に使われているというエラーが発生し、起動できません。検証用にもう一つアプリケーションビルダーを起動したい場合は、例えばC:\MZPlatformフォルダ内の「4.0」と「Java」のフォルダーを別なフォルダーにコピーし、こちらのPlatform.iniをデータ連携用に設定し、PFBuilder.exeをクリックして起動することが考えられます。
元々インストールされていたMZの方には外部連携機能は設定せず、コピーした方を検証用に使用するということです。
「4.0」と「Java」は同じフォルダ階層に置いてください。全てのファイルをコピーする必要はないのですが、容量に問題が無ければそのままコピーしてしまってください。また、同じPC内で2つのMZに外部連携機能は設定したい場合は、一方のPlatfrom.iniファイルのRMIPortに違うポート番号(例:3000)を設定してください。
以上、ご不明な点がございましたら、どうぞ再度ご連絡ください。
よろしくお願い申し上げます。MZPlatformユーザー会キーマスターご連絡ありがとうございます。
エラーメッセージから判断すると、読み取り権限やセキュリティ関連の事象かと思われるのですが、手元ではファイルのロードができないというエラーが再現できずにおります。
お忙しいところ恐縮ですが、添付のiniファイルを設定してお試しいただけないでしょうか。
PlatformName=Platform01
LocalhostAddress=127.0.0.1
の部分を変更しているだけです。
また、hostsfile.ini、AccessPolicy.iniも複数のビルダーにアクセスするのでなければ、設定は必要ない場合もありますが、念のためお送りします。iniファイルの設定をお試しいただいてもエラーが発生する場合は、お手数を掛けて申し訳ございませんが、C:\MZPlatform\4.0\log内にあるエラーログをお送りいただけないでしょうか。
ご面倒をお掛けいたしますが、どうぞよろしくお願い申し上げます。
添付ファイル:
MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
データ連携の設定をすることによって可能です。
C:\MZPlatform\4.0\docs\manualフォルダの中に『データ連携導入手順書.pdf』がございます。
(こちらのリンクからもご覧いただけます。
https://ssl.monozukuri.org/mzplatform/mzpf_docs/4.0/manual/manual5.pdf
)まずはこの手順書をご覧いただき、設定をお試しいただけないでしょうか。
C:\MZPlatform\4.0\etc内のiniファイルの設定、コンポーネント属性の設定、コンポーネント連携、転送処理の設定などが必要になります。ご不明な点、ご要望等をお知らせいただければ幸いです。
お手数をお掛けいたしますが、どうぞよろしくお願い申し上げます。MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
マスターテーブルと一覧テーブルは2つともデータベースに格納されているとすると、select文で検索時に結合してしまうのが簡単なように思います。
Select文は文字列を結合するconcat()関数を使って、例えば
select id, ichirantable.Type, concat(HeadNo, CardNo) from mastertable, ichirantable where mastertable.Type = ichirantable.Type
とすると、頭番号が付いて結果が取得されます。
「Type」のように同名のカラム名が存在する場合は、テーブル名+ピリオド+カラム名で指定します。もちろんMZ上でも文字列の結合はできます。
➀[文字列格納変数]にマスターテーブルのセルから取得した文字列を設定し、➁メソッド「指定した文字列と連結して置き換える(String)」で一覧テーブルのセルから取得した値を引数に指定します。➂[文字列格納変数]内の文字列を結果のテーブルのセルに設定します。
以上をテーブルの行数分繰り返し行うことになるかと思います。上記select文をお試しいただき、ご不明な点等ございましたら、再度ご連絡いただければ幸いです。どうぞよろしくお願い申し上げます。
MZPlatformユーザー会キーマスターご連絡ありがとうございます。
可能性として、やはりエクセルファイルに複数のユーザーがアクセスしていると、ロックされてしまうことが原因かと推測いたします。エクセルファイルに共有設定をされているでしょうか。もしまだでしたら、以下のページをご参考に試してみてください。
『共有ブック機能について』
https://support.microsoft.com/ja-jp/office/%E5%85%B1%E6%9C%89%E3%83%96%E3%83%83%E3%82%AF%E6%A9%9F%E8%83%BD%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-49b833c0-873b-48d8-8bf2-c1c59a628534Office365、EXCEL2019では上記の機能の他に共同編集の機能も使えるようですが、onedriveまたはsharepointのドライブに入れなければならないようです。
よろしければ上記お試しください。
どうぞよろしくお願い申し上げます。MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
下記のの資料にも書きました通り、3つのグラフとも一列目が項目名二列目以降が数値型データですので、系列グラフ用の分類が適用できそうです。レーダーチャートやロウソク足グラフは並べ替えの必要はないかも知れません。
[MZプラットフォームWEB用資料>MZ Platformのグラフコンポーネント]
https://ssl.monozukuri.org/mzplatform/docs_web/mztutorialgraph.html#content9[テーブル]の分類は主に[分類テーブル作成]コンポーネントが担っています。
コンポーネントリファレンスをご覧いただき、ご不明な点がございましたら、再度ご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
ご連絡いただいたエラーは「ORA-12505(TNS: リスナーは接続記述子で指定されたSIDを現在認識していません )」というものですが、SIDを指定しての接続の場合、サーバー接続文字列はデフォルトでは「jdbc:oracle:thin:@HOSTNAME:1521/SID」となります。
データベース名の欄に「orcl」を設定して頂いていますが、ここを記入すると、二重にSIDを指定することになります。
したがって、SIDが「orcl」の場合は指定しないか、あるいはサーバー接続文字を変更する必要があります。(「データベースアクセス_4(DB切替版).mzax」でMYSQLへのサーバー接続文字列を見ていただくと、「jdbc:mysql://localhost/」としています。データベース名欄に「production」等指定すると、実際には「jdbc:mysql://localhost/production」で接続するようアプリケーション内で処理を設定しております。)
取り急ぎまずはデータベース名欄、サーバ欄をご確認ください。
上記ご確認いただいても改善されない場合は、再度ご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。 -
投稿者投稿