過去の桐井戸端BBS (桐ver.8)
5431 フォームのコマンドボタンで行集計を実行させるには? 渡辺 2000/04/06-12:10
フォームのコマンドボタンで行集計を実行させようと思うのですが、
コマンドボタンの設定で該当する記述が見あたりません。わかる方教えて下さい。
5433 Re:フォームのコマンドボタンで行集計を実行させるには? bonito 2000/04/06-13:31
記事番号5431へのコメント
渡辺さん、こんにちわ。
ご質問の件は【多遊】さんとこの掲示板過去ログ13#627〜#630あたりで
http://www2u.biglobe.ne.jp/~s_tanaka/cgi-bin/bbs/bbs.cgi?function=log&logno=13
私が質問して、いかすぱ様にお答えを頂いております。

結論的には、ボタンの機能に「行集計」はありません。
わたしも渡辺さんと同じくあったらいいな、とは思っていますが…、
もしかしらK3は「行集計」とか「#直前値」とかあんまり使わせたくないって思ってるのかも知れません。(かんぐりすぎ?)

5458 Re:フォームのコマンドボタンで行集計を実行させるには? 佐田 守弘 2000/04/08-01:12
記事番号5433へのコメント
渡辺さん
コマンドボタンで行集計を行うには、イベントか一般手続きを使うのが良いかと思います。
まず履歴で行集計の操作を登録し、行集計コマンドを生成させます。
履歴はスタンドアロンであれば、kirihist.cmdの中に書き出されます。
次にイベントファイルを作成し、この中に生成された行集計コマンドをコピーします。
その方法には次の2つがあります。
@イベントで実行させる
コマンドボタンのマウス左クリックイベントなどを定義し、作成されたイベントハンドラ
(手続き定義開始〜手続き定義終了の中身)の中に生成された行集計コマンドをコピーします。
A一般手続きとして実行させる
イベントハンドラと同じですが、ユーザーが自由な名前を付けたものを一般手続きといいます。
中身はイベントハンドラと一緒です。作成したイベントハンドラの手続き定義の名前を書き替えても構いません。
一般手続きの場合には、イベントによって実行するのではなく、コマンドボタンに「手続き実行」の機能名と、
手続きの名称を設定します。

実行されるコマンドの中身はどちらでも同じですが、イベントハンドラの場合には、
そのボタンをマウスでクリックした時など、指定したイベントが起きた時だけに呼び出されます。
これに対し、コマンドボタンに手続き実行の機能を設定した時には、マウスでボタンを押した時の他、
タブキーなどでフォーカスを移動し、Enterキーを押してボタンを実行した時にも、その手続きの実行が行えます。

佐田守弘(KS-00119)

5471 「フォーム上での行集計は禁止の方向」というk3からの回答 su 2000/04/09-11:15
記事番号5431へのコメント
渡辺さん、こんにちは。
私も同じ事をしたくてコマンドを探したことがありました。
無いことがわかりイベントを組んだのですが、集計行のフォントの色を変えることが
できませんでした。そこで、以下のような質問をK3に出したところ回答が帰ってきました。
*******************K3からの回答*******************
メールありがとうございます。
お問い合わせの件について連絡させていただきます。
> 一覧表形式のフォームにおいて行集計を行っております。
> その際に集計行のレコードの表示文字色を青としたいために編集属性式
> に
> #条件選択( #集計行=1 , "前景色'青'")
> と入力しましたが、使用できない関数とのメッセージが出ます。
> どのように対処したらよろしいのでしょうか。
>
イベント処理で行集計を実行されていますが、フォーム上での行集計は桐上では禁止しておりますので、
この作業が可能である点については桐側の不具合となります。
この不具合については、次期バージョンで禁止する方向で対応をするよう行う予定となっております。

関数「#集計行」は行集計での集計行についての確認をするためのものですが、
フォーム上で行集計ができないことが本来の動きであるためこの関数はフォーム上で使用することはできません。
お問い合わせのエラーはこのためにより表示されているものとなります。

したがって、集計行を認識する機能はフォーム機能には有りませんので「色を変更する」などの処理を実行することは
できません。

以上御了承ください。
*****************************************************

ですので、現在私は以下のイベントで対処しています。

 手続き定義開始 行集計 ()
  多重化
  ウィンドウ作成 表,ハンドル=&表,オプション=最大化
  行集計 条件名="行集計"
 手続き定義終了



5473 Re:フォーム上で行集計結果を表示させる 悲しげ 2000/04/09-12:17
記事番号5471へのコメント
どもっ、渡辺さん、suさん、
端から見ていて大変参考になりました。私は未だフォーム上で直接行集計をさせようしたことが無かったのですが、
もししようとした場合に、おかげさまで虚しい試行をしなくて済みます。(^^)v

では、フォーム上で、行集計の結果を直接表示させるためにはどうしたらいいだろうと云うことで考えてみました。
「ウィンドウ作成」の場合だと、いつかの時点で作成したウィンドウを閉じなければなりませんし、
場合によっては閉じ忘れることがありそうなこととか、モーダルフォームから実行した場合、
表ウィンドウが背面にしか表示されないことがある等もひとつの理由ですが。

1)ある牡丹なりで、行集計の実行を行わせる。実行に際しては、suさんが書かれたように、多重化表を使います。
 なお、多重化表もいつかは閉じる必要がありますので(「表」と「表ウィンドウ」は別物)、
多重化表の表番号もこの際取得しておいた方がいい。
2)行集計結果を作業用の別表「行集計01.TBL」(仮称)に書き出す。
3)「行集計01.TBL」を編集対象表とした一覧表フォーム「行集計01.wfm」も別途用意しておく。
 このwfmでは、集計行に「○○計」などの字句が存在する行に、表示の属性式
(例えば「#条件選択(#文字位置([某],"計")>0,色を変える属性等)」)を設定しておくのがいいかもしれません。
4)元フォームからは、行集計結果を返すフォームを「フォーム呼出し」します。
 あるいは「行集計01.wfm」を元フォームのサブフォームとして配置しておいて、
普段は画面表示="0"、行集計実行時にオブジェクト操作で"1"にする(参照後は再び"0"にする)と云う方法もありますね。

手続きの記述例です。
--------------------------------
編集表 "元表.TBL"
多重化
&表=#表番号取得("元表.TBL",2)
行集計 ……
書き出し 表,"行集計01.TBL",*
行集計解除
終了 表 &表
編集表 "元表.TBL"
フォーム呼出し "行集計.wfm",……
*または、オブジェクト操作 @sub行集計01.画面表示="1"
---------------------------------

なお、エディタ上で書いてるだけなので、誤記および挙動未確認です。
うまく動かなかったらすいません。

5475 Re:「フォーム上での行集計は禁止の方向」というk3からの回答 bonito 2000/04/09-18:48
記事番号5471へのコメント
suさん、こんにちは。

私は
>もしかしらK3は「行集計」とか「#直前値」とかあんまり使わせたく
>ないって思ってるのかも知れません。(かんぐりすぎ?)
と思っていましたが・・・・

>フォーム上での行集計は桐上では禁止しておりますので、
>この作業が可能である点については桐側の不具合となります。

だったのね。

不都合でフォームを2つ3つ作ってしまった私たちはどうなるの?
次期バージョンで修正(?)、ふーむ代替ブツを用意しないとまずくないかい・・・    >K3
悲しげさんの書かれている方法だと、会話処理で桐を使っている人には、ちとキビシイかも・・・。

そして、「行集計」も「#直前値」と同じく、日陰の身に堕ちていくにか・・・・(;_;)

5479 Re:「フォーム上での行集計は禁止の方向」というk3からの回答 佐田 守弘 2000/04/09-22:27
記事番号5471へのコメント
suさん
私もウッカリしてました。
行集計は表形式編集と一覧表印刷だけを使う場合の機能ですから、フォーム編集画面で行集計を使う事は
意味をもちません。
フォーム上ではフォーム自身が行集計機能を持っているので、表編集用である行集計を使う必要がないわけでした。
同様に、レポートについてもレポート自身が行集計機能を持っていますから、行集計を行った結果を
レポート印刷する必要はありません。

どうしても行集計を使う必要がある場合には、表を多重化して行集計を行う事になるのだろうと思います。

佐田守弘(KS-00119)
5480 行集計と#直前値関数がなくなる事はありません 佐田 守弘 2000/04/09-22:33
記事番号5475へのコメント
bonitoさん
>もしかしらK3は「行集計」とか「#直前値」とかあんまり使わせたく
>ないって思ってるのかも知れません。(かんぐりすぎ?)

との事ですが、行集計や直前値をあまり使わせたくないといった事はないと考えます。

●行集計
表形式編集でデータを集計するという場合には必須の機能ですから、なくなる事は考えられません。
ただし、フォーム編集やレポート印刷では、それ自体が集計機能を持っているので、使う必要がないし、
使うと不都合になるので、禁止するという意味なのでしょう。

●直前値関数
これも桐ならではの機能であり、桐の「売り」の機能の1つだったと思います。
この関数があるからこそ、様々な事が可能になるわけで、もしなくなったら、大幅な機能縮小になってしまいます。
ですから、使わせたくないという事はあり得ないと思います。

佐田守弘(KS-00119)
5496 Re:行集計と#直前値関数がなくなる事はありません bonito 2000/04/10-18:35
記事番号5480へのコメント
佐田先生、コメントありがとうございました。
私の言葉が足らず、誤解を招いた部分についての補足と、
そして若干の質問というか・・・何というか・・・(^^;

>フォーム上ではフォーム自身が行集計機能を持っているので、
>表編集用である行集計を使う必要がないわけでした。
>同様に、レポートについてもレポート自身が行集計機能を持って
>いますから、行集計を行った結果をレポート印刷する必要はありません。

3行目から、つまりレポートに関しては、全く仰せの通りだと思いますが、
上2行「フォーム自身が行集計機能を持っている」、とおっしゃる意味がよく解りません。
明細行と集計行を固定的な明細行数でなくフォーム上に同時表示(つまり行集計)させる事は可能なのでしょうか?

「#直前値」についてはDOS桐、画面帳票で、印刷帳票のグループ表示相当の事をする為に、
例えば伝票帳票で、一番左側に計算式項目を置き#条件選択(#直前値([年月日],"")=[年月日],"↑",1,[年月日])のように
使っていましたが、(今にして思えばこれも不都合で使用可能だったの?)
WIN桐になってからは、フォーム上のテキストの計算式にも、編集属性式にも「#直前値」は使用出来ないように
修正されています。

「#直前値」にしても「行集計」にしても、あと例えば「行挿入」にしても
ネットワーク上で生じる(であろう)矛盾に対する回避対応がきわめて困難であろう事は、
(私の様なシロートにも)想像に難くありませんが、「行挿入」などは、早い時期に、その適応の範囲を
K3自身が明確にアナウンスし、(ロックもし)代替には「行追加」をどうぞ・・・でしたので混乱はなかったように思います。
しかるに「#直前値」「行集計」の場合には・・・なんか違うんじゃないのぉ
と思わざるを得ないのです。「臭いものにはフタ」ではユーザーは納得しないんじゃないかな。
出来ないことは出来ません、でもこの位の事までだったら、
こういう方法でしのげます、って言ってくれると、ボクラ安心すんだけど…。

言い過ぎたかも知れませんし、長すぎたかも知れません。
気分悪い人がいたら、ごめんなさい。 <(_ _)>


7265 フォーム上での行集計 (再び) 尾形 2000/08/20-18:44
ログ#5431で、次期でフォーム上での行集計は禁止される予定
となっていますがSP6では特に禁止されてないようですが.....

このまま使いつづけていいのでしょうか?
7280 Re:フォーム上での行集計 (再び) 佐田 守弘 2000/08/21-18:45
記事番号7265へのコメント
尾形さん
フォーム上での行集計ですが、これはフォームでの会話処理編集時に、
表形式編集時と同じ行集計を行いたいという意味ですね。
フォームはもともと集計機能を持っているわけなので、
敢て行集計を使う必要がないと考えるのが普通かと思うのですが。
(エスカレータの上を走る様な...それもありか?)

佐田守弘(KS-00119)

戻る