過去の桐井戸端BBS (桐ver.8)
5510 連番中の欠番の検索について きりもみ 2000/04/11-23:55
2回目の投稿です。よろしくお願いいたします。
新規行のデータを入力した際、最大値を検出し、+1した連番を入力していますが、
後に不要行を削除したりして、欠番が生じています。
単純すぎてすみませんが、その欠番を検索するにはどうしたらよいでしょうか。
5511 Re:連番中の欠番の検索について Ogo 2000/04/12-00:25
記事番号5510へのコメント
判定する連番項目を[連番]とします。

1.[Temp]という仮項目を作成します。[連番]と同等の数値項目です。
2.[連番] 項目で 昇順 の 並べ替え(整列)させます。
3.[Temp]で 項目置換 を行ないます。

  計算式は 【 #直前値([連番],0)+1 】

4.[Temp]で 絞り込み(選択) → 計算式 で

  計算式は  【 <>[連番] 】

これで選択された [Temp] の値は全て欠番です。
(正確に言えば、[Temp]以上、[連番]未満の数値が全て欠番です)

欠番が2つ以上連続した場合には、連続した数値の最小値しか画面上に
表示されないのが難点ですが。

これで満足できますか? もっと自動化したいですか?

5516 Re:連番中の欠番の検索について 宮城 2000/04/12-09:25
記事番号5510へのコメント
正直に言います。自分で忘れてるんだから世話はない。(^^;;

過去ログにもありました。

http://www.fuku3.com/~habata/kbbs/kakov7/01887.htm

5517 Re:連番中の欠番の検索について Ogo 2000/04/12-10:08
記事番号5511へのコメント
>これで選択された [Temp] の値は全て欠番です。
>(正確に言えば、[Temp]以上、[連番]未満の数値が全て欠番です)
>欠番が2つ以上連続した場合には、連続した数値の最小値しか画面
>上に表示されないのが難点ですが。

もうちょっと拡張して、欠番全てが容易に判別できるようにしてみましょうか。

1.追加で[欠番]項目(文字列型)を新設します。
2.[連番] 項目で 昇順 の 並べ替え(整列)させます。
3.[欠番]で 項目置換 を行ないます。計算式は

   【 #通貨文字列(#直前値([連番],0)+1,””) 】

4.[欠番]で 項目置換 を行ないます。計算式は

   【 #条件選択([欠番]=#通貨文字列([連番],””),"",
       [欠番]=#通貨文字列([連番]-1,””),[欠番],
        1,[欠番]+” 〜 ”+#通貨文字列([連番]-1,””)】

5.[欠番]で 絞り込み(選択) → 計算式 で計算式は

   【 <>#未定義 】

画面上で見るなり、[欠番]項目のみを印刷すれば、活用できるかな?

上記 2.〜5.を履歴に登録しておけば、いつでも復元できます。

なお、[連番]項目が文字列型の場合、3.と4.で[連番]となっている部分は
全て #数値([連番]) に置き換えます。

ところで、これらの作業を行なう前に [連番] 項目に重複がないことを確認している
(もしくは、重複入力が出来ないように索引を定義している)のでしょうねぇ?


5520 Re:連番中の欠番の検索について きりもみ 2000/04/12-22:11
記事番号5517へのコメント
索引は定義してはいませんが、[連番] 項目に重複がないことは確認しております。
 やはり1項目を追加作成するしかないのでしょうね。[連番]の中でのみ抽出することを考えていました。
職場(60人程度)では、プレインストールの為もあって、Accessを使う人しかいない中、
唯一、桐v8が大好きで使っており、このサイトを見つけたときは本当にうれしかったです。
どうもありがとうございます。今後ともよろしく!

5521 Re:連番中の欠番の検索について Ogo 2000/04/12-23:19
記事番号5520へのコメント

> やはり1項目を追加作成するしかないのでしょうね。
>[連番]の中でのみ抽出することを考えていました。

項目置換の計算式に #直前値 関数を使えるならば、項目追加は不要なんですけどね。

なお、本来の正統的な方法としては

1.別の TBL を新規作成する(例えば【 欠番.TBL 】とします)。
  必要なのは1項目のみ、[連番](数値型)でいいでしょう。
  本来の元表の[連番]と同じ形式にします。

2.本来の元表での[連番]の最大値を求めます。

3.欠番.TBL の[連番]が1から2.で求めた最大値に至るまでの連番になる
  ように行を追加。

4.欠番.TBL を併合・選択 で 元表の[連番]と 欠番.TBL の[連番]で付き合わせ。

5.補集合を取れば、これが本当の欠番です。

このやり方ならば、元表に別項目を追加する必要はないし、元表のデータが
大量でも、項目置換による膨大なタイムロスが無くなるんですけどね。

問題は上記 3.の部分なんです。一括処理を組むことが出来れば簡単なものなのですが。
わざわざ一括処理を組んで、この掲示板に書き込むような気持ちには(私は)なれない。

なお、この「併合・選択・補集合方式」を使う場合、元表にも 欠番.TBL にも
両方に [連番]昇順・重複禁止 の索引を作っておけば、併合処理速度が圧倒的に短縮されます。


5559 Re:連番中の欠番の検索について きりもみ 2000/04/15-17:20
記事番号5521へのコメント
Ogoさん No.5521「Re:連番中の欠番の検索について」で回答いただきありがとうございました。
早速、ご指摘のように作成し、[欠番.tbl]を作ってみました。見事に絞り込めました。
これを例題に今後も勉強いたします。ありがとうございました。

戻る