Access'te Otomatik Sayı alanı içeren bir tabloya yeni kayıt eklemeye çalıştığınızda hata iletisi alabilirsiniz
Özgün KB numarası: 884185
Belirtiler
Otomatik Sayı alanı olan bir tabloya yeni bir kayıt eklemeye çalıştığınızda aşağıdaki hata iletisini alabilirsiniz:
Tabloda istediğiniz değişiklikler dizinde, birincil anahtarda veya ilişkide yinelenen değerler oluşturacağından başarılı değildi. Yinelenen veri içeren alan veya alanlardaki verileri değiştirin, dizini kaldırın veya yinelenen girişlere izin vermek için dizini yeniden tanımlayıp yeniden deneyin.
Not
Tabloda herhangi bir ilişki veya dizin olmayabilir.
Neden
Otomatik Sayı alanı yanlış şekilde dağıtıldığında bu sorun oluşur.
Çözüm
Bu sorunu çözebilecek birden çok yöntem vardır.
Yöntem 1: Sıkıştırma ve Onarım Gerçekleştirme
Veritabanını sıkıştırmak için şu adımları izleyin:
Access'i başlatın.
Access veritabanını açın.
Not
Güvenlik Uyarısı iletişim kutusunu görürseniz Aç'a tıklayın.
Veritabanı Araçları şerit sekmesine ve ardından Araçlar grubunun içinden Veritabanını Sıkıştır ve Onar'a tıklayın.
Not
Access'in önceki sürümlerinde Veritabanını Sıkıştır ve Onar seçeneği başka bir yerde bulunabilir. Bu seçeneği bulmak için belirli Access sürümünüzle ilgili belgelere bakın.
Otomatik Sayı alanı tohumunu el ile sıfırlamak için aşağıdaki yöntemlerden birini kullanın.
Yöntem 2: Veri Tanımı sorgusu kullanma
Tabloyu içeren veritabanını (arka uç veritabanı) Access'te açın:
Oluştur sekmesinde, Sorgular grubunda Sorgu Tasarımı'na tıklayın.
Tabloyu Göster iletişim kutusunda Kapat'a tıklayın.
Tasarım sekmesinde, Sonuçlar grubunda SQL görünümü'ne tıklayın.
Sorgu1 penceresine aşağıdakileri yazın:
ALTER TABLE TableName ALTER COLUMN AutoNumFieldName COUNTER(iMaxID,1);
Not
<TableName> , tablonun adı <için bir yer tutucudur. AutoNumFieldName> , Otomatik Sayı alanının adı için bir yer tutucudur. iMaxID , alandaki geçerli en yüksek değer artı 1 için yer tutucudur.
Tasarım sekmesinde, Sonuçlar grubunda Çalıştır'a tıklayın.
Yöntem 3: Visual Basic for Applications kodu çalıştırma
Oluştur sekmesinde, Makro'nun altındaki aşağı oka ve ardından Modül'e tıklayın.
Visual Basic Düzenleyici aşağıdaki kodu yapıştırın.
Sub ResetAuto() Dim iMaxID As Long Dim sqlFixID As String iMaxID = DMax("<AutonumberFieldName>", "<TableName>") + 1 sqlFixID = "ALTER TABLE <TableName> ALTER COLUMN <AutonumberFieldName> COUNTER(" & <iMaxID> & ",1)" DoCmd.RunSQL sqlFixID End Sub
Not
AutonumberFieldName> yer tutucusu<, Otomatik Sayı alanının adını temsil eder. TableName> yer tutucusu <tablonun adını temsil eder.
Çalıştır menüsünde Alt/Kullanıcı Formunu Çalıştır'a tıklayın.
Not
İki yöntemden birini kullanmadan önce tabloyu kapatmanız gerekir. Herhangi bir yöntemi başarıyla kullandıktan sonra sorguyu veya modülü kaydetmeniz gerekmez
Davranışı yeniden oluşturma adımları
Yeni boş veritabanı oluşturma
Aşağıdaki iki alanı içeren Tablo1 adlı yeni bir tablo oluşturun:
Alan1: Otomatik Sayı (Birincil Anahtar) Alan2: Metin
Tablo1'e aşağıdaki altı kaydı ekleyin.
Alan1 Alan2 1 A 2 B 3 C 4 D 5 E 6 F Alan1'in 3 değerine sahip olduğu kaydı silin.
Oluştur sekmesinde, Sorgular grubunda Sorgu Tasarımı'na tıklayın.
Tabloyu Göster iletişim kutusunda Kapat'a tıklayın.
Tasarım sekmesinde, Sonuçlar grubunda SQL görünümü'ne tıklayın.
Sorgu1 penceresine aşağıdakileri yazın:
INSERT INTO Table1 (Field1, Field2) SELECT 3 AS Field1, "C" AS Field2;
Tasarım sekmesinde, Sonuçlar grubunda Çalıştır'a tıklayın.
Tablo1'i açın ve yeni bir kayıt eklemeyi deneyin. "Belirtiler" bölümünde belirtilen hata iletisini alırsınız.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin