ID Artikel: 221931 - Kajian Terakhir: 20 September 2011 - Revisi: 2.0

Bagaimana mengembalikan Record's Autonumber nilai yang dimasukkan ke dalam akses DB

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Perbesar semua | Perkecil semua

RINGKASAN

Ketika sebuah record ditambahkan ke Recordset objek Data ActiveX (ADO) yang berisi bidang Autonumber, segera melaporkan nilai bidang Autonumber untuk catatan dimasukkan kembali nilai 0.

Artikel ini menjelaskan cara untuk mengambil nilai secara otomatis dihasilkan dari bidang Autonumber catatan yang dimasukkan ke dalam database Access dengan ADO AddNew() dan metode Update(). Sampel menggunakan VBScript dalam Active Server Pages (ASP) halaman.

INFORMASI LEBIH LANJUT

Kode berikut menganggap bahwa Anda memiliki petualangan bekerja database pada mesin Anda dan Anda memiliki ODBC datasource nama (DSN) bernama AdvWorks yang menunjuk ke itu.

Contoh juga mencakup berkas Adovbs.inc, yang dapat ditemukan di \Program Files\Common Files\System\Ado.

Kode ini tidak meminta pengguna untuk setiap masukan. Menyisipkan satu catatan ke daftar pelanggan petualangan bekerja database dan menampilkan nilai bidang Autonumber (CustomerID) dari catatan baru.

Berikut adalah beberapa elemen penting yang perlu diperhatikan:
  • CursorLocation harus adUseClient. Akses tidak mendukung kursor sisi server.
  • Untuk mengisi bidang Autonumber dengan nilai secara otomatis dihasilkan, recordset harus requeried menggunakan metode Requery.
  • Metode Requery ulang absolutePosition (penunjuk) dari catatan baru dimasukkan ke catatan pertama requeried recordset. Sebagai hasilnya, absolutePosition harus disimpan sebelum menyebut Requery, dan dikembalikan ke catatan baru disisipkan setelah Requery yang disebut.
<%@ Language=VBScript %>
<HTML>
<BODY>

<!--#include file=adovbs.inc -->

<% 
Set objConn = CreateObject("ADODB.Connection")
Set objRS = CreateObject("ADODB.Recordset")

objConn.Open "DSN=advworks;"

'Access does not support a cursor engine so a client cursor must be used
objRS.CursorLocation = adUseClient

objRS.Open "SELECT * FROM Customers", objConn, adOpenStatic, adLockOptimistic

     ' when you invoke the method AddNew it adds a new record to the end of           
     ' your current recordset and places your cursor on that record.
     
objRS.AddNew
	objRS("CompanyName") = "Microsoft"
	objRS("ContactFirstName") = "Bob"
	objRS("ContactLastName") = "Smith"
objRS.Update

     ' when you invoke the method Update, it updates the database with the
     ' values of the new record that we just created.  To retrieve the 
     ' value of the Autonumber field we need to update the ADO recordset that
     ' currently have.

     ' When you do a Requery on your recordset, you lose your cursor.  So
     ' we need to store the location before we do the Requery, then reset
     ' it after the Requery.

'before the requery, the Autonumber field shows as 0
Response.Write "<br>ID before Requery = " & objRS("CustomerID")   

bookmark = objRS.absolutePosition  ' First, store the location of you cursor
objRS.Requery                      ' Next, update your recordset with the data from the database

'after the requery, the absolutePosition is the first record of the recordset
Response.Write "<br>ID before setting absolutePosition = " & objRS("CustomerID")

objRS.absolutePosition = bookmark  ' Finally, change your cursor back

'now we have the Autonumber value
Response.Write "<P>Added ID = " & objRS("CustomerID")

objRS.Close
objConn.Close
set objConn = nothing
set objRS = nothing
%>
</BODY>
</HTML>

				

REFERENSI

Untuk informasi tambahan tentang penggunaan bidang AutoIncrement dan ADO, silakan lihat artikel berikut pada Basis Pengetahuan Microsoft:
195910  (http://support.microsoft.com/kb/195910/EN-US/ ) INFO: Identitas (AutoIncrement) kolom dalam ADO atau RDS

Berlaku bagi:
  • Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Services 5.0
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 97 Standard Edition
Kata kunci: 
kbdatabase kbhowto kbinetdev kbmt KB221931 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:221931  (http://support.microsoft.com/kb/221931/en-us/ )