過去の桐井戸端BBS (桐ver.8) |
5974 | レポートで変数による項目名を使いたい | bakutatu | 2000/05/10-20:11 |
一括処理を使って一覧表形式レポートの印刷をしています。 複数あったレポートを一つにまとめようとして、 TBLにある項目名[国語T]を、 一括処理で文字列変数に組み込み、 代入 &科目="国語T" それを一覧表形式レポートの項目名として使いたいのですが、 [&科目]では「未定義の項目名があります」となってしまいます。 説明不足の点があれば、おっしゃって下さい | |||
5976 | Re:レポートで変数による項目名を使いたい | 宮城 | 2000/05/10-20:34 |
記事番号5974へのコメント bakutatuさん、こんにちは。 固有変数で宣言されているんですね? (でないと代入時に落ちてるはず。) 気になるのはここ。 >[&科目]では「未定義の項目名があります」となってしまいます。 []がついてる意味なのですが。テキストボックスのテキストタブ→ソースに &科目 ではなくて、 [&科目] とされているのですか? なら[]が犯人と思われますが。 | |||
5978 | Re:レポートで変数による項目名を使いたい | 悲しげ | 2000/05/10-20:44 |
記事番号5974へのコメント どもっ、bakutatuさん、 もしかしてこういうことでしょうか? 国語.TBLでは[国語][点数]……のような項目構成、 英語.TBLでは[英語][点数]……のような項目構成、 数学.TBLでは[数学][点数]……のような項目構成、 これらを今までは個々のrptで印刷させていたが、今度はこれらをひとつのrptで印刷させてしまいたい。 ついては、rptの定義において、項目テキストオブジェクトの項目名ソースを変数で指定できたらいい。 こう云う状況だと仮定してコメントします。 外していたら以下は無視して下さい。 う〜ん、これは多分無理だと思いますし、baktaruさんが実際にお試してになって駄目だったのなら、 きっとできないんでしょう。 v8では、rptはwfmと違ってオブジェクト操作とかは使えませんですしね(v10とかで使えるようになるかどうかは不明)。 とすれば、私なら、このような場合、次のように試してみると思います。 まず共用できる作業表を用意します。 各科目名のところは[科目]と仮称しておきます。 この表に印刷させたい表を読み込ませます。 対応項目は[科目]vs[国語]等とさせます。 rptは、この作業表を印刷対象表とします。 で、一覧表rptの項目名に相当する行(項目行ではありません)、 つまりヘッダ部は変数のテキストで設定することができますから、 ここを&科目とかすれば、印刷時には(&科目="国語"であれば)項目名も「国語」 と出力されるはずです。 | |||
5980 | 変数で項目名を指定するには | 佐田 守弘 | 2000/05/10-22:49 |
記事番号5974へのコメント bakutatuさん まず始めに概論です。 ●項目名の様々な指定方法 項目名は、次の3つの記述方法があります。 @項目名を直接文字列で記述する方法(例:[国語T]) これは一般的な方法で、どの様な場面でも使えます。 A文字列型変数で指定する方法(例:&科目) 例えば&科目="国語T"と項目名を表す文字列を変数に代入しておき、 上記のように変数名だけで指定します。[]は付けません。 B項目番号で指定する方法(例:10) 番号で指定すると、表定義画面で上から数えてその順位の項目を指定できます。 この場合も数字だけを記述します。整数型変数が使えるかは確認していません。 ただし、AとBが使える場所は限られています。 例えば、行訂正コマンドの左辺、読み込み、書き出しコマンドなど、 「そこに記述した文字列や番号が、項目名以外にあり得ない」 といった場合に限定されます。 行訂正コマンドでも、右辺に書けば、単なる文字列や数値であると解釈できるので、 この様な場所では、変数や項目番号で項目値を指定することはできません。 レポートのオブジェクトのソースにつても同様で、変数あるいは番号を記述しても、 単なる文字列あるいは数値として解釈されてしまいますから、この方法での指定はできません。 ●項目番号や項目値を帰す関数を使えば 試してないのですが、「#項目番号」関数と「#項目属性」関数を使う方法があると思います。 試してみて下さい。 仮に[国語T]が10番目の項目だとします。そして&科目="国語T"が代入されているとします。 #項目番号(&科目)→ [国語T]の項目番号10を返す #項目属性(#項目番号(&科目),0) → 現在行の[国語T]の値を返す になります。 | |||
5981 | レポートで変数による項目名を使いたい | tomo | 2000/05/10-22:59 |
記事番号5974へのコメント bakutatuさん、こん**は 高校で成績処理をしています。 レポート出力の目的は何でしょうか? また、どの程度そのデータを蓄積しますか? 目的1.科目担当者が年間を通した成績を蓄積するもの 各定期考査の点数や各学期の成績、欠課時間数などを クラスごとに記録しておくもの 例えば1年1組の現代社会について、 縦に生徒が並び、 横には各時期ごとの点数、成績、欠課時間数が並ぶ これを担任に渡し(手書きならば)転記する 目的2.クラス担任が各学期の成績一覧表として持つもの 各学期末にクラス担任の通知票記載用に そのクラスの全科目・講座の成績等をまとめたもの 例えば1年1組の1学期末について 縦に生徒が並び、 横に全科目・講座の成績や成績の平均、クラス内順位等が並ぶ これを教務へ提出(し校長印まで) レポートは目的1、2両方あると思いますが、 本校では、目的2のイメージでTBLを作っているので、 目的1の方は結合表(参照のみ)を使い、そこで項目名を揃えて レポートは一つで済ませています。 | |||
5982 | Re:レポートで変数による項目名を使いたい | tomo | 2000/05/10-23:13 |
記事番号5981へのコメント データ蓄積の時間幅について書くのを忘れました (タイトルのRe:も付いてません。誤解を生じさせて済みません) 蓄積1.その都度順位をつけたりする 蓄積2.通知票印刷など年度内の流用 蓄積3.入学から卒業まで進学・就職の調査書に流用 蓄積4.卒業後の成績証明書などでも流用 うちは蓄積3段階です。 TBLの項目名の設定方法などは この時間幅を考えないと後々混乱してきます (うちは混乱してる最中です) いかがですか? | |||
5983 | Re:レポートで変数による項目名を使いたい | bonito | 2000/05/11-01:35 |
記事番号5974へのコメント え〜、?? みなさん難しく考えすぎじゃないかしら? >[&科目]では「未定義の項目名があります」となってしまいます。 そこには(どこかは知らねど、レポートのテキストオブジェクト) #条件選択(&科目="国語T",[国語T],&科目="国語W",[国語W]・・ ・・・延々続くので以下略・・・・)と書けばいいんじゃないの? ついでに項目名相当ラベルもテキストにして #条件選択(&科目="国語T","現代国語",&科目="国語W","古典"・・ ・・・延々続くので以下略・・・・) こんなんじゃ駄目なの…? | |||
5986 | Re:レポートで変数による項目名を使いたい | bakutatu | 2000/05/11-07:30 |
記事番号5976へのコメント コメントありがとうございます。 変数宣言 固有, 文字列{&科目} としてあります。 確かに テキストボックスのテキストタブソースに[&科目]と 入れると、前記のエラーメッセージがでてきます。 テキストボックスのテキストタブソースに &科目 とすると 項目のデータではなく、項目名そのものがレコード上に 羅列されてしまうだけですよね。 一覧表形式レポートのページフッダ部分では、 変数値がちゃんと返されていますが、 明細行だとだめなのです。 | |||
5987 | Re:変数で項目名を指定するには | bakutatu | 2000/05/11-07:37 |
記事番号5980へのコメント コメントありがとうございます。 >A文字列型変数で指定する方法(例:&科目) > 例えば&科目="国語T"と項目名を表す文字列を変数に代入しておき、 > 上記のように変数名だけで指定します。[]は付けません。 確かに、ページヘッダ部分では、&科目で科目名が返っています。 また、一括処理でも 表示幅 {&科目,&A} も返っています。 >●項目番号や項目値を帰す関数を使えば >試してないのですが、「#項目番号」関数と「#項目属性」関数を使う方法があ >ると思います。試してみて下さい。 >仮に[国語T]が10番目の項目だとします。そして&科目="国語T"が代入されて >いるとします。 >#項目番号(&科目)→ [国語T]の項目番号10を返す >#項目属性(#項目番号(&科目),0) → 現在行の[国語T]の値を返す >になります。 この方法を試してみようと思います。 後日報告したいと思います。 | |||
5988 | Re:レポートで変数による項目名を使いたい | bakutatu | 2000/05/11-07:59 |
記事番号5981へのコメント コメントありがとうございます。 私も高校で成績処理をしています。 全学年全学期全科目の成績・出欠を1つのTBLにしてあります。 入力には、学期ごとの一括処理で、教科担当が学年→科目→組をメニューで 引っ張り出して入力します。 入力が終わると、そのまま一括処理でレポート印刷されます。 これを成績原票という形でレポート出力していますが、 昨年までは、各科目ごとにレポートを作ってありました。 国語Tは国語T.RPTというように。 こちらは作業は大変でしたが、ほとんど問題なくできました。 でも、年度が替わるごとに選択科目が変わったり、 選択科目の組み合わせが変わったりするので、 修正するレポートの数が馬鹿になりません。 そこで、必修科目については1つのレポート「原票.RPT」にまとめようと いうことになったのです。 前述したように、メニューで科目を選んだ時点で、 レポート印刷 原票.RPT として 項目名を &科目 と代入して、 明細行に項目データ、集計行に合計、件数、平均を出力させたいのです。 ページヘッダ部分の科目名には &科目 でちゃんと返っていますが、 明細行は &科目 を項目名として認識?してもらえないのです。 余談ですが、成績原票とクラスの出欠原票 クラスの成績一覧表、成績会議資料、通知票の出力まで 一括処理を組んであります。 | |||
5989 | Re:レポートで変数による項目名を使いたい | 宮城 | 2000/05/11-09:54 |
記事番号5986へのコメント >テキストボックスのテキストタブソースに &科目 とすると >項目のデータではなく、項目名そのものがレコード上に >羅列されてしまうだけですよね。 ありゃ? そんなことはないはずなんですが。ちゃんと値がでるはずですよ。 bonitoさんも書いてますが、バージョンはなんなのでしょう? Win桐と思ってますが、なんか変ですね。 | |||
5991 | Re:レポートで変数による項目名を使いたい | bakutatu | 2000/05/11-11:13 |
記事番号5989へのコメント 説明不足でした。 一覧表形式レポートの明細行のテキストボックスの テキストタブソースに &科目 とすると 項目のデータではなく、項目名そのものがレコード上に 羅列されてしまうのです。 &科目に国語Tが代入されていますので、 一覧表のレコードの国語Tの成績が出力されるべき所に 国語T 国語T 国語T 国語T 国語T となってしまうのです。 テキストタブソースに [国語T] とすれば 成績が出力されます。 バージョンはWIN桐V8です。 | |||
5996 | Re:レポートで変数による項目名を使いたい | 悲しげ | 2000/05/11-13:27 |
記事番号5983へのコメント #5991の記述によると、どうやら#5978での私の読みが当たったよう ですね。#5978にだけコメントがついてないのは、おそらく読んで ないからと思われますが、ちょっと淋しいです。 お名前を「baktaru」と間違ったからかな?(^^;) と云う訳で、結論はbonitoさんの#5893の方法でグーだと思います。 確かに難しく考え過ぎていました。(^^;) ついでに、念のためちょっとだけ補足。 >そこには(どこかは知らねど、レポートのテキストオブジェクト) >#条件選択(&科目="国語T",[国語T],&科目="国語W",[国語W]・・ >・・・延々続くので以下略・・・・)と書けばいいんじゃないの? ここで云うテキストオブジェクトとは、一覧表オブジェクト内の、 項目値に相当するテキストオブジェクトの「ソース」です。 >ついでに項目名相当ラベルもテキストにして >#条件選択(&科目="国語T","現代国語",&科目="国語W","古典"・・ >・・・延々続くので以下略・・・・) この時、私は時々やってしまうのですが、ラベルオブジェクトをテキストオブジェクトに 変更するのを忘れると、計算式がそのまんま印刷されてしまったりしますので、ご注意を。(^^;) | |||
5997 | Re:レポートで変数による項目名を使いたい | bakutatu | 2000/05/11-13:52 |
記事番号5996へのコメント コメントありがとうございます。 #5978を読ませてもらったのですが、ちょっと私には難しくて なんと返事をしたらよいのか分からなかったのです。 一覧表レポートのページヘッダ部分ではちゃんと変数が返されています。 科目名のところに &科目 で 国語T と出力されています。 ところが、明細行ではうまくできなかったのです。 そこで、佐田さんの#5980の >#項目番号(&科目)→ [国語T]の項目番号10を返す >#項目属性(#項目番号(&科目),0) → 現在行の[国語T]の値を返す で試したところ、明細行は出力することができました。 でも、集計行(グループフッタ)での合計、件数、平均は やはりだめなようです。 | |||
5998 | Re:変数で項目名を指定するには | bakutatu | 2000/05/11-13:57 |
記事番号5980へのコメント 佐田 守弘さん ありがとうございました。 >#項目番号(&科目)→ [国語T]の項目番号10を返す >#項目属性(#項目番号(&科目),0) → 現在行の[国語T]の値を返す >になります。 これで明細行に項目データが出力されました。 一歩前進です。 今度は、そのグループフッタ部分の集計オブジェクトでの #合計、#件数、#平均の引数としては使えないようです。 良い方法があったらご伝授下さい。 | |||
6000 | Re:レポートで変数による項目名を使いたい | bonito | 2000/05/11-14:51 |
記事番号5997へのコメント 悲しげさんいつも慰めの言葉をかけていただき恐縮です。 bakutatuさん、こんにちは。 ちょっと面倒かもしれませんが >#条件選択(&科目="国語T",[国語T],・・・・・・) も試してみて下さい。 この方法なら集計も #条件選択(&科目="国語T",#合計([国語T])\ ,&科目="国語W",#合計([国語W])・・・・) と記述出来る筈です。 | |||
6003 | Re:レポートで変数による項目名を使いたい | bakutatu | 2000/05/11-18:45 |
記事番号6000へのコメント bonitoさん コメントありがとうございます。 >>#条件選択(&科目="国語T",[国語T],・・・・・・) > >#条件選択(&科目="国語T",#合計([国語T])\ > ,&科目="国語W",#合計([国語W])・・・・) 2つの方法とも試させていただきます。 | |||
6013 | Re:レポートで変数による項目名を使いたい | 佐田 守弘 | 2000/05/12-00:20 |
記事番号5997へのコメント bakutatuさん グループフッタがあったんですね。 明細行であれば、処理対象行がありますから、#項目属性関数で項目値を参照 することが可能ですが、グループフッタでは不可能です。従って、この方法は 使えません。 ●ヘッダ部 まずヘッダ部に、以下の計算式を設定したテキストオブジェクトを作って下さい。 印刷するつもりはないので、どこの場所でもよく、また小さくても構いません。 #計算(#代入(&件数,0),#代入(&合計,0),"") この計算式の意味は、組込変数&件数と&合計に0を入れてリセットさせます。 ●明細部 前回伝えた計算式の代りに、 #計算(#代入(&秒,#項目属性(#項目番号(&科目),0)) ,#代入(&合計,&合計+&秒) ,#代入(&件数,&件数+1) ,&秒) として下さい。 これで、明細部の印刷が終わったところで、&件数には、明細部のレコード数、&合計には、 &科目で指定した科目の得点の合計が代入されているはずです。 意味は、#項目属性関数で求めた得点をまず&秒に代入しておきます。 次いで、&件数は1を加え、&合計は&秒に代入しておいた得点を加えます。 そして最後に書いてある&秒が#計算関数の戻り値になり、この値を印刷します。 ●フッタ部 後は分かると思いますが、&件数、&合計で件数と合計点数、&合計/件数で平均値が印刷されます。 ●複数科目を印刷するなら 今の話は1科目だけの場合です。複数の科目について同時に点数や合計などを印刷するのであれば、 同じ変数は使えません。 この場合には、予め「&国語T合計」といった変数を定義しておき、それらの変数に合計値や件数を 代入して行く必要があります。 佐田守弘(KS-00119) ■本質的には根本的に見直す必要がありそうな気がします。 以上、力技で処理する方法を紹介しましたが、あまりお薦めできる方法ではない様な気もします。 おそらく、悲しげさんやbonitoさんは気がついておられる様に思うのですが、 もっと簡単に処理する方法がありそうで、それをを採用すべきでしょう。 そのためには、表データの持ち方なども考え直す必要がありそうです。 ただし、私は表の形が良く分からなかったので、どの様に改善すべきかのアドバイスができずにおります。 ■思い出してしまった... 久々ぶりに複雑な計算式を書いてみたら、ふと思い出してしまいました。 かつてNIFTY-Serveには、変数と&計算、&代入関数を操る超人がおられました。 そう、皆から「関数の達人」、「師匠」、「雲上人」と崇め奉られたお方です。 | |||
6018 | Re:レポートで変数による項目名を使いたい | bakutatu | 2000/05/12-07:37 |
記事番号6013へのコメント 佐田 守弘さん たびたびのコメントありがとうございます。 どうも、いま自分が困っている状況を、性格に他の人に伝えるのは難しいなってよくわかりました。 計算式をよく理解した上で、悲しげさんやbonitoさんのご意見も参考にしながらやってみます。 表は、きわめて単純かつ膨大なものになっています。 全学年の1年分(全学期)の教科の成績と欠席、クラスの出欠が並んでいるだけです。 もっと工夫が必要なのでしょうね。 またご教授下さい。 |