過去の桐井戸端BBS (桐ver.9)
31248 フォーム及びレポートで件数を集計したい ひろ 2006/02/27-09:59
使用している桐は「桐9−2006」です。
項目「A」「B」「C」・・・・とあり、それぞれの項目には数字がはいります。
(数値でも文字列でもかまいません)
このときフォームのフッタでグループ項目を指定し、それぞれの項目で1の件数、
2の件数というように指定した数字が入力されたレコード件数を表示させるにはどのようにすればよいでしょうか。
またレポートの集計行で同様のことを行いたいのですが。
よろしくお願いします。

31249 Re:フォーム及びレポートでの集計 今村 誠 2006/02/27-19:02
記事番号31248へのコメント
ひろさんこんにちは、「1」や「2」は
項目名ですか?項目値ですか?
数値項目ですか?文字列項目ですか?
漠然としていて何をどうしたいのかよく分かりません。
テストの点数を集計したいのかな?
レポートとフォームは似ているところもあるけれど
違う部分も多いですね。



31250 Re:フォーム及びレポートでの集計 ひろ 2006/02/27-19:11
記事番号31249へのコメント
説明不足で申し訳ありません。
>ひろさんこんにちは、「1」や「2」は
>項目名ですか?項目値ですか?
 →項目値です。
 →項目名は「A」「B」「C」等
>数値項目ですか?文字列項目ですか?
 →入力データとしては数値でも文字列でもかまいません。


31251 Re:フォーム及びレポートでの集計 今村 誠 2006/02/27-19:41
記事番号31250へのコメント
ひろさんこんにちは、
> →項目値です。
> →項目名は「A」「B」「C」等
>>数値項目ですか?文字列項目ですか?
> →入力データとしては数値でも文字列でもかまいません。
グループ値を集計すると言うことは、今現在は
グループ集計状態にあるのですか?
或いは、グループ状態を一度解除して集計するのですか?
それとも絞り込んだ中にある違うグループ値を集計したいのですか?
31253 Re:フォーム及びレポートでの集計 ひろ 2006/02/27-21:04
記事番号31251へのコメント
>グループ値を集計すると言うことは、今現在は
>グループ集計状態にあるのですか?
>或いは、グループ状態を一度解除して集計するのですか?
>それとも絞り込んだ中にある違うグループ値を集計したいのですか?
フォームは一覧表形式でありグループ状態です。
そのフォーム表示状態で入力し、リアルタイムで件数表示したいのです。
入力後イベント処理をし、変数で表示することも考えたのですが、
レスポンスが悪くなりそうで、計算式だけでできないかとおもいまして・・・
31254 Re:フォーム及びレポートでの集計 今村 誠 2006/02/27-21:18
記事番号31253へのコメント
ひろさんこんにちは

>フォームは一覧表形式でありグループ状態です。

既にグループ状態であればフォームを再定義から開いて
表示→フォーム操作バーを表示すれば件数は
レコードジャンプバーに表示されると思いますが
いかがでしょうか

レスポンスのことは分かりません。
31256 Re:フォーム及びレポートでの集計 ひろ 2006/02/27-22:00
記事番号31254へのコメント
すいません。認識の違いがあるようです・

項目    月 A B C D E F

レコード値 2 1 2 3 1 2 3
  〃   2 2 4 6 1 5 7
  〃   2 1 3 3 4 6 5

月はグループ項目です。
このとき一覧表フォームのグループ項目で
項目「A」の項目値1の件数をリアルタイムで表示できないかということなのですが。
31257 Re:フォーム及びレポートでの集計 今村 誠 2006/02/27-22:25
記事番号31256へのコメント
ひろさんこんにちは リアルタイムは無理じゃないでしょうか?
常に同じ「1」と決まっていれば可能でしょうが、「2」や「3」
も有るわけでしょうから、その都度計算ではないでしょうか。

下記のイベントは「件数」のボタンを作って
機能 機能パラメーター
なし #代入(&選択ファイル名,#項目属性(#項目番号(#u),1))
手続き実行 件数を集計,&選択ファイル名

proc 件数を集計(Str &項目名)
  変数宣言 数値{&確認結果,&Akensuu=0,&変換後=#num(&STR)}\
,STR{&データ型=#cond(&項目名,#項目属性(#項目番号(&項目名),2))}
  if (&データ型)
    if (&データ型="文字列")
     検索 &項目名{#計算(#代入(&kensuu,#cond([A]
=&STR,&Akensuu+1,1,&Akensuu))\
     ,#cond([],"",1,1))},文字比較方法=自動,部分一致検索=しない
     &件数=&Akensuu
     method @フォーム.変数変更()
    else
     検索 &項目名{#計算(#代入(&kensuu,#cond([A]=&変換
後,&Akensuu+1,1,&Akensuu))\
     ,#cond([],"",1,1))},文字比較方法=自動,部分一致検索=しない
     &件数=&Akensuu
     method @フォーム.変数変更()
 end
  end
end

 検索や集計は表示状態でないとできないのでフッタに変数の
入力場所を用意して上の↑式を延長して数値型の変数を項目名
の数分用意して表示状態で計算するぐらいしか思いつきません。

#代入(&Akensuu,#cond([A]=&STR,&Akensuu+1,1,&Akensuu))\
,#代入(&Bkensuu,#cond([B]=&STR,&Bkensuu+1,1,&Bkensuu))\
  :     :     :     :     :
  :     :     :     :     :
,#代入(&Nkensuu,#cond([N]=&STR,&Nkensuu+1,1,&Nkensuu))\
,#cond([],"",1,1))},文字比較方法=自動,部分一致検索=しない
31259 Re:フォーム及びレポートでの集計 悲しげ 2006/02/27-23:07
記事番号31256へのコメント
>このとき一覧表フォームのグループ項目で
>項目「A」の項目値1の件数をリアルタイ
>ムで表示できないか

これだと、項目「A」での項目値2の件数、項目値3の件数、項目値4の件数・・・・、
項目「B」でも項目値1の件数、項目値2の件数、項目値3の件数・・・・と続く可能性
を秘めておりますが(^^;)、そしてこの点はハッキリさせといた方がいいのですが(^^;)、
もし種類があまり多くないとすれば次のような苦肉な策も可能かもしれません。

ダミー項目[A1]を作り、その項目計算式は #cond([A]=1,1)
同様に[A2]では項目計算式は #cond([A]=2,1)、
・・・・
[F7]の項目計算式は #cond([F]=7,1)

こうしておいて、例えばフッタ部のグループ項目のソースは
(ラベル等でA=1の件数である旨を表示することを前提として)#合計
([A1]) とか
・・・・#合計([F7]) とか。
こうすればそれなりに「リアルタイム」にはなりそうですが、でもフッタ部にそ
んなに
沢山表示スペースを取るのか? やりたいことはきっと違うような気がしないで
もありません。行間が読めません。

31267 Re:フォーム及びレポートでの集計 ひろ 2006/02/28-08:26
記事番号31257へのコメント
今村さんありがとうございます。
>ひろさんこんにちは リアルタイムは無理じゃないでしょうか?
やはりリアルタイムは無理ですか。
教えていただいたイベントを参考に考えてみます。

31268 Re:フォーム及びレポートでの集計 ひろ 2006/02/28-08:30
記事番号31259へのコメント
悲しげさんありがとうございます。
>
>ダミー項目[A1]を作り、その項目計算式は #cond([A]=1,1)
>同様に[A2]では項目計算式は #cond([A]=2,1)、
>・・・・
>[F7]の項目計算式は #cond([F]=7,1)
>
>こうしておいて、例えばフッタ部のグループ項目のソースは
>(ラベル等でA=1の件数である旨を表示することを前提として)#合計
>([A1]) とか
>・・・・#合計([F7]) とか。

実は上記の方法は今行っている方法なのです。ただ項目数が多くなりすぎてレスポ
ンスが悪いためもっと効率的な方法がないかと・・・・・・・

31293 サンプルを作ってみました 今村 誠 2006/03/02-21:06
記事番号31267へのコメント
ひろさんこんにちは、イベントでのサンプルを作ってみました。
行削除や、1行表示は完成していませんが、参考になれば
と思い作りました。右下の補完BBSを開いて下さい。

戻る