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.

Tabloya yeni kayıt ekledikten sonra gelen hata iletisinin ekran görüntüsü.

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:

  1. Access'i başlatın.

  2. Access veritabanını açın.

    Not

    Güvenlik Uyarısı iletişim kutusunu görürseniz Aç'a tıklayın.

  3. 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:

  1. Oluştur sekmesinde, Sorgular grubunda Sorgu Tasarımı'na tıklayın.

  2. Tabloyu Göster iletişim kutusunda Kapat'a tıklayın.

  3. Tasarım sekmesinde, Sonuçlar grubunda SQL görünümü'ne tıklayın.

  4. 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.

  5. Tasarım sekmesinde, Sonuçlar grubunda Çalıştır'a tıklayın.

Yöntem 3: Visual Basic for Applications kodu çalıştırma

  1. Oluştur sekmesinde, Makro'nun altındaki aşağı oka ve ardından Modül'e tıklayın.

  2. 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.

  3. Ç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ı

  1. Yeni boş veritabanı oluşturma

  2. Aşağıdaki iki alanı içeren Tablo1 adlı yeni bir tablo oluşturun:

    Alan1: Otomatik Sayı (Birincil Anahtar) Alan2: Metin

  3. Tablo1'e aşağıdaki altı kaydı ekleyin.

    Alan1 Alan2
    1 A
    2 B
    3 C
    4 D
    5 E
    6 F
  4. Alan1'in 3 değerine sahip olduğu kaydı silin.

  5. Oluştur sekmesinde, Sorgular grubunda Sorgu Tasarımı'na tıklayın.

  6. Tabloyu Göster iletişim kutusunda Kapat'a tıklayın.

  7. Tasarım sekmesinde, Sonuçlar grubunda SQL görünümü'ne tıklayın.

  8. Sorgu1 penceresine aşağıdakileri yazın:

    INSERT INTO Table1 (Field1, Field2) SELECT 3 AS Field1, "C" AS Field2;
    
  9. Tasarım sekmesinde, Sonuçlar grubunda Çalıştır'a tıklayın.

  10. Tablo1'i açın ve yeni bir kayıt eklemeyi deneyin. "Belirtiler" bölümünde belirtilen hata iletisini alırsınız.