Excel VBA aracılığıyla Veritabanında kullanılan SQL Deyimi için Alıntılanmış Dizelerden Nasıl Kurtulunur?

Şimdi paylaş:

SQL Server Bir dizenin başlangıcını ve sonunu belirtmek için tek tırnak çiftleri kullanılır. 'Mrs Brown's Boys' ifadesini bir veritabanı tablosuna eklemek başarısız olur çünkü üç tek tırnak iki dizeyi ifade eder ve bunlardan biri eksiktir. Brown'dan sonra gelen kesme işareti için bir kaçış karakteri gereklidir. Bu makale, bu anormalliği gidermek için özelleştirilmiş bir VBA fonksiyonunun 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

SQL sorgusunda kesme işaretlerinin (veya tek tırnak işaretlerinin) kullanılması, veritabanı yöneticisinden (bu durumda O'Dowd adı için) aşağıdaki hatanın döndürülmesine neden olur:Veritabanı Yöneticisinden Dönen Hata

Tek tırnak işareti yerine çift tırnak işareti kullanılarak bir kaçış karakterine ihtiyaç duyulmaktadır. Bu nedenle, O”Dowd veritabanı tarafından kabul edilebilir. O'Dowd ise kabul edilemez.

İşlev

Yakalama alanlarında kesme işareti bulunma olasılığı varsa, güncellemeden önce çalışacak ve tek tırnağı çift tırnakla değiştirecek özel bir fonksiyon oluşturulabilir.

  1. Yeni bir çalışma kitabı açın;
  1. İ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.İlk Sayfayı "Güncelleme" Olarak Adlandırın ve Bu Şekilde Tamamlayın
  2. Kod penceresini açın ve bir modül ekleyin. ADO kütüphanelerine referans vermek için >Araçlar >Referanslar menü öğelerini kullanın.Kod Penceresini Açın ve Bir Modül Ekleyin

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
  1. İşlevi modüle ekleyin:
Fonksiyon fRemoveApostrophe(strWord As String) Dim n As Integer Dim x As Integer x = 0 For n = 0 To 100 x = InStr(x + 2, strWord, "'") 'Kesme işaretlerinin konumunu bul If x = 0 Then Exit For If x > 0 Then strWord = Left(strWord, x - 1) & Chr(39) & Chr(39) & Right(strWord, Len(strWord) - (x)) End If Next n fRemoveApostrophe = strWord End Function
  1. İşlevi yoksayın.
Sub IgnoreFunction() Call ConnectDatabase strCriteria = Sheets("Update").Range("B10") strSQL = "Insert into tblCrewMember (LastName) values ​​('" & strCriteria & "')" MsgBox strSQL & ". Bu SQL girişi başarısız olacak; üç tırnak işaretine dikkat edin." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
  1. İşlevi kullanın
Sub UseFunction() Call ConnectDatabase strCriteria = Sheets("Update").Range("B15") strCriteria = fRemoveApostrophe(strCriteria) strSQL = "Insert into tblCrewMember (LastName) values ​​('" & strCriteria & "')" MsgBox strSQL & ". Bu SQL girişi başarılı olacak ve veri tablosunda O'Dowd olarak görünecektir." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
  1. Tamamlayın Güncelle Çalışma sayfası aşağıdaki gibidir, hücreden başlayarak. A8:Güncelleme Çalışma Sayfasını Tamamlayın
  1. Düğmeleri makrolara atama İşlevi Yoksay hem de 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ımı sırasında, henüz kaydedilmemiş olan Excel elektronik tablosu dondu. Kod penceresi kısmen yanıt veriyordu ve bu da çalışma kitabının tamamen kapatılmasına olanak sağladı. Sonuç olarak, çalışma kitabı içeriği ve koduyla birlikte normal şekilde yeniden açıldı. Geçici ve kaynak dosyaları (çok sık olduğu gibi) hasar görmüş olsaydı, bir çözüm aracı olmadığı için çalışma yeniden yapılmak zorunda kalacaktı. 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. rar dosyasını kurtar ve sql kurtarma yazılımı ürünleri. Daha fazla bilgi için ziyaret edin www.datanumen.com

Şimdi paylaş:

Yoruma kapalı.