第14回 Excel連携をやってみよう
エクセル活用のメリット
これまでの連載で業務IT化は受注情報や購買情報、日報処理など、データを登録したり編集したり、参照する事がほとんどであり、その為のSQL文とMZの構築方法をお伝えしてきた。その中で第7回で実践した「Select文」はシステム構築が進むにつれて集計や演算で算出する事が多くなってくる為、中級レベル以上になってくると複雑で多岐に亘りMZだけで構築することが厳しくなってくる。MZで取得したデータをエクセルにダイレクトに出力する事によって、この難しさを回避出来る様になる。
セットアップ
◎MySQL ODBCドライバーの設定
1:https://dev.mysql.com/downloads/connector/odbc/へアクセスしダウンロードを実施
2:タイトル:MySQL Community Downloads にある Connector/ODBC 8.0.xxのLooking for previous GA versions? をクリック
※新しいバージョンは起動しない可能性があるため
3:タイトル:Connector/ODBC 5.3.xx の Windows(x86.32bit) MSI Installer Downloadをクリック
※64bitか32bitはMZの設定bitに合わせる事バージョンに揃える事
(動画は32bitバージョンで監修)
4:LoginやSignUpの画面に切り替わるので該当者はそちらを、特に無い人は「No thanks,just start my download」をクリック
5:ダウンロード始まるので終了後、ダウンロードファイルからインストーラーを起動する。
6:Next押下
・License Agreement画面で 「I accept the terms in the licence agreement」を選択しNext押下
・Setup Type 画面で 「Typical」を選択 Next押下
・Ready to Install the Program画面でinstallを押す
・終了したら「Finish」で終わり
コントロールパネルのセットアップ
7:コントロールパネル⇒管理ツール⇒ODBCデータソース(32ビット)をクリック
⇒ODBCデータソース アドミニストレータ(32ビット)が開くので「追加(D)」をクリック
「MySQL ODBC 5.3 ANSI Driver」を選択
8:Connector/ODBCのセットアップ
・Data Source Name:MZ(任意)
・Description:なし
・TCP/IP Server:なし
・Port:3306※
・User:root※
・password:root※
・Database:mz※
※第3回の初回セットアップで変更した方はその値を入れる事!※
9:テストボタンを押して「Connection Successful」で成立。
エクセルへデータの展開方法
・エクセルを起動
⇒メニューバー「データ」を選択
⇒データの取得
⇒その他のデータソースから(O)
⇒Microsoft Queryから(M)
⇒データソースの選択画面が出る。
・先程ODBCで設定したData Source Nameがあるので選択する。
・現在登録してあるだけのデータベースのテーブルリストがあるので取得したいテーブルを選択する(この時点では「company」)
・左側のスタッフを選択し真ん中にあるボタン「>」を押すと右側にデータベース情報列名一覧が移動する。次へ(N)押す
・条件分岐が設定出来る、(今回は無視)。次へ(N)押す
・優先キーを設定出来る、(今回は無視)。次へ(N)押す
・クエリの編集有無を選択出来る、(今回は無視)。「Microsoft Excelにデータを返す(R)」を選択。「完了」押す
(※将来的にはここである程度、取得するデータを絞る必要が出てくる為、簡素ながらSQLの知識が必要になってくる)
・エクセルシートの何処にデータを払い出すか聞いてくるので指定すると(左上A1を選べばよい)データが抽出される。
これでデータベースからエクセルへデータを取得する一連の流れとなる。MZのみでデータをSelectしてテーブルに情報を展開する場合はSQLで全てデータを整えてから排出しないと見てる人が使い易い情報にならないが、エクセルの場合はとりあえず、データを取得すればその値を基に算出したり、集計したり、グラフ化したり、仮計算(もし80%だったら・・、1.2倍だったら・・)など汎用性が高い。その上、SQL文も難しい分岐やIF文を多用せずとも、ある程度使える情報を楽に得られて活用出来る。
まとめ
MZとエクセル連携はこれで完了である、入力インターフェイスをMZで、分析や検証をエクセルで実行しても社内運用が満たせるのであれば、今回の方法でも十分よいと思う。社内全体で共有したい情報をMZで提示して、セクション毎に異なる情報を希望する場合はエクセルで生データを渡した方がお互いラクでもある。(都合上掲載出来なかったが・・)今回は情報の払い出しに注力したが、逆にエクセル情報をワンクリックでデータベースへ投入する方法もある、一行一行データを登録するのが面倒な場合に大変効果的である。
次回はとりあえず最終回。構築したMZシステムを社内全体で展開する方法と簡素なSQLをお伝えする。
第14.5回 Excel連携2 <リクエスト回答>
エクセル活用データ投入編
第14回ではエクセルにデータベース情報を吐き出す方法をお伝えした。
最後の方まとめに記載したエクセルデータをデータベースに登録する方法も知りたいとあったので
これに応えてその方法を記載する。
まずは提供ファイルの説明
1:MZファイルを開いてもらい、複合コンポーネントへ入る
2:ID「1-3」~「1-6」のテキストファイルには設定項目が入っているので触らない事!
3:お使いのofficeのbitによって用いるテキストフィールドが異なる。
4:下の方へ移動して1-11ファイル選択からつながる「文字列格納変数」に該当するテキストフィールドを設定する
5:さらに下へ移動して1-20ボタンからつながる「データベースアクセス」に登録したいDBテーブル名を設定する
次は使い方の解説
1:データベースへ入り、DB「MZ」テーブルcompanyを見てみる
2:第12回で実践したデータがいくつか入っている事が確認できる(はず・・・)
3:次にエクセルファイルの確認をする。
4:予めと登録したいデータを記入しておく、
(この場合登録したいDBテーブルの列名・型種を揃えること!)
5:次にMZを起動して「実行」
6:ファイル選択を押して、エクセルデータを選ぶ
7:活用したいエクセルの「sheet」を選択すると、ファイルのデータが展開される
8:右上のボタンを押すとDBへデータが登録される
9:確認のため、データベースをチェック
まとめ
この方法を使えば、既存の社内システムからデータを引っこ抜いて、MZに登録して試験運用したり、改修システムを自社で作ったり出来る。
顧客データなど何百行もあるのをポチポチ手入力するのはやってられない。
さらに立ち上げ時にはシステムを併用する必要があるので、この回は使えると思う。
誰も見てないかと思いきや、問い合わせに「ビックリ」。フォロワーがいらっしゃるとは・・嬉しく思っております。
「やる気」と「暇な時」に更新してますので、スグにはアップできないかも)
第15回:複合コンポーネントを使おう!2
複合コンポーネント2
今回は第11回の続編。
複合コンポーネントのメリットは
・特定ファイルをまとめてパッケージ化
・画面の視認性UP
・プログラマーも管理しやすくなる
まぁ、便利。ところが・・・
反面コピペして使い続けると一部変更が生じた際に全部やり直さないといけなくなる・・・
そこで!
今回は「リファレンス(参照)」を紹介する
使い方の説明
1:第11回で説明した「5-Staff.mzax」をロード
2:ID8複合コンポーネントの中に入る
3:複合コンポーネントの中に新しく複合コンポーネントを作成する
4:右クリック「属性情報設定」から設定画面に入り
5:Reference:任意のファイルを指定する
6:Reference Enableを「True」を選択
7:設定完了、黒い文字(この場合<No Name>)が青に変わればOK
8:C:\MZPF\AP_DATA_COMBのフォルダに参照するファイルを入れる
⇒第2回のMZファイルの設定:3の詳細が関連する
C:\MZPlatform\3.6_64\etc にある「Platform.ini」
CombinativeComponentsFolder=××
この指定ファイルが本件の参照ファイルを格納する場所
9:1度「5-Staff.mzax」を上書き保存して
10:再度読み込み
11:参照設定した複合コンポーネントの中身が反映されていればOK
参照ファイルの作り方
1:複合コンポーネントに入る(どこでも良い)
2:任意のシステムを構築する
3:保存ボタンを押し、「この階層のみ」を選ぶ
4:ファイルを生成する
5:○○.mzcs&○○.mzcxファイルが出来る、これをC:\MZPF\AP_DATA_COMBに保存すればOK
注意点!
参照したファイル(この場合DB access.mzcx)は上層システム(この場合ex-staff2.mzax)とは無関係。
参照ファイルの中身を変更して上層システムの「上書き保存」をしても複合コンポーネントの中身は更新されない。
変更した場合は、複合コンポーネントの中でその階層のみ(この場合DB access.mzcx)を上書きすれば成立する
まとめ
リファレンスを覚えておけばいつも使うデータベースアクセスなどは1回作ってしまって使い回せば良いまたデータベースアクセスは今までローカルアクセス用に設定していたが
第16回:MZ プラットフォームによるシステムの簡単な構築方法2(実践)
第1回の実践版
今回はMZの構築方法というより、システム全体の構築方法となる。
MZ自体はほとんど説明したのでもう充分かと・・
1番難しいシステム構築をお伝えする。
IT経営やってみよう!(実践)
セミナーや導入説明で情報交換すると「受注情報」を管理したいとよく聞くのでそのケースで解説する。
1:受注情報を登録
2:登録情報のリスト化
3:出荷時に納品完了
という流れで行ってみよう!
①受注時に管理したい項目を決める
社内管理No.・品名・受注金・客先・納期・自社の担当者・納品完了
②共通情報として何回も使う項目は別途マスターを設ける
・顧客マスター
顧客コード・名前・〒・住所・電話・〆日
・社員マスター
部門・名前・入社・退社
※これは一例、実際は自社に合わせて項目が増えると思う(説明がややこしくなるので、まずはこの程度)
③データベースに列名とデータ型をセット
(.sqlファイル。判らない方は13.5回を参照)
④マスター画面の構築
顧客マスターと社員マスターを製作
(.mzcxファイル。リファレンス判らない方は15回を参照)
⑤登録画面を構築(Insert)
(.mzcxファイル。リファレンス判らない方は15回を参照)
⑥受注情報をリスト化して表示(Select)
⑦出荷情報を更新出来る様にする(Update)
⑧(誤って登録した場合に削除する画面を作るかはお任せ)(Delete)
⑨全てをメイン画面にセットしたら完了
やってはいけない!
★マスターを使わない
受注時の管理項目(社内管理No.・品名・受注金・客先・納期・自社の担当者・納品完了)と仮に設定しているが
客先マスターIDでなく、名前を実際登録したら良いのでは?マスター不要では?と思うかも知れないが、
仮に「A社」と実登録した場合、数年後に社名が変わって「AAA社」となれば、全ての既登録情報を書き換えないといけない
マスター管理なら、1度書き換えれば、全ての情報が更新される。
★登録項目増やし過ぎ
受注情報に自社担当の所属とか役職など追加で入れたいなど、後から要望が出る。(これは必ず出る、なぜか絶対増える)
その時にマスター側になるべく増設する事。
受注テーブルには自社スタッフIDを紐付けているので、そういう情報は連なっている。
★列名は「英語」
コンピュータが英語圏で開発されているのでDBの列名は「英語表記」。
日本語にした場合、互換性や文字化けなど、後から余計な「苦労」が待っている
辛抱して「英語」を使うこと
まとめ
システム全体を上手くまとめるのは大変難しい。
「社としての業務バランス」と「システムを構築出来る」双方のスキルが必要で一言で伝えきれない。
今回はサンプルを乱発している、取得してみて理解を深めて欲しい。
あとがき:スタートアップの方には3か月分くらい短縮できるかも・・。第16回疲れたぁ~
第16.5回:MZ プラットフォームによるシステムの簡単な構築方法2(実践)
第16回のおまけ
16回は説明はほとんど無いが全て組み上げて起動すれば受注管理システムが立ち上がる。
実際に社内で使うには項目が足りないが、体感する事は出来るだろう
作業日報やってみよう!(実践)
「受注管理」に次いで良く聞く管理項目が「日報管理」である。
1:日報で何を管理するか考える
2:マスターの再考
3:入力画面の構築
という流れで行ってみよう!
①日報に登録するデータを考察する
自社担当・工程(機械)・仕事番号・開始時刻・終了時刻・要した時間
⇒後に取得したデータを活用する事を考えて決まる事
ダメパターン:あれこれ欲張るのは×。入力が面倒になると誰も使わない・・
②マスターの追加の有無(16回同様⇒共通情報として何回も使う項目は別途マスターを設ける)
・工程(機械)マスター
名前・フラグ・レート
(追加するなら)エリア、作業レベル、購入日など
・データベースに列名とデータ型をセット
(.sqlファイル。判らない方は13.5回を参照)
④マスター画面の構築
工程マスターを製作する
※下記デモ用サンプルは前16回のMZ system.mzaxに繫げて用いる事※
(.mzcxファイル。リファレンス判らない方は15回を参照)
⑤日報入力画面を構築
(.mzaxファイル。リファレンス判らない方は15回を参照)
⑥DBを開いてみて、データが格納されている事を確認する事
⑦登録情報を(Select文)を用いて参照出来るかやってみよう!
⇒これは簡単なので自作してみよう
・Select * from `Report`
とやってしまうと
ID | Member_ID | Process_ID | Orders_ID | Start | Stop | Time |
1 | 2 | 1 | 1 | 2020/2/2 2:02:02 | 2020/2/2 2:22:02 | 20.0 |
こんな感じのデータが取れるので、社内の人に表示しても「?」となる。
・Select Report.Member_ID , Member.name from `Report` , `Member` Where Report.Member_ID = Member.ID
とすれば
Member_ID | Name |
1 | 鈴木 |
ReportテーブルとMemberテーブルから情報を参照してWhere区の中でReportのMemer_IDはMemberテーブルIDと同じと記載している
他の項目も続けて同じ様に参照(Select)すると
①
Select
Report.Member_ID , Member.name ,
Report.process_ID ,Process.name ,
Report.orders_ID , orders.no ,
Report.start , Report.stop ,Report.Time
from `Report` , `Member` , `process`, `orders`
Where Report.Member_ID = Member.ID and Report.process_ID = process.ID and Report.orders_ID = orders.ID
となるの。
実際に参照されたデータは数字とテキスト名が出るので社内の人も理解出来る。
さらにこの記載方法だと長ったらしいので
②
r.Member_ID , m.name ,
r.process_ID ,p.name ,
r.orders_ID , o.no ,
r.start ,r.stop ,r.Time
from `Report` as r, `Member` as m , `process` as p, `orders` as o
Where r.member_ID = m.ID and r.process_ID = p.ID and r.orders_ID = o.ID
文章のFrom区でテーブルを「as ○○」すれば短く出来る。
①と②は同じ結果が返ってくる。
16回との連動効果!
★受注情報に基づいて原価把握出来る
登録された仕事番号に基づいて加工実績が連動する。
どの程度時間を掛けて製作されたのか見える化できる
★工程(機械)別での分析の可能に!
仕事番号でソートすれば仕事毎の原価把握に使える。同じく
工程毎にソートすれば負荷の高いエリアの把握など分析幅が広がる
まとめ
少ない取得情報で現場の苦労を減らしつつ、管理者側も効率的な情報を得る必要がある。
皆が等しく入力してくれないと不確かな情報が集まるので
これは大変難しいバランスとなる。
ぼやき:この辺りまで来るとボランティアの範囲を超えている気がする・・。
第17回 製作システムの運用を開始してみよう!
とりあえず最終編:構築したシステムを社内展開してみよう
<構成イメージ図>
まずはシステムの構成イメージを見て頂こう、事務所や現場に置いたPCからMZにデータを入力した場合は社内に一台あるデータベースを入れたホストコンピューターへ情報を保存する。因みにWindowsのサーバPCというのがあるので、それは新規で購入しないといけない。用途の特性上24時間シャットダウンしない為、通常PCよりタフな構造になっている。入力に使う個別PC(クライアント)は特に指定はなく、ホストへデータを登録したら、手元のPCへはデータは残らない。既に現場にパソコンがある場合は製作したMZを使える様にセッティングすれば良いだけで、現在、設置がない場合は安価なノートPC(中古でも可)を用意して設置すれば良い。現場はWiFi環境か有線LANケーブルが付けられないと入力環境は整わないのでご注意を。
※社内でデータ保存するのがリスクと捉える事も出来るが、クラウド化はお金が掛かるので、社内システムが順調に運用された後に追って検討しても十分に良いと思う。
0:ホストPCを用意する。(とりあえず試して見るならば、ノートPCでも何でも良い)
1:ホストPCのシステム環境を整える
・Apache・phpMyAdmin・MySQL・PHPをインストールし、諸々の初期設定を実施(第3回参照)
2:MZをインストールし、MZのライセンス申請・ドライバやシステム環境設定を実施(第3回参照)
3:ホストPCのネットワークIPアドレスを固定値で設定する
・コントロールパネル⇒ネットワークとインターネット⇒ネットワーク接続⇒接続プロパティから設定出来る
4:データベースに外部アクセス用の特権を加える
・データベースにアクセルする
・今回作成したデータベース「mz」を選択しヘッダー内にある「特権」をクリックする
・下方にある「New」のAdd user accountを押す
・ログイン情報のUser nameとパスワードを設定する。(表示は「test」と入力している)
・Database for user account の「□ワイルドカード~」を選択し、「実行」を押す
5:MZデータベースアクセスコンポーネントの設定を変更する。
今まではローカルの設定にしていたので、今後はホストコンピュータのIPアドレスを設定して変更する必要がある。
・起動メソッド⇒1:データベースのURL メソッド/値を
「jdbc:mysql://localhost/MZ?useUnicode=true&characterEncoding=SJIS」と記載してあるとが、これを
「jdbc:mysql://_ホストPCのIPアドレス_/MZ?useUnicode=true&characterEncoding=SJIS」へ変更する。
・ユーザ名とパスワードを「root」から「4」にて設定した値に変更する。(例では「test」)
・変更後の上書き保存を忘れずに!
6:各々現場の端末で製作したMZファイルを起動出来る様にする
・ホストPCに共有フォルダを設ける、場所は何処でも良い。
※ネットワークの共有設定をしないと他のPCからはアクセス出来ないので設定が必要!※
・今まで作ってきたファイルを置く。現場用PCからそのフォルダにアクセスしてデスクトップにショートカットを設ければ完了
7:現場用PCにMZをインストールする。
・端末用のPCはインストールだけで構わない。ライセンス申請は不要
※ホストPCと同じバージョンをセッティングする事!
8:動作チェック
・現場用PCからファイルを起動してみる。これまで製作した画面がビルダーなしで起動する。
・試しに仮のデータを入力しホストPCのデータベース 経由かMZを立上げ、
入力データがその通り反映されていれば、セッティングは終了。
初期段階の運用ではこの方法で少しづつ取り組んで社内ITを浸透させれば良いと思う。実際に運用してみてシステムを更新・改変した時はホストPCのファイルを更新すれば現場システムも更新される様になる。クライアントPCの数が少ない時はこの方法で実践してIT運用を試してみて欲しい。端末の数が多くなってくるとこの方法は厳しくなってくるので、その時は別のやり方もお伝え出来る。まずは拙くとも始める事が大切である。