
No.2ベストアンサー
- 回答日時:
ANo1 さんのおっしゃる通りなんですが、
このアクセスカウンタの時、必ず出てくる話を
しておきます。
コード、それが伝票番号・管理番号なんであっても
・ 現在使っている番号を調べる
・ そこから、まだ使っていない番号を作る
・ 新しい番号を、現在使っている番号に加える
という3つ作業を行います。
ANo1 の anmochiさんの例では
・ 実行時にそこから取ってきて
・ 1足して表示して
・ ファイルに書き戻す
の3つ作業のことです。
しかし、仮にAさんとBさんの2人分のコードを
割り当てる場合ですね、
・ Aさん「現在使っている番号を調べる」
・ Aさん「そこから、まだ使っていない番号を作る」
・ Aさん「新しい番号を、現在使っている番号に加える」
・ Bさん「現在使っている番号を調べる」
・ Bさん「そこから、まだ使っていない番号を作る」
・ Bさん「新しい番号を、現在使っている番号に加える」
なら問題ないのですが、この2人がほぼ同時刻に
やってきて、並列に処理が進んだとします。
・ Aさん「現在使っている番号を調べる」
・ Bさん「現在使っている番号を調べる」
・ Aさん「そこから、まだ使っていない番号を作る」
・ Bさん「そこから、まだ使っていない番号を作る」
・ Aさん「新しい番号を、現在使っている番号に加える」
・ Bさん「新しい番号を、現在使っている番号に加える」
すると、AさんとBさんには同じコードが割り当てられて
しまう問題が発生します。
これではいけないので、Aさんのコード割り当て作業中は
だれにも邪魔させないようにする機構を『ロック機構』と
いいまして、コードを割り当てる作業には、必ずといって
いいほど、このロックの話が出てきます。
排他処理とも言いますが、アクセスカウンターの CGI には
中のソースを見ると、大抵この処理が含まれていると
思います。
ファイルにコードを記録する場合は、ファイルのロック
機構を利用し、データベースに記録する場合は、
データベースのトランザクションを利用しますが、
データベースの場合、オートナンバーという機能を
利用すると便利かもしれません。
> そのコードは、どのように設定するのでしょうか
・ 1つずつコードの番号を増やしていく
・ 日時などをもとに一意になる番号を生成する
・ かぶらないようにランダムな番号を割り当てる
いろいろ方法が存在しますね。
2つ目の例だと、コードを見れば登録日時が
わかってしまうのですが、これがいいのか悪いのかは
その目的に依存します。
1つ目の例だと、例えば、「会員番号が1番」って
いうのは、「あっ僕はこのシステムの最初の会員なんだ」
ってバレるかもしれません。あるいは、会員番号
000001 ってなんか寂しくありませんか?(笑)
という訳で、どのように設定するかは、好き好きです。
こうしなくてはならないなんてものはありませんよ。
No.4
- 回答日時:
アクセスカウンタの原理は、現在の値を取得して1を足してまた保存するというものです。
伝票番号なんかは、連番になっていると他人を偽ることがあるかもしれないので、ランダムに番号を取得したほうがいいのかもしれません(もちろん、すでに取得されていないかのチェックも行ないます)。
この回答へのお礼
お礼日時:2004/07/29 18:09
皆様、ご返答頂きありがとうございます。
アクセスカウンタについては、フリーソフトから無事設置することができました。ありがとうございます。しかし、番号の採番については、今だよく分かりません・・・。皆さんの御意見を読んで自分なりに解釈したところによると、まずデータベースを作成することから始まるようですので、フリーのデータベース等を探してみたいと思います。
No.3
- 回答日時:
いきなり管理番号だけ作成してもどうしようもないのでは……(^_^;
管理番号というのは、バックボーンに「管理システム」があるからこそ必然的に必要になるものです。
よって、番号だけ作成してそれっぽく画面に表示させても、何の意味もないわけです。
なんで、管理番号の如何も分からないのであれば、既存のデータベースCGIなどを拾ってきた方が早いんじゃないでしょうか?
No.1
- 回答日時:
CGIうんぬんよりも、ファイルなりデータベースなりに「現在何番まで使っているか」を保存しておき、実行時にそこから取ってきて1足して表示してファイルに書き戻す処理を考えればよいのではないかな。
アクセスカウンタならperl(←CGIでよく使われる)なりphpなり何なりでその辺に転がっているので探すと良かろう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2021 VBA メソッドまたは...
-
PreviewKeyDownイベントが2回...
-
1、Rstudioで回帰直線を求める...
-
VBAでファイルオープン後にコー...
-
変数名「cur」について
-
C# コードビハインドについて
-
access2003 クエリSQL文に...
-
Exel VBA 別ブックから該当デ...
-
オートフィルタで抽出結果に 罫...
-
Accessでの抽出で完全一致。
-
COBOLの文法
-
ACCESS 変数で取得した数値の最...
-
JANコードとPOSコードは同じ?
-
ExcelVBAで「Shift_JIS(MS932)...
-
エクセルに見えない文字(JISX0...
-
ユーザーフォームに2つのコン...
-
JIPS-Eコードのコード表について
-
日立のEBCDIKコード表を探してます
-
オートフィルタの一括解除につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1日に1人がこなせるプログラム...
-
access2021 VBA メソッドまたは...
-
1、Rstudioで回帰直線を求める...
-
JANコードとPOSコードは同じ?
-
Exel VBA 別ブックから該当デ...
-
VBAでファイルオープン後にコー...
-
Excelシート上で右クリックがで...
-
変数名「cur」について
-
COBOLの文法
-
access2003 クエリSQL文に...
-
エクセルに見えない文字(JISX0...
-
オートフィルタで抽出結果に 罫...
-
UWSCでMOUSEORG関数が上手く処...
-
特定行の背景色を変えたいのですが
-
Nullの使い方が不正です。
-
Excel VBA素人です。VBAで図形...
-
ACCESSユニオンクエリでORDER B...
-
JavaScriptの定数名が取り消し...
-
C# コードビハインドについて
おすすめ情報