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):
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.
- Buka buku kerja baru;
- 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.
- Buka jendela kode dan masukkan modul. Gunakan item menu> Alat> Referensi untuk mereferensikan ADO libraryaitu.
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
- 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
- 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
- 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
- Lengkapi survei Memperbarui lembar kerja sebagai berikut, starting di sel A8:
- 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


