BUG: "kesalahan sintaks dalam memasukkan ke..." pada ADO Recordset.Update

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 189220 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

GEJALA

Ketika Anda memanggil metode AddNew, dan kemudian memanggil metode Update Recordset, galat berikut akan dikirim:
Microsoft OLE penyedia DB ODBC driver error '80040e21'
[Microsoft][ODBC Microsoft Access 97 Driver] Kesalahan sintaks di masukkan ke pernyataan.
Menggunakan Microsoft akses ODBC Driver version4.00.4202.00 atau kemudian, pesan kesalahan:
Galat run-time '-2147467259(80004005)':
[Microsoft][ODBC Microsoft Access Driver]Kesalahan sintaks di masukkan ke dalam pernyataan.

PENYEBAB

Galat ini terjadi apabila berikut ini benar:
  • CursorType adalah adOpenForwardOnly (0).
  • CursorLocation adalah adUseServer.
  • Bidang yang sedang diperbarui memiliki ruang dalam nama field.
  • Anda menggunakan pengandar Microsoft akses ODBC.
Memanggil metode AddNew dan Update pada sisi Server, ke depan hanya kursor, adalah operasi yang tidak sah. Objek Data ActiveX (ADO) mengkompensasi kelemahan ini kode dengan menghasilkan pernyataan INSERT untuk melakukan operasi. Ketika ADO menghasilkan pernyataan INSERT, itu tidak membatasi lapangan nama. Oleh karena itu, nama kolom yang berisi ruang menghasilkan kesalahan sintaks.

Sebagai contoh, pernyataan INSERT valid akan menjadi sebagai berikut:
   INSERT INTO Table ([field with space]) Values(value)
				
ADO menghasilkan kode berikut:
   INSERT INTO Table (field with space) Values(value)
				

PEMECAHAN MASALAH

Berikut adalah beberapa kemungkinan resolusi:
  • Jangan menggunakan spasi di nama kolom di database Anda.
  • Menggunakan CursorLocation adUseClient (3).
  • Jangan gunakan seperti CursorType adOpenForwardOnly (0), adOpenKeyset (1), adOpenDynamic (2), atau adOpenStatic (3).
  • Melakukan operasi dengan menghasilkan pernyataan INSERT Anda sendiri, dengan delimiters pada nama kolom, alih-alih menggunakan AddNew dan Update metode.
  • Menggunakan Microsoft OLE DB penyedia untuk Jet versi 3.51 atau 4.0 bukannya Microsoft OLE DB penyedia untuk ODBC dan Microsoft Access ODBC Driver.

STATUS

Microsoft telah mengkonfirmasi ini menjadi sebuah bug dalam produk Microsoft yang tercantum pada awal artikel ini.

Properti

ID Artikel: 189220 - Kajian Terakhir: 19 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
Kata kunci: 
kbbug kbdatabase kbdriver kbjet kbmt KB189220 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:189220

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com