Cara Melarikan Diri dari String yang Dikutip untuk Pernyataan SQL yang digunakan dalam Database melalui Excel VBA

Bagikan sekarang:

SQL Server menggunakan pasangan tanda kutip tunggal untuk mengidentifikasi start dan ujung string. Memasukkan 'Mrs Brown's Boys' ke dalam tabel database akan gagal karena tiga tanda kutip tunggal menyiratkan dua string, salah satunya tidak lengkap. Karakter escape diperlukan untuk apostrophe setelah Brown. Artikel ini membahas penggunaan fungsi VBA yang disesuaikan untuk mengatasi anomali ini.

Artikel ini mengasumsikan bahwa pembaca memiliki pita Pengembang yang ditampilkan dan terbiasa dengan Editor VBA. Jika tidak, harap Google "Tab Pengembang Excel" atau "Jendela Kode Excel".

Istilah "database" di sini berlaku untuk database "kekuatan industri" seperti SQL Server ke Oracle.

Contoh buku kerja yang digunakan dalam latihan ini dapat ditemukan di sini.

String SQL

Pencantuman apostrophes (atau tanda kutip tunggal) di dalam pernyataan SQL memberikan kesalahan berikut yang dikembalikan dari manajer database (untuk nama O'Dowd dalam kasus ini):Kesalahan Dikembalikan Dari Manajer Database

Diperlukan karakter melarikan diri, menjadi ap gandaostrophe bukan satu pun. Jadi, O ”Dowd dapat diterima oleh database. O'Dowd tidak.

Fungsi

Di mana bidang tangkapan mungkin dibayangkan berisi apostrophe, fungsi khusus dapat dibuat untuk diaktifkan sebelum memperbarui, mengganti kutipan tunggal dengan yang ganda.

  1. Buka buku kerja baru;
  1. Beri nama sheet pertama "Update" dan lengkapi sebagai berikut, menggunakan nama database Anda sendiri, dll. Kolom ini akan digunakan untuk membuat string koneksi ke SQL Server.Beri Nama Lembar Pertama "Update" Dan Lengkapi Seperti Ini
  2. Buka jendela kode dan masukkan modul. Gunakan item menu> Alat> Referensi untuk mereferensikan ADO libraryaitu.Buka Jendela Kode Dan Masukkan Modul

Salin kode di bawah ini ke dalam modul. Ini terhubung ke database.

ConnDB Publik Sebagai ADODB Baru.Connection Public rs As New ADODB.Recordset Public strSQL As String Public strCriteria As String Sub ConnectDatabase () Jika connDB.State = 1 Kemudian connDB.Close On Error GoTo ErrConnect Dim strServer, strDBase, strUser, strPWD As String strServer = Sheets ("Update"). Range ("B2") strDBase = Sheets ("Update"). Range ("B3") strUser = Sheets ("Update"). Range ("B4") strPWD = Sheets (" Perbarui "). Range (" B5 ") If strPWD>" "Then strConnectionstring =" DRIVER = {SQL Server}; Server = "& strServer &"; Database = "& strDBase &"; Uid = "& strUser &"; Pwd = "& strPWD &"; Connection Timeout = 30; "Lain strConnectionstring =" DRIVER = {SQL Server}; SERVER = "& strServer &"; Trusted_Connection = yes; DATABASE = "Otentikasi Windows & strDBase 'Berakhir Jika connDB.ConnectionTimeout = 30 connDB. Buka strConnectionstring Keluar Sub ErrConnect: MsgBox Err.Description End Sub
  1. Tambahkan fungsi ke dalam modul:
Fungsi fRemoveApostrophe (strWord As String) Dim n As Integer Dim x As Integer x = 0 For n = 0 To 100 x = InStr (x + 2, strWord, "'")' Temukan posisi apostrophes Jika x = 0 Kemudian Keluar Untuk Jika x> 0 Kemudian strWord = Kiri (strWord, x - 1) & Chr (39) & Chr (39) & Kanan (strWord, Len (strWord) - (x)) End If Next n fRemoveApostrophe = Fungsi End strWord
  1. Abaikan fungsinya.
Sub IgnoreFunction () Panggil ConnectDatabase strCriteria = Sheets ("Update") Range ("B10") strSQL = "Masukkan ke dalam tblCrewMember (LastName) nilai ('" & strCriteria & "')" MsgBox strSQL & ". Entri SQL ini akan gagal; perhatikan tiga apostrophes. "Debug. Cetak strSQL 'connDB.Execute (strSQL) End Sub
  1. Gunakan fungsinya
Sub UseFunction () Panggil ConnectDatabase strCriteria = Sheets ("Update") Range ("B15") strCriteria = fRemoveApostrophe (strCriteria) strSQL = "Sisipkan ke dalam tblCrewMember (NamaBelakang) nilai ('" & strCriteria & "')" MsgBox strSQL & ". Entri SQL ini akan berhasil, dan muncul di datatable sebagai O'Dowd." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
  1. Lengkapi survei Memperbarui lembar kerja sebagai berikut, starting di sel A8:Lengkapi Lembar Kerja Pembaruan
  1. Tetapkan tombol ke makro AbaikanFungsi ke GunakanFungsi secara berturut-turut

Hasil

Sebuah kotak pesan akan menunjukkan hasilnya; tidak ada database yang diperbarui secara fisik dalam latihan ini, tetapi jika Anda ingin melakukannya, pastikan nama bidang kompatibel dengan database Anda, dan tambahkan gunakan pernyataan VBA conndb.execute (strSQL)

Memulihkan dari crash Excel

Excel cenderung macet ketika komputer Anda kehabisan sumber daya. Selama penulisan latihan ini, spreadsheet Excel, yang belum disimpan, membeku. Jendela Kode sebagian responsif, memungkinkan penutupan buku kerja secara keseluruhan. Ternyata, workbook dibuka kembali secara normal dengan konten dan kode lengkap. Punya temporary dan file sumber (terlalu sering) rusak, pekerjaan harus dilakukan ulang jika tidak ada alat untuk menyelesaikannya kerusakan xlsx. Itu tidak terlalu penting dalam kasus ini, tetapi bisa menjadi bencana potensial untuk workbook yang lebih besar.

Pengantar Penulis:

Felix Hooker adalah pakar pemulihan data di DataNumen, Inc., yang merupakan pemimpin dunia dalam teknologi pemulihan data, termasuk memulihkan rar dan produk perangkat lunak pemulihan sql. Untuk informasi lebih lanjut kunjungi www.datanumen.com

Bagikan sekarang:

Komentar ditutup.