過去の桐井戸端BBS (桐ver.9)
27848 入力後再計算をONにしても次行以下の計算項目に反映されない くもん 2004/10/05-10:49
桐Ver9-2004を使用し表に下記項目を設定しています。
[年月日] 文字列
[天候]  文字列
[気温]  文字列
[確定]  整数  計算項目(気温に関係する計算式)
[色]   文字列 計算項目(気温に関係する計算式)

上記項目中計算項目以外の項目は項属性-編集-入力後再計算をONにしています。
この表に行順に入力していった場合は計算項目に反映されます。
ところが入力した後、数行戻って項目値を訂正した場合次行以下について計算項目に反映されません。
「入力後再計算…ON」は項目値の訂正には即反映しないのでしょうか。
ちなみに項目置換(再計算)を実行すれば正しく反映します。
再計算を実行すれば反映されるので項目計算式の問題ではないと思って項目計算式は省略しました。
項目計算式が関係するようであればお知らせします。
よろしくご指導お願いします。

27851 Re:計算項目の再計算について うにん 2004/10/05-12:10
記事番号27848へのコメント

>ところが入力した後、数行戻って項目値を訂正した場合次行以下について計
>算項目に反映されません。

たぶん#直前値か何かをつかっているのでしょう。

>「入力後再計算…ON」は項目値の訂正には即反映
>しないのでしょうか。

反映するのは、訂正した行だけだと思います。

27852 Re:計算項目の再計算について くもん 2004/10/05-15:17
記事番号27851へのコメント
うにんさん

やはり訂正した行だけしか反映しないのですね。
項目計算式に#直前値を使用していなければ全行反映されるのですね。
いつも早速のアドバイス有難うございます。又よろしくお願いします。
27853 Re:計算項目の再計算について 幅田 2004/10/05-18:40
記事番号27852へのコメント
くもんさん
こんにちは。

>項目計算式に#直前値を使用していなければ全行反映されるのですね。

これは何か誤解をされているようです。
#直前値を使用していなくても、反映されるのはその行のみです。

入力後再計算がOFFの場合、
その行が確定した時点で再計算されますが、
ONの場合は、その項目を入力した時点で、
その行が確定されていなくても再計算されます。

他の行には関係ありません。


27863 Re:計算項目の再計算について くもん 2004/10/06-18:00
記事番号27853へのコメント
幅田様有難うございます。
確認させて頂きます。
再計算のON-OFFに関係なく計算項目に関係するデータを最終行より遡って修正した場合、
すべての行の表示を絶対正しく表示させたいときは置換(再計算)を実行する以外ない訳ですね。
この確認が正しければコメント頂けなくて結構です。他によい方法が有る場合お暇なとき教えて頂ければ幸いです。
いつも有難うございます。
27864 Re:計算項目の再計算について 悲しげ 2004/10/06-18:53
記事番号27863へのコメント
横から失礼。

>再計算のON-OFFに関係なく

この「再計算のON-OFF」と云うのが、何を意味するのか判りませんが、

>計算項目に関係するデータを最終行より遡って修正した場合、

に限らず(つまり最終行だろうが先頭行だろうが途中の行だろうが)、ともかく

>すべての行の表示を絶対正しく表示させたいときは置換(再計
>算)を実行する以外ない訳ですね。

そうです、そうです。
「#直前値」関数を使っているような場合は特に、ですね。
計算項目でも、他の関数なら再計算させなくても構わないことも多いかもしれませんが。

27866 Re:計算項目の再計算について 悲しげ 2004/10/06-19:07
記事番号27863へのコメント
>再計算のON-OFFに関係なく

判りました。これは「項属性-編集-入力後再計算」のことだったんですね。
そうです。これは今回の件(全レコード云々)とは関係ありません。
一般的には再計算は1行の入力が完了した時点で実行されるのだが、
ここにチェックを入れておくと、当該項目の入力を終えた時点で直ちに
(1行の入力が完了する前に)再計算されると云うことでして、
いずれにせよ当該の1行のみについてのことです。
(フォームのテキストオブジェクト/編集タブ/入力後再計算も同様)
片や、置換の場合は、全行について(絞り込み状態なら絞り込んだ全レコードについて)実行されます。

27867 Re:計算項目の再計算について 幅田 2004/10/06-19:36
記事番号27864へのコメント
>>すべての行の表示を絶対正しく表示させたいときは置換(再計
>>算)を実行する以外ない訳ですね。
>そうです、そうです。
>「#直前値」関数を使っているような場合は特に、ですね。
>計算項目でも、他の関数なら再計算させなくても構わないこと
>も多いかもしれませんが。

[数量]*[単価]
などのようにその行のみのデータで計算する場合は、
再計算させなくても、その行のデータが変わらない限り
計算結果は変わらないと思いますが、

#直前値は、該当の行以外の行(直前の行)を参照するため
正しく結果を出すためには、再計算が必要となります。

また、#年月日などを計算式の中に含んだ場合、
データの値が変わらなくても現在の日付などが変わった場合、
計算結果が変わるような場合もありますので、
再計算させないとうっかり、まちがった結果を表示させたままと
なっている場合もあります。

27868 Re:計算項目の再計算について うにん 2004/10/06-19:49
記事番号27864へのコメント
>>すべての行の表示を絶対正しく表示させたいときは置換(再計
>>算)を実行する以外ない訳ですね。
>
>そうです、そうです。
>「#直前値」関数を使っているような場合は特に、ですね。

表計算のようにデータ量の上限が低いソフトでは自動で全セルを再計算するのがデフォルトになってたりしますが、
桐はデータベースなので1つの行を変更しただけでいちいち全行を再計算しないのがデフォルトなわけです。

27870 Re:計算項目の再計算について くもん 2004/10/06-21:05
記事番号27866へのコメント
皆様有難うございました。お手数を煩わせました。
その時々の状態によりうっかりしていると間違った(未計算)表示を見ていることになるのはちょっと痛いですね。
一括処理などコマンドにより再計算された画面を見られるよう又表を閉じる前に
再計算を実行して置くなど考えたいと思います。
今後もよろしくご指導下さい、有難うございました。
27871 Re:計算項目の再計算について 宮城 2004/10/06-21:31
記事番号27870へのコメント
>一括処理などコマンドにより再計算さ
>れた画面を見られるよう又表を閉じる前に再計算を実行して置くなど考えた
>いと思います。

普通、というか、閉じるときなんかじゃなくて、訂正着後にすると思うんですが。
不整合のあるデータなんて絶対にイヤですから。

27872 Re:計算項目の再計算について 悲しげ 2004/10/06-23:40
記事番号27870へのコメント
No.27870でくもんさん wrote

>その時々の状態によりうっかりしていると間違った(未計算)表示
>を見ていることになるのはちょっと痛いですね。

う〜ん、さほど痛くもないように思います。
もしかすると、まだ誤解があるのかもしれないので、念のため補足しておきますと……
置換(再計算)で全行を洗う必要があるケースは、あまりありません。
その代表は「#直前値」関数なのですが、そのような場合にだけ注意して対処すればよいだけのことです。

あと、No.27867で幅田さんが挙げられたような

>また、#年月日などを計算式の中に含んだ場合、
>データの値が変わらなくても現在の日付などが変わった場合、
>計算結果が変わるような場合もありますので、
>再計算させないとうっかり、まちがった結果を表示させたままと
>なっている場合もあります。

と同時に、逆に計算項目にしてあることで、置換によって(本当は更新したくなかったのに)値が
更新されてしまうような場合もあったりします。
ま、これは別な話題になってしまいますけど、そのような場合は、
あえて計算項目にしない方がベターな訳ですな。(^^;)

ついでに、No.27871で宮城さん wrote

>普通、というか、閉じるときなんかじゃなくて、訂正着後にすると思う
>んですが。不整合のあるデータなんて絶対にイヤですから。

ですね。代表的な例を挙げますと、収入/支出/残高の扱い。
この場合の[残高]の項目計算式は
  #直前値([残高],0)+[収入]+[支出]
この時、途中で収入なり支出なりの訂正や行挿入が発生した場合には、
一括処理なりイベントなりで、入力後直ちに(「着後」ではなく「直後」ねw)置換再計算させるべきだと思います。

要するに、置換(再計算)の必要性はケースバイケースかと。

27880 Re:計算項目の再計算について くもん 2004/10/07-20:26
記事番号27872へのコメント
うにん様
幅田様
悲しげ様
宮城様
有難うございます。
項属性 入力時再計算ONが置換(再計算)を同様と誤解がありました。
私は入力した値に矛盾が生ずる場合に項目計算式等により背景色を変化させるなどして警告していますが、
たとえ訂正終了時点で矛盾の表示がなされなくても訂正行以降に矛盾が生ずるのは発見出来ないので痛かったのです。 
行を遡って訂正した場合、その時点の表示では次行以降に矛盾が生じている場合が有ることを念頭にいれなくてはならないのですね。
この様な理解でよろしいでしょうか。
有難うございました。
27881 Re:計算項目の再計算について 悲しげ 2004/10/07-21:19
記事番号27880へのコメント
>私は入力した値に矛盾が生ずる場合に項目計算式等により背景色を変化させ
>るなどして警告していますが、たとえ訂正終了時点で矛盾の表示がなされな
>くても訂正行以降に矛盾が生ずるのは発見出来ないので痛かったのです。 
>行を遡って訂正した場合、その時点の表示では次行以降に矛盾が生じている
>場合が有ることを念頭にいれなくてはならないのですね。この様な理解でよ
>ろしいでしょうか。

う〜ん、そのように一般的に云われても「この様な理解でよろしい」かどうかは、一概には言えないと思います。
どのような計算式をどのように使っているかによりますから、やはりケースバイケースでしょうね。
具体的な計算式とかを挙げて質問されれば、個別によいと悪いとか云えそうですけど。
でも、質問する前に、この件はもう自分で検証できそうですよね?(^^;)

27882 Re:計算項目の再計算について 悲しげ 2004/10/07-21:44
記事番号27881へのコメント
もしかしたらまだ、《1レコードの訂正》と《全レコードの置換》に
ついての混同があるのかもしれません。

>私は入力した値に矛盾が生ずる場合に項目計算式等により背景色を変化させ
>るなどして警告していますが、たとえ訂正終了時点で矛盾の表示がなされな
>くても訂正行以降に矛盾が生ずるのは発見出来ないので痛かったのです。

この段落は、1レコードの訂正についての言及ですよね。
1レコードの訂正が完了する前に、当該項目へ入力した時点でもって
直ちに計算結果を反映させたければ、「入力後再計算」(表定義の項目属性またはフォームの編集タブ)の設定をすれば、
それなりには可能になることで、既に解決済なんですよね?
次、

>行を遡って訂正した場合、その時点の表示では次行以降に矛盾が生じている
>場合が有ることを念頭にいれなくてはならないのですね。

こちらの段落は全レコードに関する言及のように読めます。
設定している項目計算式が、たまたま他レコードの値を利用するような場合(#直前値関数)とかに限り、
他行=全行を洗う必要があるために、置換による全レコードの再計算が必要になることがあります。

このふたつは区別して考えるべきです(もしかしたら既に混同はないのかもしれませんが、
未だに混同から解き放たれてないようにも読めまして)。

27885 Re:計算項目の再計算について うにん 2004/10/07-23:22
記事番号27882へのコメント

>こちらの段落は全レコードに関する言及のように読めます。
>設定している項目計算式が、たまたま他レコードの値を利用するような
>場合(#直前値関数)とかに限り、他行=全行を洗う必要があるために、
>置換による全レコードの再計算が必要になることがあります。
>
>このふたつは区別して考えるべきです(もしかしたら既に混同はない
>のかもしれませんが、未だに混同から解き放たれてないようにも読め
>まして)。

そうなのです。
他レコードの値を利用するようなのは、本来のデータベースの領分ではないのです。
(基本的に無限のレコードを扱うわけで、#直前値とか#合計に当たるものを毎回
自動的に再計算していたら効率が悪くてしょうがないので)

そういうのはデータベースを使ったアプリケーションが処理する部分なので、
桐で言えば一括処理とかイベントとか手作業で必要時に置換することになります。

戻る