過去の桐井戸端BBS (桐ver.9)
23826 日付の項目から週間の集計をするために毎週項目計算式を修正しているが一括処理で自動集計をしたい 栗原 2003/12/10-10:23
こんにちは。
いつも参考にさせていただいています。有り難うございます。
どなたかお知恵をお願いいたします。
この統計の表の作成にもこの掲示板を参考させていただいのですが、

 [職員名][4/1][4/2]....[12/31][連結][出席][欠席][遅刻][早退]のような項目になっていて、
[4/1]から[12/31]の各項目には、出席ならA、欠席ならB、のような内容が入っています。
 そして、[連結]の項目計算式で「#連結([4/1],[4/2],[4/3],[4/4],[4/5],[4/6],[4/7])のようにして、
[出席]等の中で、「#文字数([連結])−#文字数(#文字置換([連結],"A",""))」のように数を出しています。

お聞きしたいのは、この[連結]の部分なのですが毎週この項目計算式を手動で変えて各週の統計を出しているのですが、
ここを一括処理で、期間を変更して集計、また他表に書き出すことができないでしょうか。

どなたかよい案があれば、よろしくお願いいたします。
23842 Re:週間統計(集計) アックン 2003/12/10-19:22
記事番号23826へのコメント
栗原さん、こんばんは。見本を補完BBSにアップしました。
・ファイル内容
週間集計.wfm:起動フォーム
週間集計.kev:イベント処理定義
週間集計.tbl:フォームの対象表
集計表.tbl:素データが入っている表

試すときは、集計表.tblを開いてください。
週間集計.wfmの「OK」ボタンを押す前なら、フォームの後で開いてもいいです。

・フォームの操作手順
1.黒くなっているテキストオブジェクトに、集計したい週の月日を 12-7 または 12-7 と入力してください。
この表にはテスト用として、12/7〜12/14までの項目しかないので、12-7〜12-13までの1週間の値にしてください。

2.下の方にその日が属する1週間の日付を表示します。
3.その週を集計してよければ、OKボタンを押します。
  すると、フォームが閉じられ、集計表.tblの項目[連結]に入力します。


4.キャンセルしてフォームを閉じたいときは、キャンセルボタンを押します。

・その他

もし実際に栗原さんが使っている表でテストしたいときは、コピーした表を使ってください。
そして、週間集計.kev(イベント処理)を定義画面で再定義で開き、上から3行目の
 &集計表="集計表.tbl"
このファイル名をテスト用ファイルの名に変更してください。
なお、項目[連結]の項目計算式は設定しません。項目置換します。

日付の年は自動的に判断します。12-10 なら 2003年12月10日を、3-10 なら 2004年3月10日を指定したことになります。
2003年4月〜2004年3月までの2003年度を処理します。

週の始まりを日曜に設定していますが、他の曜日に変更できます。
週間集計.tbl(フォームの対象表)の項目[年週]の項目計算式、
 #weeknum([日時文字列],1,1) のパラメータを変更してください。

集計表.tblが来年度も必要なようでしたら、リクエストあれば、
自動生成するイベントを書いてアップします。
そのイベントの下準備として、フォームヘッダ部に「年度」「年度開始月」を設定するようにしてありますが、
たちまち今年度分(4/1〜3/31)をテストするときは必要ないですから、
そこは空きにしておいてもらって結構です。

それと、日付指定でいちいち 12-10 などと入力するのも毎回だと結構面倒ですし、入力ミスもありますから、
任意の日をクリックするだけでいいようにもしてみたいと思ってます。
今表示している日付は1年度分スクロールできますが、現状はフォーカス設定を禁止してます。

>た他表に書き出すことができないでしょうか。
A などと素データが入っている1週間分の各項目、職員名、集計結果の項目などを書き出したいのでしょうか?


23888 Re:週間統計(集計) 栗原 2003/12/12-17:21
記事番号23842へのコメント
アックン様、出張中でご返事が遅れてしまい申し訳ありませんでした。

大変丁寧な説明つきでありがとうございます。
早速、使わせてもらおうとしたのですが、「週間集計.kev:イベント処理定義」の
18行目で「KU1175編集対象表がありません」とエラーが出て止まってしまいました。

「週間集計.wfm:起動フォーム」を起動して、日付を入力して「OK」ボタンで使用方法はよろしいのですよね。
中を拝見させていただいのですが、間違ってもいないようですし、
私の桐がノーマルVer.9なのが原因でしょうか。(SP1ではありません。)

>自動生成するイベント
喉から手がでます。

>それと、日付指定でいちいち 12-10 などと入力するのも毎回だと結構面倒ですし、入力ミスもありますから、
>任意の日をクリックするだけでいいようにもしてみたいと思ってます。
>今表示している日付は1年度分スクロールできますが、現状はフォーカス設定を禁止してます。
素晴らしいですね。

>>た他表に書き出すことができないでしょうか。
> A などと素データが入っている1週間分の各項目、職員名、集計結果の項目などを
>書き出したいのでしょうか?
連結して、各AやB(欠席、出席)の集計した数を毎週書きだそうと思いました。

すいません。お暇な時でもお願いいたします。

23892 Re:週間統計(集計) アックン 2003/12/12-19:21
記事番号23888へのコメント
栗原さん> こんばんは。
>18行目で「KU1175編集対象表がありません」とエラーが出て止まってしまいました。
フォームを起動する前に、"集計表.TBL"を開いてください。
または、フォームを起動後でしたら、OKボタンを押すより前に、"集計表.tbl"を開いてください。
この表を自動的に開くようにしていないせいで、エラーが出ます。たちまちはマニュアル操作で開いてください。
"集計表.tbl"を開いていれば、「日付を入力して「OK」ボタン」の操作でいいです。
うまく動作するかどうか、ご報告くださいね。

>連結して、各AやB(欠席、出席)の集計した数を毎週書きだそうと思いました。
毎週別の表に書き出すのですね。
それでしたら、1週間分の表を用意しておき、そこにデータ入力して、集計用の1年(度)分の表に
データを集めるようにしてもいいと思います。そうすれば、1年(度)分の表から書き出す面倒なプログラムが不要になります。
現状の表では1年度分(または今年分)の日付をずらっと横に項目にしてありますよね。
表が横に長すぎて入力が難しいんじゃないかなと、ちょっと気になってました。
入力スタイルはフォームを使えばいろいろできますけど、これまでずっと紙に書いて集計していたやり方に近いスタイルが、
始めやすいと思います。

23900 Re:週間統計(集計) アックン 2003/12/13-10:15
記事番号23892へのコメント
栗原さん>
フォーム左上の年度欄は空欄でいいと最初に書きましたが、2003 と入力しておいてください。
これがないと、1〜3月でエラーが出ます。m(__)m
それと、日付をキータイプしたら、必ずEnterで確定してからOKボタン押してください。
23903 Re:週間統計(集計) 栗原 2003/12/13-11:12
記事番号23900へのコメント

アックンさん、ありがとうございます。
出来ましたー。感激です。これを組み込まさせていただき作ってみます。

>毎週別の表に書き出すのですね。
>それでしたら、1週間分の表を用意しておき、そこにデータ入力して、集計用の1年(度)分の表に
>データを集めるようにしてもいいと思います。そうすれば、1年(度)分の表から書き出す面倒なプロ
>グラムが不要になります。

うちの上司さまが、急に「○月○日から×月×日までの状況を出しなさい。」と言うことがありまして
一応、年間分をおいておこうと思いました..。

質問ばかりで、すいません。
年間の「週間集計」のような表は、どうやったら簡単に作成できるんでしょう。
23904 Re:週間統計(集計) アックン 2003/12/13-13:35
記事番号23903へのコメント
栗原さん> 動いてよかったですね。
ちょっとぼくにはわからないところがあるので、もう少し話を詰めましょう。

>うちの上司さまが、急に「○月○日から×月×日までの状況を出しなさい。」と言うことが

質問1:ということは、集計期間は週毎とは限らないのですか?
任意の日から任意の日までと、きっちり1週間毎と、両方のケースがあるんでしょうか?

それと、実務がわからないのでお尋ねするのですが、先にアップしたフォームでは、
年をまたぐ週(12月31月から翌年の1日1日を含む週)をひとつの週として扱っていませんでした。
うっかりして別々の週にしてました。

質問2:年をまたぐ週も1週として扱うのでしょうか?
(この質問2は、質問1で1週間毎の集計が不要なときは意味をなしませんが。)

>ありまして一応、年間分をおいておこうと思いました..。

集計をとる表は1年(度)分まとめた横長の表"集計表.tbl"のようなものでいいです。
ぼくが思ったのは、もしその横長の表に直接データ入力するんだったら、
横スクロールするのがわずらわしいんじゃないかなと。
それで、データ入力専用の1週間だけの小さな表を別途用意しておいてはどうだろうと。
フォームで日付をグループにして縦に長く入力していれば、横長の"集計表.tbl"を作成できますから、
もしかするとそうしているのかなとも思うのですが。

質問3:現在はデータ入力をこの表に直接しているのですか? それともフォームからですか?
 どうやってますか?

質問4:"集計表.tbl"は、もう作ってあるのですか?

>年間の「週間集計」のような表は、どうやったら簡単に作成できるんでしょう。

"週間集計.tbl"は、日付が1年度分入っている、縦に長い表のことですね。
フォームで年度と開始月のデータを入力する度に、変更するようにしたら、操作が簡単ですね。
また今日にでもアップするつもりでいるんですけど、その前に上の質問に回答もらえたら助かります。

1年度分の日付をスクロールさせて、クリックして日付を指定するという操作方法は、先ほど書きました。
23906 Re:週間統計(集計) 栗原 2003/12/13-15:55
記事番号23904へのコメント

アックン様、度々すいません。


>>うちの上司さまが、急に「○月○日から×月×日までの状況を出しなさい。」と言うことが
>
>質問1:ということは、集計期間は週毎とは限らないのですか?
>任意の日から任意の日までと、きっちり1週間毎と、両方のケースがあるんでしょうか?

基本的には、日曜から土曜の1週間(月もまたぐ)です。
ごくまれに、「4月1日から6月30日までの2ヶ月間で、欠席が10日以上を出してくれ。」ということがあります。

>
>質問2:年をまたぐ週も1週として扱うのでしょうか?
>(この質問2は、質問1で1週間毎の集計が不要なときは意味をなしませんが。)
>
 はい。

>質問3:現在はデータ入力をこの表に直接しているのですか? それともフォームからですか? どうやっ
>てますか?

月ごとに12個の表を用意しています。各月の1日〜31日の項目に入力しています。
これを年間分のマスタ(4/1から3/31)に表引きし、月や年をまたいでも、
[連結]で任意の期間(手動ですが)で集計しています。フォーム等は、後々作ろうと思っていました。

>
>質問4:"集計表.tbl"は、もう作ってあるのですか?
>
 はい。

「週間集計.tbl」のような元となるカレンダー表をどうすれば自動生成できるのかと思いまして...。

すいません。こんな説明でご理解いただけたでしょうか。

23908 Re:週間統計(集計) アックン 2003/12/13-17:55
記事番号23906へのコメント
栗原さん> 新しくファイルをアップしました。
(ダウンロードファイルは前回と同じファイル名です。)
前回ダウンロードしたファイルは、すべて削除してください。新しいのに紛れると困りますから。
新たに変数ファイル "週間集計.var" が加わりました。

残念なことに、1週毎の集計にしか対応しておりません。
任意の期間も集計するとなると、始点と終点を指定するユーザインターフェースがいりますね。
方法としては、テンキーで始点終点の各日付を入力する、始点から終点まで横に長いフォームをドラッグする、
プルダウンリストで始点終点をクリックする、などが考えられます。
桐のサンプルに、時刻をドラッグして時間を指定するイベントがあります。(\Sample\実践\会議室予約システム)

操作方法:
今回アップしたフォームでは前回同様、指定した日付が含まれる1週間(日〜月)を下の方のリストに表示します。

・日付の指定方法
方法1.テキストボックスにテンキーから 12-10 または 12/10 と入力してください。
方法2.下の方の日付のリスト1年度分をスクロールして、1行だけクリックしてください。
そうすると、上のテキストボックスに月日を表示します。
(ここのキー入力の部分はまだ融通が利かず、チェックも緩いです。)

すると、1週間分の日付がリストに表示されます。
年をまたぐ週(12/31〜1/1)も、同じ週として扱うようにしました。

・日付指定のやり直し
方法1.日付をテンキーから再度入力します。
方法2.「月日指定を解除する」ボタンをクリックして1年度分の日付リストをまた表示させて、指定したい行をクリックします。

・「この週を集計する」ボタン
リストに表示された1週簡分を計算したいときにクリックします。
集計後に確認メッセージが出ます。フォームは自動的に閉じられます。
(クリックする前には、必ず "集計表.tbl" を開いておいてください。)

・「キャンセルして閉じる」ボタン
キャンセルしたいときにクリックします。
(そういえば、イベントにはキー操作をまったく書いていませんでした。マウス操作だけ書いてます。)

・年度欄
方法1. 2003〜2010 をプルダウンリストから選びます。
方法2.直接数値をキー入力するときは、西暦4桁にしてください。
(ここのキー入力の部分はまだ融通が利かず、チェックも緩いです。)
データ入力を終えると、下の1年度分の日付リストを変更します。

・年度開始日欄
方法1. 1〜12 をプルダウンリストから選びます。
方法2.直接数値をキー入力できます。
データ入力を終えると、下の1年度分の日付リストを変更します。

・栗原さんが作った表でテストするとき
実際にお使いの表でテストしたいときは、あらかじめコピーした表を使ってください。
イベントファイル("週間集計.kev")の2行目のファイル名を、栗原さんのファイルに変更してください。
var 文字列{ &集計表="集計表.tbl" }

または支障なければ、コピーしたファイルの方を "集計表.tbl" とリネームすることもできます。

>「週間集計.tbl」のような元となるカレンダー表をどうすれば自動生成できるのかと思いまして...。
この処理は、年度欄と年度開始日欄のイベントの記述を追ってみてください。
うるう年に対応させました。来年が閏年ですね。

説明長くなりました。お疲れさまです。不明な点など、遠慮なく質問してください。
ぼくが答えなくても、他の人からもいい智恵が出るはずです。


23909 Re:週間統計(集計) アックン 2003/12/13-18:27
記事番号23908へのコメント
年度開始月が12月だと、バグります。(^^;
それでは、また月曜日にでも。
23926 Re:週間統計(集計):修正情報 アックン 2003/12/15-15:00
記事番号23909へのコメント
栗原さん>
よくみたら、12月に限らずバグ発生してますね。(^^:

141行目あたり
誤) for &秒=&件数, 366, 1
正) for &秒=&件数+1, 366, 1

誤りの方は、2回繰り返しますから、367行作ってました。
それで、最終行を1行削除しても、まだもう1行残っていたというわけです。
これで正確に1年度分の日付が入るはずです。(^^)v


戻る