SQL Server menggunakan pasangan tanda petik tunggal untuk mengenal pasti permulaan dan penghujung rentetan. Memasukkan 'Mrs Brown's Boys' ke dalam jadual pangkalan data akan gagal kerana tiga tanda petik tunggal tersebut membayangkan dua rentetan, salah satunya tidak lengkap. Aksara escape diperlukan untuk apostrof selepas Brown. Artikel ini meneroka penggunaan fungsi VBA tersuai untuk menyelesaikan anomali ini.
Artikel ini menganggap pembaca memaparkan pita Pengembang dan sudah biasa dengan Editor VBA. Sekiranya tidak, sila Google "Tab Pembangun Excel" atau "Tetingkap Kod Excel".
Istilah "pangkalan data" di sini berlaku untuk pangkalan data "kekuatan industri" seperti SQL Server dan Oracle.
Contoh buku kerja yang digunakan dalam latihan ini boleh didapati di sini.
Rentetan SQL
Kemasukan apostrof (atau petikan tunggal) di dalam pernyataan SQL memberikan ralat berikut yang dikembalikan daripada pengurus pangkalan data (untuk nama O'Dowd dalam kes ini):
Aksara escape diperlukan, iaitu apostrof berganda dan bukannya apostrof tunggal. Oleh itu, O”Dowd boleh diterima oleh pangkalan data. O'Dowd tidak.
Fungsinya
Jika medan tangkapan mungkin mengandungi apostrof, fungsi tersuai boleh dibina untuk diaktifkan sebelum kemas kini, menggantikan petikan tunggal dengan petikan berganda.
- Buka buku kerja baru;
- Namakan helaian pertama "Kemas kini" dan lengkapkan seperti berikut, menggunakan nama pangkalan data anda sendiri, dll. Medan ini akan digunakan untuk membina rentetan sambungan ke SQL Server.
- Buka tetingkap kod dan sisipkan modul. Gunakan item menu >Alat >Rujukan untuk merujuk pustaka ADO.
Salin kod di bawah ke dalam modul. Ini menghubungkan ke pangkalan data.
ConnDB awam Sebagai ADODB Baru. Connection Public rs Sebagai ADODB.Recordset Awam strSQL Awam Sebagai String Public strKriteria Sebagai 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"). Julat ("B3") strUser = Sheets ("Update"). Julat ("B4") strPWD = Helaian (" Kemas kini "). Julat (" B5 ") Jika strPWD>" "Kemudian strConnectionstring =" DRIVER = {SQL Server}; Server = "& strServer &"; Database = "& strDBase &"; Uid = "& strUser &"; Pwd = "& strPWD &"; Timeout Connection = 30; "Else strConnectionstring =" DRIVER = {SQL Server}; SERVER = "& strServer &"; Trusted_Connection = yes; DATABASE = "& strDBase 'Pengesahan Windows Tamat Jika connDB.ConnectionTimeout = 30 connDB.Open strConnectionstring Exit Sub ErrConnect: MsgBox Err.Description End Sub Sub
- Tambahkan fungsi ke dalam modul:
Fungsi fRemoveApostrophe(strWord Sebagai Rentetan) Dim n Sebagai Integer Dim x Sebagai Integer x = 0 Untuk n = 0 Hingga 100 x = InStr(x + 2, strWord, "'") 'Cari kedudukan apostrof Jika x = 0 Kemudian Keluar Untuk Jika x > 0 Kemudian strWord = Left(strWord, x - 1) & Chr(39) & Chr(39) & Right(strWord, Len(strWord) - (x)) Tamat Jika Seterusnya n fRemoveApostrophe = strWord Tamat Fungsi
- Abaikan fungsinya.
Sub IgnoreFunction() Panggil ConnectDatabase strCriteria = Sheets("Update").Range("B10") strSQL = "Masukkan ke dalam tblCrewMember (NamaLastName) nilai ('" & strCriteria & "')" MsgBox strSQL & ". Entri SQL ini akan gagal; perhatikan tiga apostrof." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Gunakan fungsinya
Sub UseFunction() Panggil ConnectDatabase strCriteria = Sheets("Kemas Kini").Range("B15") strCriteria = fRemoveApostrophe(strCriteria) strSQL = "Masukkan ke dalam tblCrewMember (NamaLastName) nilai ('" & strCriteria & "')" Kotak Msg strSQL & ". Entri SQL ini akan berjaya dan muncul dalam jadual data sebagai O'Dowd." Debug.Print strSQL 'connDB.Execute (strSQL) Tamat Sub
- Lengkapkan Update lembaran kerja seperti berikut, bermula dari sel A8:
- Tetapkan butang ke makro AbaikanFungsi dan Fungsi Guna secara repektif
Keputusan
Kotak mesej akan menunjukkan hasilnya; tidak ada pangkalan data yang dikemas kini secara fizikal dalam latihan ini tetapi, jika anda ingin melakukannya, pastikan nama medan sesuai dengan pangkalan data anda, dan tambahkan menggunakan pernyataan VBA conndb.execute (strSQL)
Memulihkan dari kerosakan Excel
Excel mudah rosak apabila komputer anda kehabisan sumber. Semasa penulisan latihan ini, hamparan Excel, yang belum disimpan, terhenti. Tetingkap Kod sebahagiannya responsif, membolehkan buku kerja ditutup secara keseluruhan. Ternyata, buku kerja dibuka semula seperti biasa dengan kandungan dan kod selesai. Sekiranya fail sementara dan sumber (terlalu kerap) rosak, kerja tersebut perlu dilakukan semula tanpa alat untuk menyelesaikannya. kerosakan xlsx. Ini tidak begitu penting dalam kes ini, tetapi boleh menjadi bencana yang berpotensi untuk buku kerja lebih besar.
Pengenalan Pengarang:
Felix Hooker adalah pakar pemulihan data di DataNumen, Inc., yang merupakan pemimpin dunia dalam teknologi pemulihan data, termasuk pulihkan rar dan produk perisian pemulihan sql. Untuk maklumat lebih lanjut, lawati www.datanumen.com


