Veri türü tek veya çift olan alanları Oracle'a aktardığınızda Access hataya neden oluyor

Özgün KB numarası: 301915

Not

Temel makro, kodlama ve birlikte çalışabilirlik becerileri gerektirir. Bu makale bir Microsoft Access veritabanı (.mdb) ve bir Microsoft Access projesi (.adp) için geçerlidir.

Belirtiler

Tek veya Çift veri türünde alanları olan bir Access tablosunu dışarı aktarmak için Oracle ODBC sürücüsünü kullandığınızda, sürücü bu alanları aşağıdaki gibi dışarı aktaramıyor.

Microsoft Oracle sürücüsü aşağıdaki hata iletisini görüntüler:

Microsoft Access tüm verileri tabloya ekleyemedi. Sayı> kayıtlarındaki <alanların içeriği silindi ve anahtar ihlalleri nedeniyle 0 kayıt kayboldu.

  • Veriler silindiyse, yapıştırdığınız veya içeri aktardığınız veriler, hedef tablodaki alan veri türleri veya FieldSize özelliğiyle eşleşmez.
  • Kayıtlar kaybolduysa, yapıştırdığınız kayıtlar hedef tabloda zaten var olan birincil anahtar değerlerini içerir veya tablolar arasında tanımlanan bir ilişkinin bilgi tutarlılığı kurallarını ihlal eder. Yine de devam etmek istiyor musunuz?

Sürüm 8.1.6'ya kadar ve sürüm 8.1.6 dahil oracle ODBC sürücüleri aşağıdaki hata iletisini görüntüler:

ODBC - çağrı başarısız oldu [Oracle][ODBC][ORA] ORA-01401: Sütun için çok büyük değer eklendi (#1401)

Neden

Microsoft Access 97'de, dışarı aktarma işlemi Tek ve Çift veri türü alanlarını VarChar2(40) olarak dönüştürür. Ancak, Microsoft Access 2000 ve sonraki sürümlerde alanlar VarChar2(4) olarak dönüştürülür ve bu da verileri barındıramayacak kadar küçük olur.

Çözüm

Verileri Oracle'a başarıyla aktarmak için ilgili tabloları temel alan bir sorgu kullanın. Veri türünü Dizeye dönüştürmek için CStr()işlevini kullanın.

Örneğin, aşağıdaki SQL söz dizimini göz önünde bulundurun:

SELECT tblExample.pkeyDataID, tblExample.dblTest
FROM tblExample;

burada dblTest, veri türü Double olan bir alandır. SQL söz diziminde aşağıdaki değişikliği yaparak dblTest'i Dize veri türüne dönüştürün:

SELECT tblExample.pkeyDataID, CStr([dblTest]) AS Expr1
FROM tblExample;

Sorgu artık Oracle'a başarıyla aktarılabilir.

Bu sorun Microsoft Jet 4.0 Veritabanı Altyapısı Hizmet Paketi 8'de (SP8) giderilmiştir.

Durum

Microsoft, bu makalenin başında listelenen Microsoft ürünlerinde bunun bir sorun olduğunu onayladı.

Ek Bilgi

Bu makalede bahsedilen üçüncü taraf ürünler, Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği ile ilgili örtük veya başka türlü hiçbir garanti vermez.