アクセスのオートナンバーでスタートの数字を変更するにはどうすればいいですか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

もしマクロやVBが使えるのでしたら、主キーを数値型(インデックス(重複なし)にします。

次にフォームのどこかに非連結のフィールドでコントロールソースに、=MAX([主キーのフィールド名])のテキストボックスを作ります。仮にここではそのテキストボックスを最大値という名前にします。先頭行だけは任意の数字を入力し、主キーのフォーカス取得時などに、値の代入で([最大値]+1)を代入すれば、半自動のオートナンバーリングができます。
 もうひとつ見た目だけを変えるのでしたら、書式で1000とすれば1001から始まります。ただしレコード数が1000番になれば、期待している2000ではなく11000となります。またレコードの抽出の際は本来の数字"1"で表示上が""1001"なら"1"で抽出しないと抽出されません。あくまで見た目の書式です。
    • good
    • 0

それは既にあるデータベースの数字を変更するのでしょうか。

それとも新規作成のデータベースを例えば1001番から番号を振りたいのでしょうか。後者であれば追加クエリを使うとできます。

その方法は
「社員テーブル」に「社員ID(オートナンバー型、主キー設定)、氏名」のようなフィールドがあったとします。

新しく「Dummyテーブル」を作成し「社員ID(数値型、主キー設定)」フィールドを作ります。この新規テーブルの最初のレコードを1001と入力し、そのテーブルから選択クエリを作成します。
選択クエリができたら、デザインビューに切り替え、ツールバーの「クエリ」から「追加」を選択します。
これで追加クエリができますので、あとは「実行」ボタンを押すだけです。

元の「社員テーブル」の1行めに1001という値が入り、以降自動的に1002、1003と入力されます。

結構面倒臭いようですね。つまり普通にはそういう機能はないみたいです。
もし、質問が前者のような意味だったら答えにはなっていませんが。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアクセスのオートナンバーについて

アクセス2000で販売管理を作成しています。
顧客マスター処理で顧客番号をオートナンバーに設定しているのですが顧客データ入力フォームに中止するボタンを用意して、押されると入力中のデータは保存されないようにしています。(コマンドボタンウイザードでレコードを元に戻す)を使用
これで、中止を押して再度登録するとオートナンバーが
1つ飛んでしまいます。
例 顧客番号3で入力中中止ボタン押下後、再度新規登録すると顧客番号が5になってしまう。
これを無くす方法(4になるように)はありますでしょうか?
それと欲張りで大変申し訳ないのですが、
コンボボックスにキーボードからの入力をさせないようにする方法はありますか?
どうぞよろしくお願い致します。

Aベストアンサー

> 例 顧客番号3で入力中中止ボタン押下後、
> 再度新規登録すると顧客番号が5になってしまう。
> これを無くす方法(4になるように)はありますでしょうか?


基本的にはありませんが、たとえば顧客番号3で中止して、再度新規登録する前に 「最適化」をすると4からはじめられる場合があります。

ただこれもOSやその他の状況(Jetエンジンのバージョン等)によって違うみたいですので、100%の解決策ではありません。また、最適化意外に直接的な解決策はありません。(連番が主キーの場合は。)

一番いいのはオートナンバーを使わずに、プログラムでオートナンバーを作る方法です。

フォームの挿入前イベントなどに、DMAX関数を使ってインクメント(+1ずつふやす)する方法などです。

If DCount("*","フォームのソースとなるテーブル名") = 0 Then

Me!連番フィールドと連結するテキストボックス名 = 1

Else

Me!連番フィールドと連結するテキストボックス名 =DMax("連番フィールド名","フォームのソースとなるテーブル名")

End If

みたいな感じで。

オートナンバー型の値を連番フィールドや主キーなんかにしたりするとあとあと困ることが多いですので、できればオートナンバーは使わないほうが良いかと思います。
メンテの楽なデータベースを作る基本が「オートナンバーを使わない」ということです。マイクロソフトはなんでこんな使えないオートナンバーを放置しておくのか不思議でたまりませんが・・・

そのほか、連番テキストボックスの「既定値」に、

=DMax("連番フィールド名","フォームのソースとなるテーブル名")

などと書いても良いと思います。
ただしこの場合はテーブルにレコードが1つも無い場合に最初の値を入れられないので、最初だけ1を入れておくか、IIF関数なども使うといいかもしれません。

僕は、フォームの挿入前イベントに前述のようなプログラムコードを書くのが一番好きです。

> 例 顧客番号3で入力中中止ボタン押下後、
> 再度新規登録すると顧客番号が5になってしまう。
> これを無くす方法(4になるように)はありますでしょうか?


基本的にはありませんが、たとえば顧客番号3で中止して、再度新規登録する前に 「最適化」をすると4からはじめられる場合があります。

ただこれもOSやその他の状況(Jetエンジンのバージョン等)によって違うみたいですので、100%の解決策ではありません。また、最適化意外に直接的な解決策はありません。(連番が主キーの場合は。)

...続きを読む

QACCESS【オートナンバーで付与した数字を表示通り使用したい】

オートナンバーで付与した数字を表示通り使用したい
アクセス初心者ですので、質問がわかりにくかったらすみません。

管理番号を自動採番したいです
例:AA61200001、AA61200002、AA61200003 ...
(1)AA:システム名(固定)
(2)612:年月(YMD)
(3)00001:00001~連番【見出し名は、管理番号ベース】
(テーブルでオートナンバーにし、書式を00000として、5桁表示させています)

但し、(2)が毎月変わるので、毎月入力するものとし、クエリでこの3つを引っ付けました。
管理番号: "AA" & [月付与フォームより入力] & [管理番号ベース]

私の予想では、  AA61200001
となるはずが、   AA6121
と、なってしまいました。
エクセルと同じように、あくまでも表示上5桁にしているだけだからだろうなあ。
と予想は出来たのですが、どのように対処すれば、いいのかわかりません。

色々方法はあると思いますが、初心者でもわかるやり方で
どうか教えてください。

オートナンバーで付与した数字を表示通り使用したい
アクセス初心者ですので、質問がわかりにくかったらすみません。

管理番号を自動採番したいです
例:AA61200001、AA61200002、AA61200003 ...
(1)AA:システム名(固定)
(2)612:年月(YMD)
(3)00001:00001~連番【見出し名は、管理番号ベース】
(テーブルでオートナンバーにし、書式を00000として、5桁表示させています)

但し、(2)が毎月変わるので、毎月入力するものとし、クエリでこの3つを引っ付けました。
管理番号: "AA" & [月付...続きを読む

Aベストアンサー

#1です。すみません。書式の00000を""で囲んで"00000"とするのを忘れてました。

Qアクセスのオートナンバーを拡張?したいのですが

アクセスのオートナンバー機能というのは1,2,3...しか順番がつけられないと思うのですがもう少し拡張した?使い方をしたいのです。例えば、ID項目をID=2x(xは自然数)のような関数定義はできないのでしょうか?そうすれば2,4,6,8...と偶数だけが入りますよね?こういった感じで単純に1,2,3ではなくユーザーの定義に基づいて自動的に項目に入れていってくれるような方法はないでしょうか?

Aベストアンサー

オートナンバー型フィールドの値に計算式は、使用できないと思います。

フォームからデータ入力するのであれば、代換策として数値型フィールドに
順に偶数だけを自動的に設定することは、出来ると思います。

例えば、フォームのレコード移動時イベントに次のように記述します。
[番号]が「数値型フィールド」とします。

Private Sub Form_Current()
'数値型用
If Me.NewRecord = False Then Exit Sub
Dim maxno As Variant
maxno = DMax("[番号]", "テーブル1")
If IsNull(maxno) Then
  Me.番号.DefaultValue = 2
Else
  Me.番号.DefaultValue = maxno + 2
End If
End Sub

クエリーの場合は、DMax関数を使うといいと思います。

Qアクセスのオートナンバー

XPのアクセスを使っています。

オートナンバーに主キーが設定されています。
データを入力するとオートナンバーが「1・2・3~」と振られていきますが、もし「3」のデータを消去すると「1・2・4~」となります。
私的にはツメて「1・2・3~」となって欲しいのですが無理なのでしょうか?オートナンバーとはそういうもの?
アクセス超初心者ですのでよろしくお願いいたします。

Aベストアンサー

こんにちは。maruru01です。

主キーというのは、各レコードに与えられた固有でユニークな値です。
この値は、レコードが新規に作成されてから、削除されるまで、変更しないことが大前提です。
テーブル間のリレーションなどを主キーで連結するのが普通で、これを頻繁に変更することは、メンテナンス性を大幅に下げることになりかねません。
特に値に意味のないオートナンバー型であればなおさらです。
単に、「1、2、3」の方がいいなあ、という程度のことでしたら、デメリットを考えると、変更しない方がよいでしょう。

Qアクセス2000 オートナンバーについて

いつもお世話になります。
アクセス2000を使用しているのですが、Dsum関数を使用したいので、時系列を付けるためにオートナンバーを付けています。必要データが日々変わるためにこのテーブルは全データを削除し追加クエリーを使用して計算もとのテーブルをその都度必要なデータのみにしています。
現在テスト中で特に問題はないのですが、本稼動した場合、オートナンバーが一日に10000程になってしまいます。計算に使うレコード数は200程度なのですが、処理作業を1日に50回程度行いますので。
2年程度メンテナンスはする予定をしていないので、このままではオートナンバーが7000000程度になってしまいます。オートナンバーの数字が多くなることによるエラー等は発生しないのでしょうか。またオートナンバー以外に連番をふる方法はあるのでしょうか。

宜しくお願い致します。

Aベストアンサー

オートナンバーは長整数型ですから
2,147,483,648 までの値です。
当分、心配ありませんね。


人気Q&Aランキング

おすすめ情報