Accessで連番をふるプロセスで質問です。
データをあるテーブルに追加した時に、連番をふりたいと考えています。
最も簡単なのはオートナンバーフィールドを設定する方法なのですが、この場合一つ欠点があります。
それはレコードを全削除した場合でもナンバーがリセットされないという事です。
追加クエリでテーブルにデータを追加する前に必ずテーブルのレコードを全削除するのですが、
この際にオートナンバーも一緒にリセットする方法は無いでしょうか?
また、質問の題名とは変わってしまうかもしれませんが、
オートナンバーを使用せずにレコードに連番をふる方法があればご教授下さい。
No.4ベストアンサー
- 回答日時:
>最適化せず(プログラムを走らせたままで)オートナンバーをリセットする方法をもしご存知でしたらご教授頂ければ幸いです。
テーブルのレコードを削除してからコピーすると、
オートナンバーはリセットされます。
それを利用した方法です。
他にも方法はあると思いますが、これが簡単かな。
Sub AutoNumberReset()
Const TargetTable = "Table1" 'リセットしたいテーブル
Const TargetAutoID = "ID" 'テーブルのオートナンバーのフィールド名
Const TargetFields = "Data1, Data2" 'オートナンバー以外のフィールド名
Const TempTable1 = "temp1" '作業用テーブル1
Const TempTable2 = "temp2" '作業用テーブル2
'確認メッセージなし
DoCmd.SetWarnings False
'ターゲットを作業用テーブルにコピーし削除
DoCmd.CopyObject , TempTable1, acTable, TargetTable
DoCmd.CopyObject , TempTable2, acTable, TargetTable
DoCmd.DeleteObject acTable, TargetTable
'作業用テーブル2のレコード削除する
DoCmd.RunSQL "delete * from " & TempTable2
'作業用テーブル2をターゲットにコピー(この時点でリセットされる)
DoCmd.CopyObject , TargetTable, acTable, TempTable2
'作業用テーブル1からレコードの内容をターゲットに戻す(オートナンバー以外のデータ)
DoCmd.RunSQL "insert into " & TargetTable & " select " & TargetFields & " from " & TempTable1 & " order by " & TargetAutoID
'作業用テーブルの削除
DoCmd.DeleteObject acTable, TempTable1
DoCmd.DeleteObject acTable, TempTable2
'確認メッセージあり
DoCmd.SetWarnings True
End Sub
ご返答いただきありがとうございます。
回答を読んでいて、「コピーする」という部分で思いつきました。
どうせならテーブル内のレコードでなくテーブル全体を削除して、マクロのオブジェクトコピーから基となるテーブルを毎回同じ名前でコピーすれば良いのではないか、と。
思ったとおり毎回オートナンバーが1から反映されるようになりました。
No.3
- 回答日時:
>オートナンバーを使用せずにレコードに連番をふる方法があればご教授下さい。
リセットの方法については回答出ているので、こちらの質問に答えます。
これには何らかの並べ替えに使用できるフィールドが必要です。
(重複は不可)
すでにオートナンバーのフィールドがあるならこれを利用します。
(何番から始まってもOK、番号が抜けててもOK)
仮にこのフィールドをF1とします。
テーブル名をTable1と仮定します。
----以下手順----
新規のクエリを作り、テーブルを追加します。
クエリのフィールドに下記を記述
連番:DCount("F1","Table1","F1 <=" & [Table1].[F1])
残りのフィールドは適当に。
----以上手順----
これで1から始まる連番が追加できます。
ご返答いただきありがとうございます。
なるほど、クエリで簡単に出来るのですね!
これは大変参考になりました。ありがとうございました。
No.2
- 回答日時:
Bronco7さんの言うとおり、
最適化するとオートナンバーはリセットされます。
もし100番までオートナンバーをとっていて
101~150のデータを削除したあと最適化すれば
また101からの入力が可能です。
最適化は
ツール - データベースユーティリティ - 最適化/修復
から行うことができます。
また、ツール/オプション/全般タブで
「閉じるときに最適化する」にチェックをいれておけば
データベースを閉じるたびに最適化することも可能です。
こうすることで、データベースの肥大化を防ぐことが可能です。
この回答への補足
ご返答頂きありがとう御座います。
No.1の補足にも記述したのですが、最適化をせずに、あるプログラムの中でオートナンバーをリセットする方法を探しております。
最適化せず(プログラムを走らせたままで)オートナンバーをリセットする方法をもしご存知でしたら引き続きご教授頂ければ幸いです。
No.1
- 回答日時:
オートナンバーを全削除したのなら
データベースの最適化/修復を実行すれば
リセットされますよ。
この回答への補足
ご返答頂きありがとう御座います。
たしかに最適化するとリセットされるんですよね。
ですが最適化の場合には実際は一旦データベースが終了し再起動している状態なので、起動時に走るプログラムが動いてしまったり、最適化前に開いていたフォームが復元されないなどの問題が出てしまうのです。
最適化せず(プログラムを走らせたままで)オートナンバーをリセットする方法をもしご存知でしたらご教授頂ければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
あなたの習慣について教えてください!!
あなたが習慣だと思って実践しているものを共有してくださいませんか? 筋肉トレーニングでも朝シャワーでも、あなたが習慣だなと思えば何でも構いません
-
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
エクセルからアクセスにインポートする際のエラーについて
Access(アクセス)
-
-
4
Access サブフォームでの選択行の取得
その他(データベース)
-
5
ACCESS 入力フォームでテーブルへデータを複数追加する
Access(アクセス)
-
6
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
7
アクセスで追加した項目に全て同じ値を一発で入れたい
Access(アクセス)
-
8
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
9
AccessのフォームのテキストボックスにLOOKUPで表示したい
Access(アクセス)
-
10
アクセスVBAのMe!と[ ]
Access(アクセス)
-
11
VBA内でSQL(UPDATEをループ処理)したいのですが
Access(アクセス)
-
12
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
13
オートナンバー型を1から始める方法はありますか?
その他(Microsoft Office)
-
14
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
15
accessのレポートであとから他のテーブルのフィールドを追加する方法
Access(アクセス)
-
16
Accessのテーブルを既存のExcelファイルへエクスポートしたいんですが
Access(アクセス)
-
17
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
18
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
19
VBAのTextBoxに半角数字のみ入力したい
Visual Basic(VBA)
-
20
テキストボックスにクエリ結果を表示させたい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS2000「定義されているフ...
-
Accessでテーブルの値をテキス...
-
Accessのフィールド数が255しか...
-
アクセス メモ型 255文字...
-
accessで重複を防ぎたい
-
ファイルメーカーでCountifの様...
-
Access の非連結テキストボック...
-
Access 昇順・降順で並び替え...
-
ACCESSでの改行コード
-
ACCESSでオートナンバーを任意...
-
ODBC--リンクテーブル'XXXX'で...
-
INSERT INTO ステートメントに...
-
主キーはオートナンバー型のID...
-
Excel 2019 のピボットテーブル...
-
AccessのクエリをExc...
-
アンドロイド おサイフケータイ...
-
GETPIVOTDATAを使...
-
importについて
-
Accessレコードの追加や変更が...
-
Accessで数値型にNULLをInsert...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INSERT INTO ステートメントに...
-
Accessでテーブルの値をテキス...
-
Accessのフィールド数が255しか...
-
ACCESSでの改行コード
-
アクセス エラーを数値「0」に...
-
SQLServer2005のSQL文での別名...
-
accessのレポートで元になるテ...
-
ACCESSで400以上のフィールドが...
-
accessで重複を防ぎたい
-
Access 昇順・降順で並び替え...
-
Accessで、固定アルファベット+...
-
【Access】フォームで自動計算...
-
ExcelのデータをコピーでACCESS...
-
ACCESSでテーブルのチェックを...
-
ACCESS2000「定義されているフ...
-
ACCESS検索★ある文字を複数のフ...
-
ACCESS VBAにてCSV...
-
ACCESSで和暦を西暦に・・・
-
フィールド数の多すぎる・フィ...
-
アクセス メモ型 255文字...
おすすめ情報