一定期間更新がないため広告を表示しています
スポンサーサイト
- 2022/06/17
- -
- -
- -
- 記事URL https://plus-sys.jugem.jp/?eid=
Twitterはじめました。プラプラ | Twitter
【Access】VBA(DAO)によるオートナンバー値の取得と初期化方法
- 2015/07/27
- AccessTips
- comments(0)
- trackbacks(0)
- 記事URL https://plus-sys.jugem.jp/?eid=493
Accessでちゃちゃっとツール的なものを作るとき、採番テーブルを準備せずにオートナンバー型を使ってAccess側で自動採番させることがあります。
で、このオートナンバー型の値ですが、データを挿入した際に自動採番された値を取得するのはどのようにすればよいのでしょうか?
新規登録画面で、登録されたデータの自動採番値を画面表示するといったケース等。
MySQL,SQLServer,etc...でもたまにこういう要件がありまして、いつもWEBで調べてます。(汗)
今回、Access+DAOでの実装方法をWEBで調べたところ、海外のあやしい翻訳サイトしかヒットしなかったので、実装方法を備忘として残しておこうと思います。
データ登録後、@@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)
で、このオートナンバー型の値ですが、データを挿入した際に自動採番された値を取得するのはどのようにすればよいのでしょうか?
新規登録画面で、登録されたデータの自動採番値を画面表示するといったケース等。
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)
Twitterはじめました。プラプラ | Twitter
スポンサーサイト
- 2022/06/17
- -
- -
- -
- 記事URL https://plus-sys.jugem.jp/?eid=
Twitterはじめました。プラプラ | Twitter
[関連エントリ 最新5]-
[Google PR]
[最新エントリ 5]-
- コメント
- コメントする(お気軽にどうぞ)
- この記事のトラックバックURL
- トラックバック
- カテゴリー
-
- Vista (15)
- AccessTips (74)
- 雑記 (68)
- セキュリティー (23)
- おもしろいサービス (5)
- tool (12)
- あまっちゃお (4)
- コンピュータ (66)
- CakePHP (25)
- VAIOTypeP[バイオタイプピー] (12)
- SQLServer (25)
- iPad (36)
- Apple Watch (5)
- AWS認定 (1)
- Azure (4)
- e-mobile (8)
- iOSアプリ (18)
- iPhone (2)
- iPhoneX (2)
- ipod touch (3)
- kindle (18)
- Monaca (1)
- Nexus7 (11)
- VAIO PRO (1)
- VAIO X[バイオ エックス] (1)
- VAIO Z (5)
- Windows10 (1)
- Windows8 (7)
- Windows9 (1)
- XPERIA Z1 (1)
- XperiaZ (6)
- 【全記事一覧】 (1)
- おすすめ本まとめ (2)
- クラウド (1)
- セール (3)
- デジモノ (24)
- 本(BOOK) (9)
- 腕時計 (1)
- プロフィール
- 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)
- 【Access】コンボボックス対応版。超簡単な帳票フォームでの矢印上下キー行移動。
- recent trackback
-
- 【Access】2003安全でない式がブロックされていませんとセキュリティーレベル。
⇒ awgs Foundry (10/29) - 【VAIOtypeP】液晶保護シートは、新車のカバーではない。レイアウト社液晶/天板保護フィルムセットRT-VP1FS1
⇒ XMLがキライ。 (04/09) - Vistaから、LinkStation(NAS)にアクセスできません。
⇒ そのほかいろいろ (09/06)
- 【Access】2003安全でない式がブロックされていませんとセキュリティーレベル。
- sponsored links