スポンサーサイト

一定期間更新がないため広告を表示しています

[Google PR]

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

【Access】VBA(DAO)によるオートナンバー値の取得と初期化方法

Accessでちゃちゃっとツール的なものを作るとき、採番テーブルを準備せずにオートナンバー型を使ってAccess側で自動採番させることがあります。

で、このオートナンバー型の値ですが、データを挿入した際に自動採番された値を取得するのはどのようにすればよいのでしょうか?

新規登録画面で、登録されたデータの自動採番値を画面表示するといったケース等。

MySQL,SQLServer,etc...でもたまにこういう要件がありまして、いつもWEBで調べてます。(汗)
今回、Access+DAOでの実装方法をWEBで調べたところ、海外のあやしい翻訳サイトしかヒットしなかったので、実装方法を備忘として残しておこうと思います。

SELECT @@IDENTITY で取得可能


データ登録後、@@IDENTITYの値を取得します。@@IDENTITYに、登録時に取得されたオートナンバー値が格納されています。(SQLServerでの取得方法と似ていますね。)

以下、Access2003のスタンドアロン環境にて確認。(古いバージョンですみません。。。)

Dim db As DAO.Database

Set db = CurrentDb
db.Execute データ挿入SQLをここに記述(insert into ...)
db.OpenRecordset("SELECT @@IDENTITY")(0)

肝は、
db.OpenRecordset("SELECT @@IDENTITY")(0)
この戻り値を変数に格納しておけば、画面表示したり、別テーブルへ挿入したりといろいろ活用できます。

ついでに、オートナンバーの初期化について


これはよく質問サイトで見かけますが、Accessの場合、データを全削除後、最適化するとオートナンバーが初期化されるようです。

最適化を実行するということはアプリケーションを再起動する必要がありますが、これが都合が悪い場合もあります。

再起動しないでオートナンバーを初期化する方法として、DAOを使ったこんな方法(データ定義言語 (DDL) 使用)もあります。

Dim db As DAO.Database
Dim strSQL As String

Set db = CurrentDb
strSQL = strSQL & " ALTER TABLE テーブル名 ALTER COLUMN フィールド名 COUNTER (1,1)"
db.Execute strSQL

なお、Access、ADO、ODBC、MySQLでは以下のリンクが参考になります。
データの追加時に自動インクリメントの値を取得する方法(Access+MySQL)

以上、AccessのオートインクリメントまわりのちょっとしたTipsでした。


1ライセンスで2台までインストール可能。11196円。
>>Microsoft Office Access 2013 [オンラインコード] [ダウンロード][Windows版] (PC2台/1ライセンス)


Access初心者のやる気のある方向け。「売上管理」「営業日誌」「漢字クイズ」のサンプルを使って効率よく学ぶ。
>>Access マクロ & VBA 開発工房 2013/2010/2007/2003/2002/2000 対応


EXCEL連携ってよくありますよねー。
>>現場で役立つExcel & Accessデータ連携・活用ガイド 2013/2010/2007対応 (Small Business Support)

[Google PR]

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

スポンサーサイト

[Google PR]

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

<< 【AppleWatch】ミラネーゼループの丸洗いお手入れには超音波洗浄機がオススメ。
【Access】VBAから、WEBサーバーへPOST送信する際の送信パラメータ指定について。 >>

[関連エントリ 最新5]

[Google PR]


[最新エントリ 5]

>>トップページ

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









この記事のトラックバックURL
トラックバック
カテゴリー
プロフィール
links
recent comment
  • 【Access】コンボボックス対応版。超簡単な帳票フォームでの矢印上下キー行移動。
    山田 裕樹 (04/28)
  • 【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)
recent trackback
  • 【Access】2003安全でない式がブロックされていませんとセキュリティーレベル。
    awgs Foundry (10/29)
  • 【VAIOtypeP】液晶保護シートは、新車のカバーではない。レイアウト社液晶/天板保護フィルムセットRT-VP1FS1
    XMLがキライ。 (04/09)
  • Vistaから、LinkStation(NAS)にアクセスできません。
    そのほかいろいろ (09/06)
sponsored links