教えてください 例えばA.TBLの 取引内容 という項目に記載されている "()"内の文字を [種別]という項目に抜き出して、種別をもとに転置集計をかけました 転置集計は うまくいくのですが それをフォームで表示しようとしたとき 「フォームには解析できない式が含まれています」と 表示されてしまいます 見てみると 6月は 転置集計をかけると種別が あ、い、う、え と4種類でるのですが 7月は あ、う、え 8月は あ、い、え というようにつきによって種別がばらばらです。 フォームには種別が4種類出たときのことを考え あ、い、う、え と作成してあるのですが これがひっかかっているのでしょうか? よろしくお願いします
転置集計をかけた後の あ、い、う、え は項目ですよね? で、フォームにテキストオブジェクトで[あ][い][う][え]を設定されているのですよね? 7月、8月は 表に存在しない項目をフォームで定義していることになるから エラーの表示が出るのではないでしょうか?
葵さんが想像している通りで、既にコージさんも指摘している様に、転置集計結果の表は項目名と 項目数が一定しないことが原因です。 表示するフォームの項目数が足りなければ、目的のデータが表示されませんし、不足していれば、 「フォームには解析できない式が含まれています」というエラーになります。 解析できない式とは、ソース値に書かれている式の要素あるいは項目が存在しないという意味です。 つまり、転置集計結果に応じて項目数や項目名が変動する表を表示するフォームは原則(意味深!?) 存在しません。 ●簡単な対応策 以前に類似の話が確か幅田さんの井戸端BBSで出されたことがありました。 簡単な対応策としては、想定される全ての項目(たとえば、あ〜おの5項目)の全ての項目を備えた 表を作っておき、ここに転置集計結果を読み込みます。そしてこの表をフォームで表示します。 転置集計で作られなかった項目は、未定義として表示されます。 ●項目名と項目数の変動に応じるフォーム 葵さんが求めているのはこれだと思います。原則として不可能なのですが、高度な技術を使えば 作れない事はありません。ただしかなり込み入った内容になるので、例示的な質問に対するサンプル 的なものを作ることは不可能ですので、考え方だけ提示します。 @転置集計結果で作られる表の項目数と項目名を調べ上げる。 これは転置集計を行った後で、フォームを開く前のタイミングでイベントなり一括処理で行います。 課題となっているのは、転置集計表の2番目の項目から[合計]の手前の項目までの項目名です。 順に「#項目属性」関数を使えば、項目名が調べられますから、それを配列変数にでも格納しておきます。 Aフォームの対応する項目 最大数作ります。ただし、どの項目のソース値も未定義にしておき、ラベルの表示も未定義としておきます。 そして、全てのラベルとテキストオブジェクトを非表示に設定しておきます。 その様なフォームを予め作っておきます。 Bそのフォームのイベントのメイン部分で、転置集計表の項目名を格納しておいた配列変数の値を調べて、 1番目の変数に値(項目名)が書かれていれば、オブジェクト操作コマンドで次の様なことを行います。 ・テキストオブジェクトのソース値:項目名を設定します。 ・ラベルの表示:項目名をラベルの表示に設定します。 そしてテキストとラベルを非表示から表示に変更します。 以上の操作を、配列変数に書き込まれている転置集計表の項目の数だけ繰り返します。 方法は以上の通りですが、かなりトライ&エラーを繰り返す必要があり、手間の掛かる作り込みになると 思います。 うまく作り込めれば、結果としては、転置集計表の項目名に応じた数で表示されるフォームが作られるはずです。 なお、「具体的にどの様にすれば良いか」と聞かれても実際のデータに応じて作り込まなければならないので、 具体的な提示は困難です。(上記の手順でチャレンジしてみて下さい。)
かなり難しいのですね そこまでのスキルはないので わからないながらにちょっと考えてみたのですが 転置集計の結果を 表に書き出して その表を表示させることはできるのでしょうか? イメージを添付します
(葵さん > 転置集計の結果を 表に書き出して > その表を表示させることはできるのでしょうか? との事ですが、単純に書き出しただけではだめです。なぜなら書き出しても、 その表にフォームに作った項目があるとは限らないからです。 ただし、全ての項目を書き出した空の表を作っておき、そこに追加書き出し するのであれば、可能です。(空の表に読み込んだ場合と同じ結果になります。)
安直に考えていました.... 見やすい方法は 項目を調べてすべてに対応するフォームを作ったほうがよさそうですね この方法でやってみます ありがとうございました