作成した返信
-
著者投稿
-
MZPlatformユーザー会サイト管理者
ご連絡ありがとうございます。
1)申し訳ございません。この掲示板へのファイルのアップロードですが、mzaxファイルやbatファイルはそのままではアップロードできないため、フォルダーに入れて圧縮してからアップロードしていただけないでしょうか。大変ご面倒をお掛けいたしますが、よろしくお願いいたします。
2)ファイルを拝見する前ですが、「prodution.sql」のファイルの内容を変更して実行したところ、ERROR 1231 (42000) at line 31: Variable ‘character_set_client’ can’t be set to the value of ‘NULL’のエラーが出てしまうということですが、
編集の際7行目にある「/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;」の記述を削除したり、変更してしまってはいないでしょうか。
手元のファイルで確認したところ、この記述はファイルの最初の(7行目)と最後の部分(71行目)にあり最初の方を削ってしまうと、後半の部分で引っ掛かってしまうようです。この記述はファイル実行のために絶対必要というわけではないので、エラーが解決できないようでしたら、2箇所ともコメントアウトあるいは削除して試してみてください。
また、データベーステーブルの作成も、batファイルでの実行が便利ではありますが、MySQL command Line Clientから「--」や「/*!」が先頭についていない記述の部分(例:CREATE DATABASE IF NOT EXISTS production;)を入力していっても作成できます。
3)ガントチャートについては、WEB版『工程管理チュートリアル1』ページにあるように、テーブルデータがあれば[グラフデータ作成]複合コンポーネントで簡単に表示できます。
以上ご確認いただき、ご不明な点がございましたら、お知らせください。
ファイル再送の手間をお掛けいたしますが、どうぞよろしくお願い申し上げます。MZPlatformユーザー会サイト管理者ご連絡ありがとうございます。
お知らせいただいた設定は、意図しない間に自動的にDBが起動しアクセス可能となることでの問題を意識していますので、絶対変更しなければならないわけではありません。
OS起動時にはDBが起動していることが分っていれば問題ないかと存じます。
よろしくお願いいたします。MZPlatformユーザー会サイト管理者ご連絡ありがとうございます。
1)まず、事前準備としてJDBCドライバをMZPlatform\4.0\jars\extフォルダに配置します。使用するデータベースによってドライバ名や入手方法は変わりますが、MySQLの場合はMySQL Insrtallerからダウンロードできます。2)一番簡単にご自分のデータベースにMZから接続できるか確認するには、MZPlatform\4.0\AP_DATA\Sampleフォルダ内の「データベースアクセス_1.mzax」あるいは「データベースアクセス_4.mzax」を使っていただくのが良いかと思います。
MySQLをお使いの場合は、パスワードの欄にパスワードを入力し、「接続」ボタンを押すと画面にツリー図が表示され、フォルダを展開してノードをクリックすると右側にテーブルが表示されます。
他のデータベースをお使いの場合は「データベースアクセス_4.mzax」で「登録名」のところをクリックすると他のデータベース名を選べ、ドライバーやサーバー名などを各DBに合ったものに変更できます。3)接続確認ができましたら、MZ上に目的のデータベースのテーブルのみの表示を試みます。
上記サンプル、また添付のファイルでもデータベース名「production」を指定していますので、目的のテーブルがあるデータベースに合わせてデータベース名欄を変更します。検索SQLの基本的な文は「SELECT 列名1, 列名2, FROM テーブル名」ですが、例えば工程管理のtaskテーブルの内容を取得するとき「select id, process, projectLabel, workingTime, dateStart, dateEnd, isCompleted from task」というSQL文を実行しています。
このSQL文を目的のテーブル名、列名に変更します。初めは「SELECT * FROM テーブル名」で全列取得してみて、その後「*」の部分を列名に変更しても良いかと存じます。以上1)の事前準備と3)の変更はWEB版『工程管理チュートリアル1』の「2.2 検索結果のテーブルへの設定」までがご参考になるかと存じます。https://ssl.monozukuri.org/mzplatform/docs_web/mztutorialtop.html
から チュートリアル>工程管理アプリケーション作成をクリックして表示されるページをご覧ください。
上記WEB版『工程管理チュートリアル1』のサンプルファイルはページ上部のリンクから取得できますが、[ガントチャート]は削除して2.2章までの内容にしたものを添付いたします。
データベース名およびパスワードと複合コンポーネントのメソッド「検索SQLを実行する」の引数(SQL文)を変更してご確認ください。またhttps://ssl.monozukuri.org/mzplatform/docs_web/mztutorialdatabase.htmlページ下部の「データベースからのデータ取得の流れ」項の内容のように、複合コンポーネントを使わず[データベースアクセス]コンポーネントの引数に接続情報を設定し、SQL文を実行してテーブルデータの取得も可能です。
まずは以上ご確認いただき、ご不明な点、ご要望がございましたら、再度ご連絡いただければ幸いです。どうぞよろしくお願い申し上げます。
- この返信は、 MZPlatformユーザー会 により、 8 ヶ月, 1 週 前 に編集されました。
- この返信は、 MZPlatformユーザー会 により、 8 ヶ月, 1 週 前 に編集されました。
- この返信は、 MZPlatformユーザー会 により、 8 ヶ月, 1 週 前 に編集されました。
添付ファイル:
MZPlatformユーザー会サイト管理者ご連絡ありがとうございます。
特に稼働休憩時間の計算をする必要が無い場合は、[カレンダー]のメソッド「指定時刻までの経過時間の取得(Date)」を使うのが簡単です。先にまず[カレンダー]に開始日時の「日付を設定」し、次に上記メソッドの引数に終了時刻を設定すると、開始日時-終了日時のミリ秒での時間数が取得できます。
ミリ秒ですので[整数格納変数(BigInteger)]か[除算(÷)]コンポーネントに設定して、「60000」で割って分単位に直します。以上お送りいただいたファイル変更を加えてみましたので、ご確認いただき、ご不明な点等ございましたら再度ご連絡いただければ幸いです。
添付ファイル:
MZPlatformユーザー会サイト管理者ご連絡ありがとうございます。
確かに繰り返し処理を設定した[ラベル要素]にNULL値を設定すると、NULLと表示されてしまうようです。
[テーブル]の文字列型の列の場合、通常空欄には空白文字列が入っていますが、日付型や数値型の場合NULL値が入っていることで空欄となります。一番簡単に変更するにはデータ取得の際にメソッド「指定セルの値を取得する(int,int)」ではなく「指定セルの表示文字列を取得する(int,int)」で[テーブル]からセルデータ取得時に文字列としてしまうことです。
ただ表示文字列の取得だと処理上都合が悪い場合や、元のテーブルデータを[テーブル]に表示せずに変数に入れて編集したい場合には、別の方法も考えられます。
日付列に関しては編集領域を右クリック>[複合コンポーネント追加]>[テーブル]>[テーブル日付データ文字列変換.mzcx]を追加し、この複合コンポーネントで日付型列を文字列型に変換することができます。
また他の数値型列等の列型の場合は[NULL判定]を使って、NULL値が入っていた場合は代わりに空白文字列を取得することが考えられます。上記確認のためのサンプルファイルを添付いたしますので、ご覧いただき、ご不明な点がございましたら、再度ご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。添付ファイル:
MZPlatformユーザー会サイト管理者ご連絡ありがとうございます。
接続先処理には問題はなかったようですので、[サブルーチン]の呼び出しのメソッドが原因かと推測します。
今回[テーブル]の「データ選択イベント」に接続したいということを明示するために、[サブルーチン(別解)]からもデータ選択イベントを発生させていますが、この場合[サブルーチン]を呼び出す際のメソッドは「イベントを渡して処理を呼び出す(PFEvent)」を使用し、引数には「取得方法:イベント」を設定します。
メソッド「処理を呼び出す()」を選択したり、違う種類のイベントに繋げてしまったり(例:データ更新イベントに、データ選択イベントが発生イベントの[サブルーチン]を繋げる)などすると処理は呼び出されません。特にイベント内包データを取得して[サブルーチン]の接続先処理で利用したい時に「イベントを渡して処理を呼び出す(PFEvent)」の方を使用します。それ以外はメソッド「処理を呼び出す()」を使用し、[サブルーチン]からの発生イベントはアクションイベントを使用することが多いです。この場合もアクションイベント以外を[サブルーチン]から発生させると、処理が呼び出されません。
以上ご確認いただき、ご不明な点等ございましたら、再度ご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。MZPlatformユーザー会サイト管理者お問い合わせありがとうございます。
[コンボボックス]へのデータ設定は[テーブル]から列データをリスト型で取得して設定することができます。
この時どのように下位分類の[テーブル]と連動させるかということですが、もし症状テーブルが1つずつ別々にMZ上に取得されているなら、一旦[リスト格納変数]に各テーブルデータを要素として格納し、上位の[コンボボックス]の要素が選択されたときに、選択位置と同位置のテーブルデータを取り出して、次の[コンボボック]用の列データを取得することが考えられます。上位分類のキーワードの順番に下位分類のテーブルデータを[リスト格納変数]に格納します。また、症状テーブルは全データを1つのテーブルデータとして取得してあり分類番号で整理されているなら、一旦[テーブルサブセットフィルタ]に設定し、分類番号で選択したテーブルデータから列のリスト型データを取得することも考えられます。
以上の処理を確認できるように簡単なサンプルファイルを作成しましたので、添付いたします。
ご確認いただき、ご不明な点、ご要望等ございましたらご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。添付ファイル:
MZPlatformユーザー会サイト管理者ご連絡ありがとうございます。
iniファイルではどうしてもアプリケーションファイルとは別にもう一つファイルを管理することになりますので、データベースにデータが格納できるのでしたら、そちらに越したことは無いと存じます。
現在のところ受注番号を格納する列があるかどうか不明ですが、受注番号は「230012」等そのまま格納し、MZ側に読み込んだ後、「年度」と「連続番号」に分割するのが簡単かと考えます。
例えば受注番号のデータベースでの列名を「num」と仮定して
1)SQL文「select MAX(num) from テーブル」を実行します。これで最大の(=最後の)受注番号を取得できます。
2)取得した1行1列のテーブルのセルの値を取得し、[文字列格納変数]に設定します。
3)[文字列格納変数]では最初から数えて〇番目、または最後から数えて〇番目までの部分文字列を取得できます。最初から2文字、最後から4文字目までの文字列を取得し、年度と連続番号とします。
この後は前回と同様の処理で受注番号を作成できます。もし、データベーステーブルへの後からの列追加等で、受注番号の列に「NULL」値が入る可能性がある場合には「SELECT COALESCE(MAX(num), 230000) FROM table」としておけば、最大ととしてNULL値が取得されるケースでも「230000」が取得されます。
データベースにデータ追加時には、現在もInsert文で処理を実行されていると思います。nsert文に受注番号分の列名と値を追加する以外、特に大きな相違はありません。
実際には動作しませんが、上記処理の流れが判るように修正を加えてサンプルファイルを添付いたしますので、ご参考になれば幸いです。
ご不明な点、ご要望等ございましたら、どうぞ再度ご連絡ください。
よろしくお願い申し上げます。添付ファイル:
MZPlatformユーザー会サイト管理者お問い合わせありがとうございます。
会計年度期間を「4月~3月」と仮定すると、現在日時から月数を「3」引くことで、1月から3月も前会計年度に含めることができます。
また、カウンターのリセットについてはアプリケーション起動時に前回使用時までの「年」と今回起動時の「年」を比較して、違いがあった時に[数値入力カウンタ]の値を「0」に設定することが考えられます。ただ、この「年」と[数値入力カウンタ]の最終値を含む受注番号をデータベースに登録しない場合には、前回までの値を知ることが難しくなります。アプリケーションビルダーでアプリケーションを起動し、終了時に必ず保存すれば[ラベル]などのGUI部品に設定された値は保持されますが、完成したアプリケーションを毎回上書きしていくことになり、また保存忘れなども起こり得るかと思います。
また、ファイルの内容を編集する必要のないユーザーが使用する際にはアプリケーションローダーでの起動をお勧めしておりますが。[アプリケーション]のメソッド「save(File)」を設定した場合を除き、ローダーではアプリケーションファイルが更新されることはありません。データベース以外でアプリケーションファイル外に値を保存したい場合は「iniファイル」(設定ファイル)の使用をお勧めしております。
iniファイルはキーと値を「=」でつないだ書式を持つテキストファイルです。
MZプラットフォーム研究会のHPからもダウンロードできる「MZ Platform IoT Toolkit」内のアプリケーションでも使用しております。
必要時にこのiniファイルからキーに相当する値を読み込み、また保存することができます。会計年度の設定とiniファイル読み込み・保存の処理を設定したファイルを添付いたします。またiniファイルも添付いたします。iniファイルはアプリケーションファイルと同じフォルダに保存してお試しください。
上記の処理はアプリケーション開始時が適当かと思いますが、分りやすいようにボタンを押したら行われるようになっています。ファイルをご確認いただき、ご不明な点、ご要望等がございましたら、再度ご連絡いただければ幸いです。どうぞよろしくお願い申し上げます。
添付ファイル:
MZPlatformユーザー会サイト管理者ご連絡ありがとうございます。
正規表現では半角括弧等がメタ文字となっているため、検索対象とする際には半角¥マークを付けてエスケープする必要があります。複雑になってしまうため、メソッド「行データを文字列で選択する(int,String)」を使って、項目が選択されている数だけ、行データを選択する繰り返し処理を行った方が簡単になるかと思います。メタ文字を考慮に入れておらず大変失礼いたしました。
SQL文内での半角括弧使用に関して手元のMySQLで試した限りでは、引用符を付けて値として用いる場合は問題ないようですが、何かありましたらお知らせいただけると助かります。SQL文の作成では[文字列格納変数]に設定するSQL文およびwhere句部分の雛形を変更し、また繰り返し処理終了後に文字列に「)」を連結する処理を追加することで可能です。
上記の修正を加えたサンプルファイルを添付いたしますので、ご参考になれば幸いです。
ご不明な点がございましたら、どうぞ再度ご連絡ください。
よろしくお願い申し上げます。添付ファイル:
-
著者投稿