SQL Server s'yi tanımlamak için tek tırnak çiftlerini kullanırtart ve bir dizenin sonu. Bir veritabanı tablosuna 'Bayan Brown's Boys' eklemek başarısız olur, çünkü üç tek tırnak, biri eksik olan iki diziyi ima eder. ap için bir kaçış karakteri gereklidirostBrown'dan sonra halat. Bu makale, bu anormalliği çözmek için özelleştirilmiş bir VBA işlevinin kullanımını incelemektedir.
Bu makalede, okuyucunun Geliştirici şeridinin görüntülendiği ve VBA Düzenleyicisine aşina olduğu varsayılmaktadır. Değilse, lütfen Google "Excel Geliştirici Sekmesi" veya "Excel Kod Penceresi".
Buradaki "veritabanı" terimi, aşağıdakiler gibi "endüstriyel güçlü" veritabanları için geçerlidir: SQL Server ve Oracle.
Bu alıştırmada kullanılan çalışma kitabının bir örneği bulunabilir. okuyun.
SQL Dizisi
ap'nin dahil edilmesiostRophes (veya tek tırnak) bir SQL deyimi, veritabanı yöneticisinden (bu durumda O'Dowd adı için) döndürülen aşağıdaki hatayı sağlar:
Çift ap olduğu için bir kaçış karakteri gereklidirosttek bir halat yerine. Bu nedenle, O”Dowd veri tabanı için kabul edilebilir. O'Dowd değil.
İşlev
Yakalama alanlarının makul bir şekilde bir ap içerebileceği yerlerostrophe, güncellemeden önce tetiklemek için özel bir işlev oluşturulabilir ve tek alıntıyı çift tırnakla değiştirir.
- Yeni bir çalışma kitabı açın;
- İlk sayfayı "Güncelle" olarak adlandırın ve kendi veritabanı adınızı vb. kullanarak aşağıdaki gibi tamamlayın. Bu alanlar, bir bağlantı dizesi oluşturmak için kullanılacaktır. SQL Server.
- Kod penceresini açın ve bir modül ekleyin. ADO lib'e başvurmak için >Araçlar >Referanslar menü öğelerini kullanınrarler.
Aşağıdaki kodu modüle kopyalayın. Bu veri tabanına bağlanır.
Public connDB Yeni ADODB.Connection Olarak Public rs Yeni ADODB.Recordset Olarak Public strSQL String Olarak Public strCriteria As String Sub ConnectDatabase() Eğer connDB.State = 1 ise ConnDB.Close Hata Halinde ErrConnect'e Git Dim strServer, strDBase, strUser, strPWD String Olarak strServer = Sheets("Update").Range("B2") strDBase = Sheets("Update").Range("B3") strUser = Sheets("Update").Range("B4") strPWD = Sheets(" Update").Range("B5") Eğer strPWD > "" ise, strConnectionstring = "DRIVER={SQL Server};Server=" & strServer & ";Database=" & strDBase & ";Uid=" & strUser & ";Pwd=" & strPWD & ";Connection Timeout=30;" Aksi halde strConnectionstring = "DRIVER={SQL Server};SERVER=" & strServer & ";Trusted_Connection=yes;DATABASE=" & strDBase 'Windows kimlik doğrulaması ConnDB.ConnectionTimeout = 30 ise sona erer connDB.Open strConnectionstring Çıkış Sub ErrConnect: MsgBox Err.Description End Sub
- İşlevi modüle ekleyin:
İşlev fKaldırApostrophe(strWord As String) Dim n Tamsayı Olarak Dim x Tamsayı Olarak x = 0 For n = 0 To 100 x = InStr(x + 2, strWord, "'") 'ap'nin konumunu bulostrophes If x = 0 Then Exit For If x > 0 Sonra strWord = Left(strWord, x - 1) & Chr(39) & Chr(39) & Right(strWord, Len(strWord) - (x)) End If Next n fKaldırApostrophe = strWord Bitiş İşlevi
- İşlevi yoksayın.
Alt IgnoreFunction() ConnectDatabase Çağrısı strCriteria = Sheets("Update").Range("B10") strSQL = "tblCrewMember (LastName) değerlerine ('" & strCriteria & "')" MsgBox strSQL & ". başarısız; üç ap'ye dikkat edinostrophes." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- İşlevi kullanın
Alt UseFunction() ConnectDatabase Çağrısı strCriteria = Sheets("Update").Range("B15") strCriteria = fRemoveApostrophe(strCriteria) strSQL = "tblCrewMember (LastName) değerlerine ekle ('" & strCriteria & "')" MsgBox strSQL & ". Bu SQL girişi başarılı olacak ve veri tablosunda O'Dowd olarak görünecek." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Tamamlayın Güncelle çalışma sayfası aşağıdaki gibi, starhücrede ting A8:
- Düğmeleri makrolara atama İşlevi Yoksay ve Fonksiyonu Kullan saygıyla
Sonuçlar
Bir mesaj kutusu sonuçları gösterecektir; bu alıştırmada hiçbir veritabanı fiziksel olarak güncellenmez, ancak bunu yapmak isterseniz, alan adlarının veritabanınızla uyumlu olduğundan emin olun ve conndb.execute(strSQL) VBA deyimini kullanın.
Excel çökmelerinden kurtarma
Bilgisayarınızın kaynakları tükendiğinde Excel çökmeye eğilimlidir. Bu alıştırmanın yazılması sırasında, Excel'in henüz kaydedilmemiş elektronik tablosu dondu. Kod penceresi kısmen yanıt veriyordu ve çalışma kitabının bir bütün olarak kapatılmasına izin veriyordu. Görünüşe göre çalışma kitabı, içerik ve kod tamamlanmış olarak normal şekilde yeniden açıldı. tempo vardırary ve kaynak dosyalar (çok sık) zarar görmüşse, sorunu çözecek bir araç olmasaydı işin yeniden yapılması gerekirdi xlsx hasarı. Bu durumda çok az önemi vardı, ancak daha büyük çalışma kitapları için potansiyel bir felaket olabilir.
Yazar Tanıtımı:
Felix Hooker, veri kurtarma uzmanıdır. DataNumendahil olmak üzere veri kurtarma teknolojilerinde dünya lideri olan , Inc. kurtarmak rar ve sql kurtarma yazılımı ürünleri. Daha fazla bilgi için ziyaret edin www.datanumen.com


