2010-02-18 27 views
7

V64/Access uygulamasında bazen yanlış otomatik ekim alanıyla ilgili bir sorunla karşılaşıyorum.Oton sayısı tohumunu sıfırla

Bir autonumber alan kimliğine sahip MYTABLE (aynı zamanda birincil anahtar olan) bir tablo olduğunu söyleyelim. Şu anda en fazla ID değerinin 1000 olduğunu söyleyelim. Uygulama yeni bir kayıt eklediğinde (ID değeri açıkça sağlanmadı), bir nedenle, bir sonraki otomatik alan değeri 950 (ve 1001 olması gerektiği gibi değil).) - Yani birincil anahtar ihlali hatası oluşur.

Belirtilerimi açıklayan bir KB makalesi buldum: http://support.microsoft.com/kb/884185.

ALTER TABLE MYTABLE ALTER COLUMN ID COUNTER(1001,1) 

Bunu deneyin, bu "geçersiz alan veri türü" Ben Access'te veritabanı açıp yaparsanız sorun onarılır

başarısız: Kısacası, onlar bir sorgu çalıştırmak için önermek Kompakt/tamir, ancak uygulamada bu tür sorunları düzeltmek için ihtiyacım var: Dünya çapında birkaç binlerce PC'ye yüklenir ve insanların Access ile kompakt/onarım yapmasını istemek bir seçenek değildir.

Uygulama içinde kompakt/onarım yapmak için DAO DBEngine.CompactDatabase'u kullanıyorum ancak tohum sorununu gidermiyor ve bazı ek numaralar gerekiyor.

Birinin çözüm için bir fikri vardır umut, bütün

+0

, sen ** 'ALTER tablo MyTable ALTER SÜTUN kimliği SAYAÇ (1001 çalıştıran ** önce tabloyu kapanıyor, 1) '? –

+0

Kod bir Access MDC/ACCDB içinde ise, dil VB6 değil, VBA'dır. Lütfen açıkla. – Fionnuala

+0

@Otaku: Evet, emin olun Bu sorgu, Access içinde yürütüldüğünde ve DAO üzerinden yürütüldüğünde başarısız olur. Tuhaf olan şudur: eğer Access'te autonumber alanını silersem ve daha sonra aynı alanı yaratırsam, sorgu çalışır. Otoner tipinin farklı tatları var gibi görünüyor, ama bu farkın ne olduğunu fark edemiyorum – Incidently

cevap

4

aşağıdaki makaleye referans Lütfen, bunu çalıştırmak için erişim projeye ekleyebilirsiniz bir yöntem içerir umutsuz

teşekkür gerçekten yakın olduğum tohumlamayı sıfırlamak için Geçmişte bana defalarca bir kurtarıcı olmuştur:

http://allenbrowne.com/ser-40.html

Buna ek olarak bu tür sorunlar için açıklama ve fikir nedenleri içine ve potansiyel çözümün verir.

+0

Sadece bir işlevi desteklemek için bir referans eklemem. Geç bağlama, bunu yapmanın daha iyi bir yolu olacaktır. Ama bir DAO kompakt ve ALTER TABLE tohum sıfırlama ile elde edeceğinizden daha fazlasını elde ettiğinizden emin değilim. Yine de bu kodu çalıştırmayı ve sonradan sıkıştırmayı düşünemiyorum. –

+0

Teşekkürler! Bu mükemmel çalışıyor gibi görünüyor – Incidently

0

Ayrıca, veritabanınızın ANSI 92'yi kullanmak üzere ayarlandığından emin olmanız gerekir, böylece COUNTER geçerli bir veri türü olarak tanınır.

Access 2007'de, bunu ayarlamak için Erişim Seçenekleri, Nesne Tasarımcıları, SQL Server uyumluluk sözdizimi (ANSI 92)'a gidin.

+0

SQL 92 modunu ayarlamak zorunda kalmamak için ALTER TABLE'ı ADO ile çalıştırabilirsiniz. –

0

Bir kompakt/onarım ile sorunu çözmek mümkün olabilir: curosity dışına

In Access 2010: Compact and Repair Database on the Database Tools ribbon. 
In Access 2007: Office Button | Manage. 
In earlier versions: Tools | Database Utilities.