
Excel+VBA から、ADOを使って、Accessを操作しようとしています。
なんとか、sqlを実行できるようになったのですが、
一点、分からないところが出てきましたので、教えてください。
insert文で、レコードを追加したとき、追加されたレコードのIDを取得したいのですが、
どのようにすれば良いかわかりません。
コードは次のようにしています。
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & データベース名 & ";"
sql = "INSERT INTO テーブル名(フィールド) VALUES(値)"
cnn.Execute sql
以上、すみませんが、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
「追加されたレコードのID」というのはテーブル上で自動的に採番される値のことを言ってますか?
また、そのデータベースは自分(このSQL)以外に同時にINSERTされますか?
もし、INSERTされるのが1つで同時に処理されないのであれば、そのテーブルのIDのMAXを取ればよいと思います。
ご回答ありがとうございます。
>「追加されたレコードのID」というのはテーブル上で自動的に採番される値のことを言ってますか?
そうです。
>もし、INSERTされるのが1つで同時に処理されないのであれば、そのテーブルのIDのMAXを取ればよいと思います。
同時に処理はしないので、
SELECT Max(ID) FROM テーブル
で対応可能です。
ただ、INSERTしたときの、戻り値のようなかたちで、追加IDを取得する方法はないのでしょうか?
No.2
- 回答日時:
私も詳しくないので、ヒントだけ。
IDENT_CURRENT / @@IDENTITY / SCOPE_IDENTITY
これらが、キーワードです。検索してみて下さい。
これらは、複数同時アクセスの場合でも使えるようです。
参考になりそうなものを幾つか挙げておきます。
最後に挿入されたオートナンバー値を取得するには、@@IDENTITY変数が利用できます。
http://yaplog.jp/orator/archive/12
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …
引用
Updateと同時に取得はできないようなので@@identityの値を取得するようにしました。
SQLSERVER2000で IDENT_CURRENT と @@IDENTITY と SCOPE_IDENTITY の違い
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …
IDENT_CURRENT / @@IDENTITY / SCOPE_IDENTITY の違い
http://sonic64.com/2005-05-23.html
>ただ、INSERTしたときの、戻り値のようなかたちで、追加IDを取得する方法はないのでしょうか?
ネットの情報を見た感じでは、無理っぽい気がします・・・
INSERT後、IDを取得するのが一般的なようですね。
ご回答ありがとうございます。
>INSERT後、IDを取得するのが一般的なようですね。
わたしも、教えていただいたサイト・その他のサイトを調べましたが、そのようですね。
あきらめようかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
Accessにインポートしたら並び...
-
Access 削除クエリが重い
-
Access VBA Me.Requery レコー...
-
SQLデータ修正時に『このレコー...
-
数百万件レコードのdelete
-
テーブルのレコード削除ができ...
-
PostgreSqlのテーブルをVBから更新
-
ACCESS VBA コマンドDoCmd.Open...
-
ACCESSのBookmarkプロパティの...
-
DB INSERT 時の排他制御について
-
非連結サブフォームのレコード...
-
Access 1レコードずつcsvで出力...
-
(ACCESS)並び替えをしないで...
-
無償版SQLサーバ 中国語(簡体...
-
Accessで重複したデータを一件...
-
レコードロックする方法
-
Accessでの排他制御
-
ACCESS 『DoCmd.OutputTo』に...
-
SQLServerで同一条件レコードの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
Accessにインポートしたら並び...
-
データの二重表示の原因
-
ACCESSのBookmarkプロパティの...
-
Access 削除クエリが重い
-
Access VBA Me.Requery レコー...
-
Access 1レコードずつcsvで出力...
-
2つの項目が重複するレコード...
-
数百万件レコードのdelete
-
SQLデータ修正時に『このレコー...
-
複数レコードをUPDATE文一文で...
-
SQLServerで同一条件レコードの...
-
Accessの重複クエリで最小以外...
-
Accessでレコードが更新された...
-
(ACCESS)並び替えをしないで...
-
テーブルのレコード削除ができ...
-
Accessで重複したデータを一件...
-
MySQL+PHP 特定レコードの更新...
-
曜日を格納する方法はどちらが...
-
ManagementStudioからのデータ削除
おすすめ情報