Q10:マニュアルにある工程管理システムでチャートの左に受注番号が表示されるようになっていますが、受注番号に加え品名などを表示するにはどうすればよろしいでしょうか?
Q10-1:
要望は品名とお客様名、受注区分(A,B,C)があり、これらは自社版では工程表の受注情報に追加した項目です。問題は受注番号だけでは受注内容が同時に分からず、工程表でいちいち確認しなければならない不便さにあります。可能であれば方策をご教授いただければと思います。
A10-1:
比較的変更が少ないと思われる方法をまずご紹介します。
「工程管理簡易版」のアプリケーションを例にご説明します。
[全体計画表(ID:8)]複合コンポーネント内の[ラベル(ID:8-33)] の「Text」にガントチャート用のデータを取得するSQL文が書いてあります。
@この「Text」を変更します。
変更前:select id,projectLabel,process,workingTime,dateStart, dateEnd from task
変更後:select task.id,projectLabel,process,workingTime,dateStart,dateEnd,concat(label,':', product) from task,project where projectlabel=label
・「concat(A列,B列)」は文字列を結合する関数です。
「concat(label,':',product)」とすると「A1:A1」のような「label」列と「prpduct」列が組み合わさった文字列が取得できます。
「':'」は不要であれば取って下さい。
・「task」テーブルだけでなく、「project」テーブル内のデータも利用したいので、
「from」の後ろは 「task,project」とします。
・「where projectlabel=label」でprojectlabelとlabelが一致するデータのみ取得するようにします。
このSQL文を実行した結果は[テーブル格納変数(ID8-9 作業領域)] に設定されます。変更後のテーブルデータは「A1:A1」の入った列が一番後ろに増えたものとお考え下さい。
A[分類テーブル作成(ID:8-2 ガントチャートテーブル)]の「大項目取得メソッドの設定]の<引数1>を変更します。
<引数1>には「(1)」が入っています。これは第1列目を大項目として使用することを意味しています。これを「(6)」に変更します。第6列目はSQL文変更後に増えた列です。
以上2点を変更後、「工程管理簡易版」を実行してご確認下さい。
宜しければご自分のデータ内容に当てはめて、レイアウトなどご確認下さい。
Q10-2:
アドバイスに基づき、以下のように変更しました。(equip およびworkは工程指示表に付け加えた項目です。)
1.変更前:select id,projectLabel,process,work,equip,workingTime,dateStart,dateEnd from task
変更後:select task.id,projectLabel,process,work,equip,workingTime,dateStart,dateEnd,concat(label,':', product) from task,project where projectlabel=label
2.大項目取得メソッドの引数1を(1)→(6)
これで実行するとガントチャートのラベルが表示設定されているにもかかわらず、表示されません。
次に大項目取得メソッドの引数を(8)に変更して実行しましたが、現象は変わりません。
現在ガントチャートの理解が不足しているかと見なおしていますが、アドバイスがあればご教授ください。
A10-2:
確認させて頂きたいのですが、
> 1.変更前:select id,projectLabel,process,work,equip,workingTime,dateStart,
dateEnd from task
ということで、
[分類テーブル作成(ID:8-12 ガントチャートテーブル)]の
大項目取得メソッドの設定<引数1>:(1)
大系列取得メソッドの設定<引数1>:(2)
セル値取得メソッドの設定<引数3>:(6)
セル値取得メソッドの設定<引数3>:(7)
となさっているかと思います。変更前はエラーは発生せず、ガントチャートは表示されているでしょうか。
[分類テーブル作成]の考え方については『エクセル連携導入チュートリアル』P34〜詳しくご紹介しています。
2.変更後は「大項目取得メソッドの設定<引数1>:(8)」で良いと思うのですが、SQL文でテーブルデータが取得できていない可能性もあります。
何かエラーメッセージは発生していないでしょうか。
テーブルデータが取得できているかは、[イベント伝播制御(ID:8-8 ガントチャート情報受信)]に繋がる[テーブル格納変数(ID-8-9 作業領域)]の「テーブルを設定する(PFObjectTable)」の処理
([イベント伝播制御(ID:8-8)]−−−−[テーブル格納変数(ID-8-9)])
にブレークポイントを設定し、デバッガーを作動し、「テーブルを設定する(PFObjectTable)」の引数の項を見て頂くと、設定されるデータが確認できます。
今回の例では問題ないかと存じますが、concat(A,B)は結合するデータ型が文字列型でないと、エラーが発生する可能性があります。
Q10-3:
アドバイスをありがとうございます。
下記 1の引数は全て以下のようになっています。
デバッガーで確認しようと試みましたが、それ以前にガントチャートが表示されなくなりました。
変更前は全て順調に機能しています。
状況を記述しますと、
変更を加えた後、実行→工程指示書およびガントチャートが表示されていないため受注番号を選択しなおすと
エラー:’データが設定されていない状態でメソッド呼び出しを行いました’
(または’データベースと接続されていない’とのメッセージ)
→データベース管理でデータベースと接続
→エラー:’exception:Unknown column 'taskid' in 'field list'
となります。
変更後のSQLが実行されていず、ガントチャートが表示されないと理解しています。
また、変更前は自動的にデータベースと接続されていたものが接続されなくなっています。
'taskid'でなく’task id'かと試しましたが、同じexception('taskid'でなく'task'となりますが)が発生します。
アドバイスいただいた内容以外は変更していないつもりですがどうも不思議です。
以上ですが、アドバイスがあればご教授ください。
A10-3:
@変更点「task.id」について
taskテーブルとprojectテーブル、複数のテーブルよりデータを取得したいのですが、両方同じ名前の「id」という列があるため、『Select id ・・・』とすると、区別が付かないということでエラーが発生します。
Selectの後ろの列名は「データベース名.テーブル名.列名」 として指定が可能で、今回は「テーブル名.列名」という意味で『task.id』としています。
Aデータベースへ自動接続について
「工程管理簡易版」を実行すると、画面左上『起動時にデータベースに自動的に接続』にチェックマークを入れるところがあります。
データベースへの接続やガントチャート表示を含む「工程管理簡易版」起動時動作にエラーが発生した場合に、以降操作不能となることを回避するため、エラーが発生した場合にはチェックマークを外すよう設定されています。
恐らく上記の理由かと推測しております。
SQL文にエラーがなくなれば、チェックマークは入ったままにできるかと思います。