過去の桐井戸端BBS (桐ver.8)
4980 行集計で未定義値があった場合、合計値が表示されない 遠藤 2000/03/06-14:04
行集計で備考欄に数個の合計金額を表示させようとした場合、
その内のいずれかが未定義値の場合、
備考欄に金額が表示されないのです。
何か良い対処法はありますでしょうか?

行集計条件登録 総計{[4-5]"金額:",[1-2金額]#合計,[1-3金額],[1-4金額],[1-5金額],[備考]#合計([1-2金額])+#合計([1-3金額])+#合計([1-4金額])+#合計([1-5金額])}

全バージョンで同じような症状が出ます。

4983 Re: 宮城 2000/03/06-16:30
記事番号4980へのコメント
何度か出てる話ですが、表のファイル属性で「未定義項目値処理」でゼロにチェックを
入れます。

4985 Re: 遠藤 2000/03/06-18:50
記事番号4983へのコメント
>何度か出てる話ですが、表のファイル属性で「未定義項目値処理」でゼロにチェックを
>入れます。
行集計では関係ないのではないでしょうか?
ファイル→ファイル属性→未定義項目処理
のところにゼロチェックは入っています。

過去ログ(www.fuku3.com/~habata/kbbs/kakov8/02436.htm)
には似たような質問は確かにありましたが、
今回は行集計時になってしまいます。
どなたかよきアドバイスをお願いします。

4986 Re: bonito 2000/03/06-19:34
記事番号4983へのコメント
遠藤さん、こんにちは。 宮城さん、横から済みません。

集計関数や行制約式には未定義項目値処理のオプションは無効です。

例えば全ての行の[金額3]がヌルの場合、行集計の#合計([金額3])も未定義になります。

>行集計で
#合計([金額1])+#合計([金額2])+#合計([金額3])+#合計([金額4])

加算するどれか一つの要素が未定義なら答えも未定義になりますね。
(千葉県では未定義なるものを生産していないので、私もいまだに
 よくわかんないんですけど・・・ともかく学問上?そうらしい)

回避する方法

1. [金額1][金額2][金額3][金額4]・・・の値を0(ゼロ≠未定義)
  にしたダミーの一行を用意して、その時(行集計時)だけ、
  ダミー行のグループ化項目の値を操作して、行集計のグループ
  に仲間入りさせる。

2. 1行だけ[金額1][金額2][金額3][金額4]・・・合計する項目
  全部を[???]=#条件選択([]=#未定義,0,1,[])で置換する。
  1行でもDATAがあれば#合計([???])は未定義にはなりません。

3. #合計([金額1])+#合計([金額2])…の式を、#合計([金額1])が
  未定義なら0、でなければ#合計([金額1])+#合計([金額2])が
  未定義なら・・・と順番に判定し合計する式を作る。
  私が書くと汚い式になりそうなので、遠慮しておきます。(^^;


4987 Re: bonito 2000/03/06-19:47
記事番号4986へのコメント
ちょっと訂正させて下さい。

>2. 1行だけ[金額1][金額2][金額3][金額4]・・・合計する項目
>  全部を[???]=#条件選択([]=#未定義,0,1,[])で置換する。

置換でなくて、行訂正ですね。
 (別に1行選択して置換でもいいけど・・・)

4995 集計は数値型の項目に行って下さい 佐田 守弘 2000/03/06-23:54
記事番号4980へのコメント
遠藤さん

ちょっと気になるのですが、[備考]の項目は通貨型ないし数値型でしょうか。
名前からどうも文字列型の項目に思えるのですが。

もし備考が文字列型だとしたら、数値の集計を文字列型の項目に行う事になりますね。

佐田守弘(KS-00119)

4996 Re: しましま 2000/03/06-23:59
記事番号4980へのコメント
> #合計([1-2金額])+#合計([1-3金額])+#合計([1-4金額])+#合計([1-5金額])}
>
上記計算式で言えば、
  #未定義値変換(#合計([1-2金額]),0)+____+・・・
                        ↑
                      左と同様の計算式
のように、記述する縦集計関数(#合計)をそれぞれ「#未定義値変換」関数を
利用し、未定義の時は第2引数で”0”を指定してやれば良いと思います。
(ただし、動作確認していませんので実際に設定してご確認してみてください)
4998 未定義値とは 佐田 守弘 2000/03/07-00:30
記事番号4986へのコメント
質問の題意からはちょっと外れますが、おそらく多くの方が疑問に思っておられると思うので、
未定義値とは何であるかを説明しておきます。

未定義値とはその名の通り「値が定義されていない値」という事になりますが、実際その通りです。
もう少し分かりやすくするために、表の中にゼロと未定義値がどの様に記録されているかを比べてみます。
ゼロは整数であれば、<00><00>と2バイトで、数値であれば<01><00><00><00>と4バイトで書かれています。
これに対して未定義値は、全く何も書かれていません。数値であれ、整数であれ、あるいは文字列であっても
未定義値の場合には長さが0文字の状態です。
つまり未定義値とは、文字列で言うヌルストリングの状態です。

未定義値とは値がない状態です。ですから、他の値に加えると、値が意味を持たなくなってしまいます。
5003 &桐の関数=#未定義値変換 bonito 2000/03/07-10:26
記事番号4996へのコメント
しましまさん、こんにちは。

>#未定義値変換(#合計([1-2金額]),0)+・・・
通りすがりにチラッと見ただけの#未定義値変換、こういう場合に
使えばいいんですね。 使った事がないし、テイノウでもある私は、
#条件選択しか思いうかばなかった(^^; ありがとうございました。

関数といえば、昔から#行挿入があって、何故#行訂正とか#表示中
がないのぉ、とむくれていた私でしたが、WIN桐のいつのバージョン
からか#編集状態(n)という関数が出来ました。(nは表番号)
戻り値、0表示中、1行訂正中、2行追加中、3行挿入中、です
どうぞ、ご贔屓に・・・。

5004 Re: 遠藤 2000/03/07-11:53
記事番号4980へのコメント
#未定義値変換を使用し無事にうまく行きました。
宮城さんをはじめ、bonitoさん、佐田 守弘さん、しましまさん
ありがとうございました。

佐田 守弘さんへ
>ちょっと気になるのですが、[備考]の項目は通貨型ないし数値型でしょうか。
>名前からどうも文字列型の項目に思えるのですが。
>もし備考が文字列型だとしたら、数値の集計を文字列型の項目に行う事になりますね。
そうですね、表現的に問題ありですね
集計の時数値の集計項目を文字列とかに表示させるのはよくやってました。
よく集計時に数値項目に"総合計とか"、今回の様に備考欄に各数値の
集計結果等を表示させたりしていますした。
自分のみ見る時は問題ないでしょうが自分以外の人が見る時はまずいですね。
以後注意します。ありがとうございました。

戻る