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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
INSERT文で発行したオートナンバーを取得したい
SQL Server
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
Accessフォームのテキストボックス内改行無効の方法
その他(データベース)
-
-
4
Access2000 サブフォームのRecordSet取得法
Access(アクセス)
-
5
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
6
コンボボックスにキー入力をさせない方法(ACCESS VBA)
その他(プログラミング・Web制作)
-
7
Access サブフォームでの選択行の取得
その他(データベース)
-
8
ACCESSでコンボボックスにSQLで抽出した値を表示したい
その他(データベース)
-
9
Access2003 オートナンバーの現在値取得方法
Visual Basic(VBA)
-
10
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
11
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
12
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
13
ACCESSのフォームで列固定?
Access(アクセス)
-
14
新規レコード行を非表示にしたい
Access(アクセス)
-
15
Accessでグローバル変数を宣言して定数を定義したい
その他(データベース)
-
16
Accessの実行時エラーについて
その他(データベース)
-
17
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
18
コンボボックスの開いたリストを閉じるには
Access(アクセス)
-
19
入力した値をコンボボックスにすぐに反映させる方法
Excel(エクセル)
-
20
ADOのCursorLocationプロパティ
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
Access VBA Me.Requery レコー...
-
ACCESSのBookmarkプロパティの...
-
Access 重複しないメールをテー...
-
Select Distinct の使い方
-
カラム数が多いテーブルの速度
-
accessで検索&入力 データの...
-
Accessにインポートしたら並び...
-
Access カレントレコードがあり...
-
【SQL】複数のカラムを合わせて...
-
PostgreSQLへのODBC接続について
-
phpmyadminで問い合わせた結果...
-
Accessのレコード件数について
-
パススルークエリの使い方
-
2つの項目が重複するレコード...
-
AccessVBAによるエクセルファイ...
-
ACCESS【更新クエリの中断がで...
-
「マスタ」と「テーブル」の違...
-
SELECT時の行ロックの必要性に...
-
CSVファイルのインポートについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データの二重表示の原因
-
Accessにインポートしたら並び...
-
3つ以上のテーブルをUNIONする...
-
数百万件レコードのdelete
-
2つの項目が重複するレコード...
-
Access 1レコードずつcsvで出力...
-
Access VBA Me.Requery レコー...
-
ManagementStudioからのデータ削除
-
非連結サブフォームのレコード...
-
Accessで重複したデータを一件...
-
ACCESSのBookmarkプロパティの...
-
Access 削除クエリが重い
-
Accessでの禁止文字チェック
-
Access カレントレコードがあり...
-
SQLServerで同一条件レコードの...
-
Accessでの排他制御
-
ACCESS【更新クエリの中断がで...
-
SQLデータ修正時に『このレコー...
-
(ACCESS)並び替えをしないで...
-
ACCESSファイルを開こうとする...
おすすめ情報