Makale numarası: 221931 - Son Gözden Geçirme: 24 Ocak 2007 Çarşamba - Gözden geçirme: 3.3

Kayıt'ın otomatik numara değer iade nasıl DB Access'e eklendi.

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Özet

Otomatik numara alanında bir ActiveX Data Objects (ADO) Recordset nesnesine yeni bir kayıt eklendiğinde, hemen raporlama eklenen kayıt için otomatik numara alanındaki değeri 0 değeri verir

Bu makalede, bir ADO AddNew() ve Update() yöntemleri, bir Access veritabanına eklenen bir kaydın otomatik numara alanının otomatik olarak oluşturulan değerini almak açıklamaktadır. Örnek, bir Active Server Pages (ASP) sayfasında VBScript kullanır.

Daha fazla bilgi

Aşağıdaki kod, makinenize Adventure Works veritabanı vardır ve bu işaret AdvWorks adlı bir ODBC veri kaynağı adı (DSN) olan varsayar.

Örnek de \Program Files\Common Files\System\Ado içinde bulunan adovbs.inc dosyası içerir.

Bu kod kullanıcının herhangi bir giriş ile soru sormaz. Bu işlem, Adventure Works veritabanı müşteriler tablosuna bir kayıt ekler ve yeni kaydın otomatik numara alanı (MüşteriNo) değerini görüntüler.

Not Bazı anahtar öğeleri şunlardır:
  • CursorLocation adUseClient'olması gerekir. Erişim, bir sunucu tarafı imleci desteklemiyor.
  • Otomatik numara alanı otomatik olarak oluşturulan değerle doldurmak için recordset Requery yöntemini kullanarak requeried gerekir.
  • Requery yöntemini absolutePosition (yer işareti), yeni eklenen kaydı requeried kayıt ilk kayda sıfırlar. Sonuç olarak, the absolutePosition olmalı Requery çağırmadan önce kaydedilmiş ve Requery çağrıldıktan sonra yeni eklenen kayıt geri.
<%@ 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>

				

Referanslar

Autoıncrement alanı ve ADO kullanma hakkında ek bilgi için lütfen Microsoft Knowledge Base'de aşağıdaki makaleye bakın:
195910  (http://support.microsoft.com/kb/195910/EN-US/ ) BILGI: <a1>Kimlik</a1> (Autoıncrement) sütunları ADO veya RDS

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ActiveX Data Objects 1.5
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
Anahtar Kelimeler: 
kbmt kbdatabase kbhowto kbinetdev KB221931 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:221931  (http://support.microsoft.com/kb/221931/en-us/ )