【保存版】2013年度発売全パチスロアプリ一覧(iPhone,iPad)

【Access】簡単まとめ!Accessのオートナンバーキーの法則。データ移行時の参考にもどうぞ。

Accessオートナンバー

Accessで作られたシステムでは、テーブルのデータ型に
「オートナンバー」が使われているケースがあります。

さて、このオートナンバーですが、
どのような法則に基づき採番されるのでしょうか。

まず、新規でテーブルを作成すると、オートナンバーの値は0で、
採番の設定を「インクリメント」に設定していると1ずつ
カウントアップされます。(「ランダム」だと不規則な値が
設定されますが、普通はインクリメントを使うかと思います。)

具体例でいうと、新規テーブルにデータを1件登録すると、
オートナンバーで採番される値は1となります。
つづいて2件目を登録すると、2となります。

また、オートナンバーの設定値はデータとは別で保持されており、
データを削除しても保持されつづけます。
たとえば、先ほど登録した2件のデータを削除し、新規データを
登録するとオートナンバーで採番される値は1ではなく、3となります。

そして、データが入っていない状態で最適化処理を行うと採番は
ゼロに戻ります。(テーブルを新規に作ったのと同状態)
(最適化の方法)
ツール -> データベースユーティリティー -> データベースの最適化

まとめると、オートナンバーのインクリメントは、
・初期値はゼロ
・1ずつカウントアップ
・データを削除してもオートナンバーの値は保持される
・データがない場合、最適化処理を行うとオートナンバーはリセットされる

となります。

・データ移行の場合を考える


1 オートナンバー項目に任意の値を設定したい場合

*以下、移行元テーブルと移行先テーブルはオートナンバー項目を
もつ同一構造のテーブルとします。

移行元テーブルのテーブルを開き、全選択しコピー。
移行先テーブルのテーブルへペースト。
この場合、オートナンバーは移行先テーブルの値で自動採番された
値がセットされます。
つまり、コピペをした場合、移行元と移行先ではオートナンバーの値が
変わってしまいます

移行元と移行先で同じ値を設定したい場合は、
VBAか追加クエリを使います。

VBAでデータ追加すると、オートナンバー項目へ任意の値を
セットできます。


Public Function VBAでオートナンバーを追加_daoINSERT()

 Dim db As dao.Database
 Dim strsql As String

 Set db = CurrentDb

 strsql = "insert into TBL_オートナンバーテーブル select * from TBL_オートナンバーテーブル_移行元"
 db.Execute strsql, dbFailOnError

 db.Close
 Set db = Nothing

 MsgBox "追加しました。VBAでオートナンバーを追加_daoINSERT"

End Function


ちなみに、コピペでオートナンバーが
振りなおされてしまうことは知りませんでした。
最初、わけがわからず焦ってしまったのは内緒です。


2 オートナンバーの現在値をリセットしたい場合

オートナンバーの初期値はゼロです。
データを追加するとカウントアップされていきます。

また、VBAからオートナンバー項目へ値をセットした際、
その値が現在のオートナンバーの値を超えていると、
セットした値がオートナンバーの現在値となります。

たとえば、データが入っていないテーブルにVBAでオートナンバーの項目に
100をセットすると、次回オートナンバー値は101となります。

では、オートナンバー値をリセットしたい場合はどのように
すればよいのでしょうか?
方法は3通りあります。

まず一つ目は、新規にテーブルを作る方法。
当たり前ですが、オートナンバーの初期値はゼロとなります。

2つ目は、データを削除し、最適化処理を行う方法。
これでも、オートナンバーの初期値はゼロとなります。
初期値をゼロ以外にする場合は以下。
オートナンバー型フィールドの値を再設定する方法

3つ目は、直接オートナンバーの現在値を設定する方法。
テーブル定義情報を直接修正します。ただし、GUI画面では
設定できません。

クエリの新規作成画面でSQLビューを開きます。
SQLビューから
「Alter Table テーブル名 Alter Column 項目名 Counter(連番開始値);」
を実行します。

例)
Accessオートナンバー2

上記例を実行すると、連番が1000からはじまります。

オートナンバーについてより詳しく知りたい方は以下。
丁寧にまとめらていて非常に参考になります。
テーブルのオートナンバーを振りなおす方法(β版)

以上、Accessオートナンバー系のまとめでした。

Accessをつかったことはあるが、一度実践的なシステムを作って
みたいと考えている人向け。
>>小さな会社のAccessデータベース作成・運用ガイド 2013/2010/2007対応 (Small Business Support)


こちらはAccess初心者向け。
>>Accessのデータベースのツボとコツがゼッタイにわかる本―最初からそう教えてくれればいいのに!Access2007/2003対応

[Google PR]

Twitterはじめました。プラプラ | Twitter

<< 【Access】AccessでFTPダウンロード。ACCESS2013でもOK!
【Nexus7】新Nexus7ってアマゾンでも買えるのね。そして密かにKindleFireが3000円引きに。。。 >>

[関連エントリ 最新5]

[Google PR]


[最新エントリ 5]

>>トップページ
人気カテゴリ:AccessTips SQLServer CakePHP iPad
過去ログ(全記事一覧)

コメント
コメントする(お気軽にどうぞ)









この記事のトラックバックURL
トラックバック
カテゴリー
プロフィール
お問い合わせ
Powered by NINJA TOOLS
links
recent comment
  • 【Access】vbaでhmacが正しく計算できた!!
    まさ (06/01)
  • 【Access】AccessReportMailメール送信時のポートを25から587へ
    わら (05/31)
  • 【SQLServer】超シンプル!再帰CTE(共通テーブル式)で連続データを作成する。
    sazi (09/08)
  • 【あまっちゃお】Amazon商品検索「あまっちゃお」プロジェクト始動。Ver00-06-00 β
    カメちゃん (07/31)
  • 【Access】あれ?DoCmd.RunCommand acCmdSaveRecordの内部仕様が変わった?
    花姉 (03/17)
  • 【Access】実行中のmdb(自分自身)をバックアップコピーする方法。
    亀 (02/06)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    管理人 (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    あ (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    K (11/13)
  • 【VAIOP】VaioXと両持ちできるものすっっごくマニアックなケース。当たり前ですが在庫限り。(笑)
    管理人 (08/04)
recent trackback
  • 【Access】2003安全でない式がブロックされていませんとセキュリティーレベル。
    awgs Foundry (10/29)
  • 【VAIOtypeP】液晶保護シートは、新車のカバーではない。レイアウト社液晶/天板保護フィルムセットRT-VP1FS1
    XMLがキライ。 (04/09)
  • Vistaから、LinkStation(NAS)にアクセスできません。
    そのほかいろいろ (09/06)