Q106:作成していたアプリケーション(工程管理簡易版に機能を追加したもの)を他のファイルに保存しておき、導入後新たに作成したプラットフォーム(ファイル "Production")に移動、立ち上げたところ、追加した機能部分でエラーが発生、実行できなくなりました。
Q106-1:
MZプラットフォームの再導入をしました。作成していたアプリケーション(工程管理簡易版に機能を追加したもの)を他のファイルに保存しておき、導入後新たに作成したプラットフォーム(ファイル
"Production" )に移動、立ち上げたところ、追加した機能部分でエラーが発生、実行できなくなりました。何か注意すべきところがあったのでしょうか?仕方がないので、作成したアプリケーションを見て、再度作り直さなければいけないのかと考えはじめましたが、アドバイスがあればお伺いしたく、メールいたします。
A106-1:
大変お手数ですが、以下の3点をご確認頂き、ご連絡頂けないでしょうか。
@作成なさったアプリケーション実行時に発生するエラーメッセージの内容
Aエラーログファイル
¥MZPlatform¥2.5¥logフォルダ中に、エラー発生時にログファイルが録られるようになっています。本日は火曜日ですので「PlatformTue.log」の名前が付いています。
B他のサンプルアプリケーション(エクセル連携導入(派遣管理).mzaxやデータベースアクセス.mzax等)がエラーなく実行できるかどうか
ログファイルはお手数でも、添付ファイルとしてお送り下さい。
ご面倒をお掛け致しますが、どうぞよろしくお願い申し上げます。
Q106-2:
エラーは実行させると’行インデックスエラー(11>11)[ID:8-1](Key”工程一覧””となっています。 工程一覧は工程とガントチャートの色を指定したテーブルです。
エラーメッセージの内容、エラーの原因と思われる工程一覧の画面(これは工程名とガントチャートの色を設定するために追加したも)およびlog Fileを添付いたします。
尚、エクセル連携導入、データベースアクセス、本来の工程管理簡易版は問題なく実行できます。追加部分の問題かと思いますが、MZプラットフォーム再導入前は問題なく実行できていました。よろしくお願いいたします。
A106-2:
お送り頂いたアプリケーションを拝見すると、8月26日17時13分付けでこちらからお送りした「Lesson11(ガントチャート)_工程順序・色保存2.mzax」の内容を追加設定して頂いています。
お送りしたファイルにあったコンポーネント[テーブル(ID:8-38 KEY:マスター:色工程順序保存用)]を誤って引数として使用している箇所があるため、これがエラーの原因となっていると思われます。
[繰り返し制御(FOR)(ID:8-41)]のアクションイベントに繋がる
[繰り返し制御(FOR)(ID:8-42)]
メソッド「繰り返し処理を実行する(int,int,int,int,int)」
<引数2>
説明:終了値
コンポーネント:テーブル(ID:8-38 KEY:マスター:色工程順序保存用)を
コンポーネント:テーブル(ID8-1 KEY:工程一覧)に変更
上記をお試し下さい。
[テーブル(ID:8-38)]は削除してしまっても宜しいかと存じます。
(行インデックスエラーの発生が今までは起こらなかったのは、2つのテーブルが行数が以前は一致していた等かと推測しております)
変更して頂いても状況が改善されない場合は、大変お手数ですが再度ご連絡頂ければ幸いです。どうぞよろしくお願い申し上げます。
Q106-3:
指示いただいた変更を加えたところ、エラーは出なくなりましたが、工程一覧で指定した色も適切に表示されなくなりました。以前も同様なことがありましたので、記憶を辿り試行してみますが、何かアドバイスがあれば、よろしくお願いします。それにしても、いかにして問題が究明されたのでしょうか?このような場合解決する手だてなどあればご教授ください。
上記メールをお送りした後で、受注番号の工程名をすべて変更した指定の名前に修正したところ、ガントチャートの工程色は指定のものになり、一件落着したように思えます。工程管理簡易版の工程名が受注番号に存在すると’工程一覧’で指定してある工程名のものでも指定色にならなかったのは何故でしょうか? 指定された工程色になった後で指定されていない工程名にすると、その工程は’工程一覧」’で他の工程に指定した色とは全く違う色となり、動作もおかしくなります。 ’工程一覧’にない工程名を指定すると何か他のテーブルを参照するのか調べていますが、今のところわかりません。
A106-3:
1.前回のエラーの特定方法について
申し訳ございませんが、前回のメールでアプリケーションファイルは添付されてきたものの、やはりログファイルは添付されてきませんでした。
しかし「行インデックスエラー(11>11)」ということから、[テーブル]の行数を利用した処理に関わる箇所が、エラーの原因になっていると推測できました。
「行インデックスエラー」あるいは「列インデックスエラー」は行や列の指定箇所が実際の行/列に存在しない時に起こります。
例)実際の行数より指定した行インデックスが大きい
選択した列の値を取得する処理の際に列が選択状態でない
(非選択時インデックスは「-1」)
今回は行数の多い他の[テーブル]の行数分、本来の[テーブル]で繰り返し処理を行っていて、エラーが起こっていました。
2.工程色設定について
以前8月中にお送りしましたサンプルアプリケーションでは、『はじめに工程一覧があり、そこから得られる工程のリストから左上の工程表の工程を選択し設定する』という想定から、[ガントチャート]の系列名(工程名)が必ず工程一覧中に存在することが前提となっております。
[サブルーチン(ID:8-40 KEY:色設定)]に繋がる一連の処理では、
[ガントチャート]の系列ラベルを系列順に取得し、
「工程一覧[テーブル]」のセルの値(=工程名)と比較、
一致したらその隣の列の背景色を要素として[リスト格納変数]に追加する
という作業を行っています。
[ガントチャート]のメソッド「全系列の色を設定する(PFObjectList)」実行時に[リスト格納変数]内のリストが設定されます。
系列名と工程一覧中の名前とが一致した時だけ[リスト格納変数]内に色が要素として追加される設定になっているため、現在の設定では一致しない工程名があると、出来上がるリストは、要素の数が実際の系列数より少なくなります。
(例)[黒、白、赤、青]のリストが[黒、白、青]に)
このリストは系列1から順番に設定されていきますので、系列4は元の色のままで[黒、白、青、青]のようになります。
さらに以前お知らせしたように[ガントチャート]データ作成のために使用しているコンポーネント[分類テーブル作成]内では、系列名(工程名)はUnicode順にソートされています。
([ガントチャート]の凡例を表示させると、系列順に凡例が表示されます)
以上のことが工程名が工程一覧に無い場合、想定していない動作に見える原因ではないかと推測しております。
これを解決するためには,データベース中から工程一覧に無い工程名のデータを削除していただくか、一致する工程名がない場合の処理をご検討いただく必要があります。
後者の対応方法は、お作りになりたいアプリケーションに依り、工程名が存在しない場合にはあらかじめ設定しておいた色(例えば「その他」に設定されている色)を設定する、または,工程一覧に工程を追加する・・・など、様々な対応が考えられます。
備考:「工程管理システム導入マニュアル」の「Q&A11」にも掲載。