過去の桐井戸端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でしょう。 >即ち、最大値ならぬ最小値。(^^;) 書かれているとおり、答えは「未定義」となりました。 ありがとうございました。これからも宜しくお願いいたします。 |