Hata: "sözdizimi hatası INSERT INTO..." ADO Recordset.Update üzerinde

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 189220
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Belirtiler
AddNew yöntemini çağırır ve sonra kayıt Update yöntemini çağırın, aşağıdaki hata döndürülür:
ODBC Sürücüleri için Microsoft OLE DB Sağlayıcısı hatası '80040e21'
[Microsoft] [ODBC Microsoft Access 97 Sürücüsü] INSERT INTO deyiminde sözdizimi hatası.
Microsoft Access ODBC sürücüsü version4.00.4202.00 kullanarak ya da daha sonra hata iletisi:
Çalışma zamanı hatası '-2147467259(80004005)':
[Microsoft] [ODBC Microsoft Access sürücüsü] INSERT INTO deyiminde sözdizimi hatası.
Neden
Bu hata, aşağıdaki doğru olduğunda oluşur:
  • CursorType adOpenForwardOnly (0) ' dir.
  • CursorLocation adUseServer olur.
  • Güncelleştirilen alan adı alanında bir boşluk vardır.
  • Microsoft Access ODBC sürücüsü kullanıyorsunuz.
Bir sunucu tarafında, İleri-Onlycursor, AddNew ve Update yöntemlerini çağıran geçersiz bir işlemdir. ActiveX Data Objects (ADO) işlemi gerçekleştirmek için INSERT deyimi üreterek forthis kod kusur dengeler. ADO bir INSERT deyimi oluşturduğunda, FieldDisplayNames sınırlandırmak değil. Bu yüzden, boşluk içeren alan adları bir sözdizimi hatası oluşturur.

Örneğin, geçerli bir INSERT deyimi aşağıdaki gibi olacaktır:
   INSERT INTO Table ([field with space]) Values(value)				
ADO, aşağıdaki kod oluşturur:
   INSERT INTO Table (field with space) Values(value)				
Çözüm
Burada, birkaç olası çözümü vardır:
  • Veritabanınızdaki alan adlarında boşluk kullanmayın.
  • Bir CursorLocation (3) adUseClient olarak kullanın.
  • Bir CursorType adOpenKeyset (1), adOpenDynamic (2) veya (3) adOpenStatic gibi adOpenForwardOnly (0) olarak kullanmayın.
  • Üzerinde AddNew ve Update yöntemleri kullanmak yerine alan adlarını sınırlayıcıları ile kendi INSERT deyimi üreterek işlemini gerçekleştirin.
  • Jet sürüm 3.51 veya 4.0 yerine Microsoft OLE DB sağlayıcısı için Microsoft OLE DB sağlayıcı ODBC ve ODBC Microsoft Access sürücüsü için kullanın.
Durum
Microsoft bunun, bu makalenin başında Microsoft ürünleri listedat bir hata olduğunu onaylamıştır.

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 189220 - Son İnceleme: 12/05/2015 08:55:34 - Düzeltme: 3.0

Microsoft Data Access Components 2.5, Microsoft Data Access Components 2.6, Microsoft Data Access Components 2.7

  • kbnosurvey kbarchive kbbug kbdatabase kbdriver kbjet kbmt KB189220 KbMttr
Geri bildirim