• ベストアンサー

ExcelVBAでMySQLのAUTO_INCREMETを

まず、MySQLで作ったデータベースにAUTO_INCREMETに設定したフィールドがあります。 そして、ExcelVBAのADOで新しいレコードを追加した直後にそのフィールドの値 を取得しようとしています。 レコードセット.addNew レコードセット.update レコードセット.MoveLast としても、取得できるのは更新前の値です。 開くときはadOpenDynamic, adLockOptimisticにしているのですが、 他に何か問題があるのでしょうか? ちなみに、一旦closeした後は新しい値が取得できます。

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

MySQLの機能の制限事項のようですね。 別途レコードセットを準備しておき Dim rs2 As New ADODB.Recordset . . Set rs2 = cn.Execute("select last_insert_id() last_id") Debug.Print rs2!last_id (cnは共通のコネクション) の要領で挿入されたAUTO_INCREMENT指定の項目の値を取得する必要が あるようです。

meninas
質問者

お礼

お見事です。 万事解決した上に、またひとつ賢くなれました。 ありがとうございました。

関連するQ&A