メールマガジン【アクセスで作るシリーズ】
バックナンバー 【会計ソフト編】 Vol.57
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【会計ソフト編】
発 行 : Yoshihisa Fukuda 2001. 6.30 Vol.57
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回は勘定科目設定の科目IDの欠番対策の解説です。
== ◇ 第5章 拡張機能 ====================
--------------------------------------
第12回 勘定科目設定の科目IDの欠番対策(解説)
--------------------------------------
--------------------------------------
今回は前回の勘定科目設定の欠番対策の考え方の解説です。
前回のプログラムでは、バイナリサーチという検索方法を使用しました。
プログラム開発に携わる方なら、ご存知の方も多いと思いと思いますが、まず、原理
としては、データ全体を2分割し、検索したい値がどちらにあるかを調べます。
そして、検索したい値が含まれているデータを再び2分割し、またどちらにあるかを
調べて・・・という風に、どんどん2分割しながら検索値を探していくのがバイナリ
サーチです。
例えば下記のようなテーブルがあったとします。
FIELD_1
1
2
3
4
5
6
7
8
9
10
検索したい値が2だとすると、まず上記テーブルを1~5と6~10に2分割し、
2がどちらにあるか調べます。
この場合、1~5の方にあるので、次に1~5を1~3と4~5に2分割します。
そして、2は1~3の方にあるので、今度は1~2と3に2分割します。
すると2は1~2の方にあるので1と2に2分割し最後に2のあるレコードが見つか
ります。
もうお気付きかも知れませんが、このバイナリサーチには条件があります。
それは、検索したいフィールドの値でデータがソートされている事。
また、検索したいフィールドの値がユニーク(一意)である事。
今回の欠番対策には、このバイナリーサーチを使用した訳ですが、少しおかしいな
と思われた方もいらっしゃるかも知れません。
そうです。今回はこの検索したい値、これが欠番でその値を知りたい訳です。
検索したい値が分かっていれば、欠番が分かっていると言う事ですから。
そこで、今回の欠番を探す原理です。
勘定科目テーブル
科目ID レコード番号
1 1 <-- 1レコード目
2 2 <-- 2レコード目
3 3 <-- 3レコード目
5 4 <-- 4レコード目
7 5 <-- 5レコード目
8 6 <-- 6レコード目
9 7 <-- 7レコード目
10 8 <-- 8レコード目
12 9 <-- 9レコード目
13 10 <-- 10レコード目
これを見て頂ければ分かると思いますが、科目IDとレコード番号が異なっていると
そこに欠番があると言う事になります。
上から順番に見ていくと、科目IDが1でレコード番号1。
科目IDが2でレコード番号2。
科目IDが3でレコード番号3。
とここまで科目IDとレコード番号が同じなので欠番はありません。
次に科目IDが5でレコード番号4と、科目IDとレコード番号が異なった所で欠番
が発生しています。
これをバイナリサーチを用いて検索すれば良いのです。
と言葉で言うのは簡単ですが、いざこれをプログラムにしようと思うと考えてしまい
ますね。
では、最初からじっくり見ていきましょう。
まずデータを2分割します。
1 1 <-- 1レコード目
2 2 <-- 2レコード目
3 3 <-- 3レコード目
5 4 <-- 4レコード目
7 5 <-- 5レコード目
ここで分割
8 6 <-- 6レコード目
9 7 <-- 7レコード目
10 8 <-- 8レコード目
12 9 <-- 9レコード目
13 10 <-- 10レコード目
分割したデータの1つ目(1~5レコード)の最後のデータ(5レコード目)に着目
し、科目IDとレコード番号を比較します。
これが同じだと1つ目(1~5レコード)のデータ内には欠番は無いと言う事です。
逆に、科目IDとレコード番号が異なっていると、このデータの中に欠番が存在する
と言う事です。
この例では科目IDが7、レコード番号が5なので、欠番が存在している事が分かり
ます。
次に1~5レコードを2分割します。
1 1 <-- 1レコード目
2 2 <-- 2レコード目
3 3 <-- 3レコード目
ここで分割
5 4 <-- 4レコード目
7 5 <-- 5レコード目
※ この様に2分割で割り切れない(奇数レコード)の場合、まん中のレコードは
どちらに入れても結果に変わりありません。
今回の例では前に含めています。
再び、2分割したデータの1つ目(1~3レコード)の最後のデータ(3レコード目)
に着目しましょう。
科目IDが3で、レコード番号も3で同じですね。
従って、この1つめのデータ内には欠番は存在しない事が分かりました。
では、次に4~5レコードを2分割します。
5 4 <-- 4レコード目
ここで分割
7 5 <-- 5レコード目
また、同じく1つ目(4レコード目)の最終のデータ(4レコード目)に着目しま
しょう。
科目IDが5で、レコード番号が4ですから、この中に欠番が存在する事が分かりま
したね。
では、次に2分割と言う所ですが、もう1レコードなので分割出来ません。
この様に分割出来なくなるまで続けていくと、最初の欠番が見つかる訳です。
この場合、最後に見つかったレコードのレコード番号、即ち4が欠番であると判明
しました。
原理的には、理解して頂けた事と思います。
次回は、今回の理論に基づき、プログラムを解説したいと思います。
______________________________________
◆◇ Q&Aコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
今回はありません。
______________________________________
◆◇ お知らせ ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
その1.
約1年半と言う、長期に渡り発行してまいりました、このメールマガジンも、いよ
いよ、最終回を迎えようとしております。
予定では、次回が今回の続きで「勘定科目設定の科目IDの欠番対策(解説2)」
となり、その次が最終回(総まとめ)となる予定でいます。
そこで、最後に皆様からのQ&Aを受け付けたいと思います。
今までの所で、よく解らなかった事、何か気になる点などありましたらメールして
下さい。
一応、最後のチャンスとなりますので、後悔の無いように些細なことでもご質問
下さい。(もしQ&Aが多い場合、最終回が延びる可能性もあります)
その2.
ACCESSで作るシリーズ【会計ソフト編】の続編について、題材がまだ、確定して
いません。
何か、題材に取り上げて欲しいソフトがあれば、メールして下さい。
尚、【会計ソフト編】が終わってから、続編発行までに、少しの間、準備期間を
設けさせて頂きますので、ご了承下さい。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ ACCESSで作るシリーズ 【会計ソフト編】
◇ 発 行 元 :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
ご質問等 :fukuda@shun-net.com
◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
しています。(まぐまぐID:0000030446)
◇ バックナンバー:http://www.shun-net.com/fukuda/
◇ 登録・解除 :http://www.shun-net.com/fukuda/
Copyright(C) 2000-2001 Yoshihisa Fukuda All rights reserved.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【会計ソフト編】
発 行 : Yoshihisa Fukuda 2001. 6.30 Vol.57
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回は勘定科目設定の科目IDの欠番対策の解説です。
== ◇ 第5章 拡張機能 ====================
--------------------------------------
第12回 勘定科目設定の科目IDの欠番対策(解説)
--------------------------------------
--------------------------------------
今回は前回の勘定科目設定の欠番対策の考え方の解説です。
前回のプログラムでは、バイナリサーチという検索方法を使用しました。
プログラム開発に携わる方なら、ご存知の方も多いと思いと思いますが、まず、原理
としては、データ全体を2分割し、検索したい値がどちらにあるかを調べます。
そして、検索したい値が含まれているデータを再び2分割し、またどちらにあるかを
調べて・・・という風に、どんどん2分割しながら検索値を探していくのがバイナリ
サーチです。
例えば下記のようなテーブルがあったとします。
FIELD_1
1
2
3
4
5
6
7
8
9
10
検索したい値が2だとすると、まず上記テーブルを1~5と6~10に2分割し、
2がどちらにあるか調べます。
この場合、1~5の方にあるので、次に1~5を1~3と4~5に2分割します。
そして、2は1~3の方にあるので、今度は1~2と3に2分割します。
すると2は1~2の方にあるので1と2に2分割し最後に2のあるレコードが見つか
ります。
もうお気付きかも知れませんが、このバイナリサーチには条件があります。
それは、検索したいフィールドの値でデータがソートされている事。
また、検索したいフィールドの値がユニーク(一意)である事。
今回の欠番対策には、このバイナリーサーチを使用した訳ですが、少しおかしいな
と思われた方もいらっしゃるかも知れません。
そうです。今回はこの検索したい値、これが欠番でその値を知りたい訳です。
検索したい値が分かっていれば、欠番が分かっていると言う事ですから。
そこで、今回の欠番を探す原理です。
勘定科目テーブル
科目ID レコード番号
1 1 <-- 1レコード目
2 2 <-- 2レコード目
3 3 <-- 3レコード目
5 4 <-- 4レコード目
7 5 <-- 5レコード目
8 6 <-- 6レコード目
9 7 <-- 7レコード目
10 8 <-- 8レコード目
12 9 <-- 9レコード目
13 10 <-- 10レコード目
これを見て頂ければ分かると思いますが、科目IDとレコード番号が異なっていると
そこに欠番があると言う事になります。
上から順番に見ていくと、科目IDが1でレコード番号1。
科目IDが2でレコード番号2。
科目IDが3でレコード番号3。
とここまで科目IDとレコード番号が同じなので欠番はありません。
次に科目IDが5でレコード番号4と、科目IDとレコード番号が異なった所で欠番
が発生しています。
これをバイナリサーチを用いて検索すれば良いのです。
と言葉で言うのは簡単ですが、いざこれをプログラムにしようと思うと考えてしまい
ますね。
では、最初からじっくり見ていきましょう。
まずデータを2分割します。
1 1 <-- 1レコード目
2 2 <-- 2レコード目
3 3 <-- 3レコード目
5 4 <-- 4レコード目
7 5 <-- 5レコード目
ここで分割
8 6 <-- 6レコード目
9 7 <-- 7レコード目
10 8 <-- 8レコード目
12 9 <-- 9レコード目
13 10 <-- 10レコード目
分割したデータの1つ目(1~5レコード)の最後のデータ(5レコード目)に着目
し、科目IDとレコード番号を比較します。
これが同じだと1つ目(1~5レコード)のデータ内には欠番は無いと言う事です。
逆に、科目IDとレコード番号が異なっていると、このデータの中に欠番が存在する
と言う事です。
この例では科目IDが7、レコード番号が5なので、欠番が存在している事が分かり
ます。
次に1~5レコードを2分割します。
1 1 <-- 1レコード目
2 2 <-- 2レコード目
3 3 <-- 3レコード目
ここで分割
5 4 <-- 4レコード目
7 5 <-- 5レコード目
※ この様に2分割で割り切れない(奇数レコード)の場合、まん中のレコードは
どちらに入れても結果に変わりありません。
今回の例では前に含めています。
再び、2分割したデータの1つ目(1~3レコード)の最後のデータ(3レコード目)
に着目しましょう。
科目IDが3で、レコード番号も3で同じですね。
従って、この1つめのデータ内には欠番は存在しない事が分かりました。
では、次に4~5レコードを2分割します。
5 4 <-- 4レコード目
ここで分割
7 5 <-- 5レコード目
また、同じく1つ目(4レコード目)の最終のデータ(4レコード目)に着目しま
しょう。
科目IDが5で、レコード番号が4ですから、この中に欠番が存在する事が分かりま
したね。
では、次に2分割と言う所ですが、もう1レコードなので分割出来ません。
この様に分割出来なくなるまで続けていくと、最初の欠番が見つかる訳です。
この場合、最後に見つかったレコードのレコード番号、即ち4が欠番であると判明
しました。
原理的には、理解して頂けた事と思います。
次回は、今回の理論に基づき、プログラムを解説したいと思います。
______________________________________
◆◇ Q&Aコーナー ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
今回はありません。
______________________________________
◆◇ お知らせ ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
その1.
約1年半と言う、長期に渡り発行してまいりました、このメールマガジンも、いよ
いよ、最終回を迎えようとしております。
予定では、次回が今回の続きで「勘定科目設定の科目IDの欠番対策(解説2)」
となり、その次が最終回(総まとめ)となる予定でいます。
そこで、最後に皆様からのQ&Aを受け付けたいと思います。
今までの所で、よく解らなかった事、何か気になる点などありましたらメールして
下さい。
一応、最後のチャンスとなりますので、後悔の無いように些細なことでもご質問
下さい。(もしQ&Aが多い場合、最終回が延びる可能性もあります)
その2.
ACCESSで作るシリーズ【会計ソフト編】の続編について、題材がまだ、確定して
いません。
何か、題材に取り上げて欲しいソフトがあれば、メールして下さい。
尚、【会計ソフト編】が終わってから、続編発行までに、少しの間、準備期間を
設けさせて頂きますので、ご了承下さい。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ ACCESSで作るシリーズ 【会計ソフト編】
◇ 発 行 元 :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
ご質問等 :fukuda@shun-net.com
◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
しています。(まぐまぐID:0000030446)
◇ バックナンバー:http://www.shun-net.com/fukuda/
◇ 登録・解除 :http://www.shun-net.com/fukuda/
Copyright(C) 2000-2001 Yoshihisa Fukuda All rights reserved.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□