過去の桐井戸端BBS (桐ver.8)
20383 項目の最大値を取得したいのですがどうすればよいのでしょうか 安斎 2003/05/16-23:43
いつも大変参考にさせていただいております。
桐V8SP7です。

表 共済保険.tblには項目[共済加入番号](整数)があります。
新規加入者を絞り込み、
#直前値([共済加入番号],[共済加入番号の最大値]+1)
と[共済加入番号]を置換したいのですが、[共済加入番号の最大値]の
取得方法についてご教授をよろしくお願いいたします。
20385 Re:項目の最大値の取得方法について教えてください 悲しげ 2003/05/17-01:15
記事番号20383へのコメント
どもっ、安斎さん
一括処理でやりたいのか会話処理でなのかが不明ですが
前者の方で書いてみます。

/*非絞り込み状態で*/
項目集計 [共済加入番号] /*これで最大値が変数&最大値に格納される*/
絞り込み [共済加入番号]<1 /*項目値が0以下または空の行を絞込む*/
置換 終了状態=&実行リターン,[共済加入番号]=&最大値+#連番
絞り込み解除

20386 Re:項目の最大値の取得方法について教えてください しぼうかん 2003/05/17-07:26
記事番号20383へのコメント
安斎さん、こんにちは.

よく理解しているわけではないのですが、新規加入者に
既存加入者に付けた共済加入番号以上の連番を付けたい
ということなのでしょうか?

もしそうでありテーブルのみで処理をしたいのであれば、

1)既存加入者を絞り込み[共済加入番号]の項目を
  クリック後項目集計を実行します。
  これで&最大値に既存番号の最大値を所得出来ます。

2)既存加入者の絞り込みを解除した後、こんどは
  新規加入者を絞り込みます。

3)[共済加入番号]で項目置換を行います。
  計算式は#直前値([共済加入番号],&最大値)+1

これでどうでしょうか?
20388 Re:項目の最大値の取得方法について教えてください 安斎 2003/05/17-08:05
記事番号20385へのコメント
悲しげさん おはようございます。
深夜にもかかわらずご指導いただきまして、ありがとうございました。

お陰様で出来ました。
説明不足でしたが、イベントで処理したいと思っておりましたので、
「項目集計」コマンドで組み込み変数に代入すると解りました。

今後とも、よろしくお願いいたします。


20389 Re:項目の最大値の取得方法について教えてください 安斎 2003/05/17-08:25
記事番号20386へのコメント
しぼうかんさん おはようございます。

説明不足でしたが、しぼうかんさんの書かれているとおりです。
悲しげさんのご指導により、今できたところですが、
「会話処理ではどのようにして組み込み変数に代入するのだろう」
と思っておりましたところにレスをいただき、早速書かれている
とおり操作をしてみました。
また一つ勉強になりました。

ありがとうございました。
今後とも宜しくお願いいたします。


20391 Re:項目の最大値の取得方法について教えてください 悲しげ 2003/05/17-11:46
記事番号20388へのコメント
ちなみに項目集計は、データが多い場合、幾分時間がかかるようになります。
遅くなるのを嫌うなら(データの性格上おそらくは[共済加入番号]についての
索引が設定されているでしょうから)次のようにすれば、もっと速くなるはずです。

並べ替え 索引名="共済加入番号昇順"
ジャンプ 行番号=最終
&最大値=[共済加入番号]
絞り込み [共済加入番号]<1
置換 終了状態=&実行リターン,[共済加入番号]=&最大値+#連番
絞り込み解除

20392 Re:項目の最大値の取得方法について教えてください 悲しげ 2003/05/17-11:53
記事番号20391へのコメント
>&最大値=[共済加入番号]

ここんとこですが、もし&最大値が未定義となった場合は、
後の計算がうまく行かないかもしれないので(未確認ながら)、

&最大値=#未定義値変換([共済加入番号],0)

とやっておいた方が安心かもしれません。

20394 Re:項目の最大値の取得方法について教えてください 安斎 2003/05/17-20:39
記事番号20392へのコメント
悲しげさん 今晩は

細部にわたってアドバイスいただきまして、ありがとうございます。
>並べ替え 索引名="共済加入番号昇順"
>ジャンプ 行番号=最終
並べ替えについては理解できますが、
最終行へジャンプする意味が解りませんので、
教えていただけないでしょうか。

>&最大値=#未定義値変換([共済加入番号],0)
&最大値が未定義値になることは全く考えておりませんでした。
#未定義値変換のヘルプを見て理解できたような気がしますが、
テストしながら勉強していきたい思います。


20395 Re:項目の最大値の取得方法について教えてください 悲しげ 2003/05/17-21:15
記事番号20394へのコメント
>>並べ替え 索引名="共済加入番号昇順"
>>ジャンプ 行番号=最終
>並べ替えについては理解できますが、
>最終行へジャンプする意味が解りませんので、
>教えていただけないでしょうか。

昇順で並べ替えられているとすれば、最大値は最終行に存在するはずです。
つまり、最終行の項目値がイコール最大値ですから、
最終行の項目値を取得する訳です。
項目集計は、最大値の他にも計7種類について全レコードを洗いますから遅いのです。
最大値に特化するなら、索引を使って並べ替えて最終行の項目値を取得するってのは、
定石的手法です。
20397 Re:項目の最大値の取得方法について教えてください 悲しげ 2003/05/17-21:25
記事番号20395へのコメント
並べ替えを実行させた場合、レコードポインタは先頭行に位置します。
昇順で並べ替えているのだから、この時の先頭行の項目値は、
多分未定義かせいぜい1でしょう。
即ち、最大値ならぬ最小値。(^^;)

20399 Re:項目の最大値の取得方法について教えてください 安斎 2003/05/18-07:40
記事番号20395へのコメント
悲しげさん おはようございます。

>昇順で並べ替えられているとすれば、最大値は最終行に存在する
>はずです。つまり、最終行の項目値がイコール最大値ですから、
>最終行の項目値を取得する訳です。
>項目集計は、最大値以外の7種類について全レコードを洗います
>から遅いのです。最大値に特化するなら、索引を使って並べ替え
>て最終行の項目値を取得するってのは、定石的手法です。

理解できました。
テストしたときに、[項目集計]コマンド行の削除を忘れたため、
置換結果がOKでしたので、???となってしまいました。
並べ替え 索引名="加入番号順" ←昇順です。
 ジャンプ 行番号=最終
 &最大値=[共済加入番号]
 項目集計 [共済加入番号] ←削除するのを忘れた。
 絞り込み [在職区分]{*"○"*},文字比較方法=自動

最大値を取得する2通りの方法を知ることが出来ました。
ありがとうございました。
20400 Re:項目の最大値の取得方法について教えてください 安斎 2003/05/18-07:44
記事番号20397へのコメント
悲しげさん おはようございます。

>並べ替えを実行させた場合、レコードポインタは先頭行
>に位置します。昇順で並べ替えているのだから、この時
>の先頭行の項目値は、多分未定義かせいぜい1でしょう。
>即ち、最大値ならぬ最小値。(^^;)

書かれているとおり、答えは「未定義」となりました。
ありがとうございました。これからも宜しくお願いいたします。

戻る