6

別のデータベースのテーブルから最近生成された自動番号の値をどのように取得できるのか疑問に思っています。現在、私はこれをやっています:

Do Until rsA.EOF
    'Inserts new row here (works)
    Set rs = New ADODB.Recordset 
    rs.Open "SELECT @@Identity" (Connection info)
    SQLcmd = "UPDATE tbl SET col = " & rs("SELECT @@Identity").Value & " 
    (WHERE statement);"
    DoCmd.RunSQL SQLcmd
    rsA.MoveNext
Loop

ただし、新しく生成された自動番号の代わりに col に値 0 を与えます。理由はありますか?またはこれを行う別の方法はありますか?

4

1 に答える 1

3

INSERT他のデータベースにアクセスするコードは表示されませんでした。Executeこれを行うために ADO Connection オブジェクトのメソッドを使用している場合は、同じ接続文字列を持つ新しい接続ではなく、 同じ接続オブジェクトSELECT @@Identityからクエリを実行します。同じ接続セッション内でのみ使用できます。それ以外の場合は 0 になります。@@Identity

実際、その値を取得するためにレコードセットは必要ありません。接続オブジェクトの名前connが の場合、レコードセットが返されますが、それをレコードセット オブジェクト変数に割り当てる必要はありません。返されたレコードセットから最初の項目を要求するだけです。

Debug.Print "most recent autonumber: " & _
    conn.Execute("SELECT @@Identity")(0)
于 2013-07-29T18:15:38.423 に答える