SQL Server s-i müəyyən etmək üçün tək dırnaq cütlərindən istifadə edirtart və sətrin sonu. Verilənlər bazası cədvəlinə "Xanım Braunun Oğlanları"nı daxil etmək uğursuz olacaq, çünki üç tək dırnaq iki sətirdən ibarətdir, onlardan biri natamamdır. Tətbiq üçün qaçış simvolu tələb olunurostBraundan sonra rophe. Bu məqalə bu anomaliyanı həll etmək üçün fərdiləşdirilmiş VBA funksiyasının istifadəsini araşdırır.
Bu məqalə oxucunun Tərtibatçı lentinin göstərildiyini və VBA Redaktoru ilə tanış olduğunu güman edir. Əgər belə deyilsə, lütfən Google “Excel Developer Tab” və ya “Excel Code Window”.
Buradakı "məlumat bazası" termini kimi "sənaye gücü" verilənlər bazalarına aiddir SQL Server və Oracle.
Bu məşqdə istifadə olunan iş dəftərinin nümunəsini tapa bilərsiniz burada.
SQL String
ap daxil edilməsiostSQL ifadəsindəki rophes (və ya tək dırnaqlar) verilənlər bazası menecerindən qaytarılan aşağıdakı xətanı təmin edir (bu halda O'Dowd adı üçün):
İkiqat ap olan bir qaçış xarakteri lazımdırosttək bir əvəzinə rophe. Beləliklə, O”Dowd verilənlər bazası üçün məqbuldur. O'Dowd deyil.
Funksiya
Çəkmə sahələri ehtimal olunan bir ap-dan ibarət ola biləcəyi yerlərdəostrophe, tək sitatı ikiqat sitatla əvəz edərək yeniləmədən əvvəl işə salınmaq üçün xüsusi funksiya qurula bilər.
- Yeni bir iş dəftəri açın;
- İlk vərəqi “Yeniləmə” adlandırın və öz verilənlər bazanız adından istifadə edərək aşağıdakı kimi tamamlayın. SQL Server.
- Kod pəncərəsini açın və modulu daxil edin. ADO lib-ə istinad etmək üçün menyu elementlərindən >Alətlər >Referanslardan istifadə edinrarbəli.
Aşağıdakı kodu modula köçürün. Bu verilənlər bazasına qoşulur.
İctimai konnDB Yeni ADODB.Bağlantı kimi İctimai rs Yeni ADODB.Recordset İctimai strSQL Simli İctimai strKriteriyalar kimi Simli Alt ConnectDatabase() Əgər connDB.State = 1 Əgər connDB.State = 2 Onda ConnDB.Close On ErrConnect Dim strServer, strDBase, strWD String, strServer = Vərəqlər("Yeniləmə").Range("B3") strDBase = Vərəqlər("Yeniləmə").Range("B4") strUser = Vərəqlər("Yeniləmə").Range("B5") strPWD = Vərəqlər(" Update").Range("BXNUMX") Əgər strPWD > "" Əgər strConnectionstring = "DRIVER={SQL Server};Server=" & strServer & ";Database=" & strDBase & ";Uid=" & strUser & ";Pwd=" & strPWD & ";Connection Timeout=30;" Əks halda strConnectionstring = "DRIVER={SQL Server};SERVER=" & strServer & ";Trusted_Connection=yes;DATABASE=" & strDBase 'Windows Authentication End If connDB.ConnectionTimeout = 30 connDB.Open strConnectionstring Exit Sub ErrConnect: MsgBox Err.Description End
- Funksiyanı modula əlavə edin:
fRemoveAp funksiyasıostrophe(strWord As String) Dim n As Integer Dim x As Integer x = 0 For n = 0 to 100 x = InStr(x + 2, strWord, "'") 'ap mövqeyini tapınostrophes Əgər x = 0 olarsa, onda çıxın Əgər x > 0 olarsa, onda strWord = Sol(strWord, x - 1) & Chr(39) & Chr(39) & Right(strWord, Len(strWord) - (x)) Növbəti Əgər bitir n fRemoveApostrophe = strWord Son Funksiyası
- Funksiyaya məhəl qoymayın.
Sub IgnoreFunction() Call ConnectDatabase strCriteria = Sheets("Update").Range("B10") strSQL = "Insert into tblCrewMember (LastName) values ('" & strCriteria & "')" MsgBox strSQL & entry ". Bu SQL olacaq. uğursuz; üç ap-a diqqət yetirinostrophes." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Funksiyadan istifadə edin
Sub UseFunction() ConnectDatabase strCriteria = Sheets("Update").Range("B15") strCriteria = fRemoveAp-a zəng edinostrophe(strCriteria) strSQL = "TblCrewMember (Soyad) dəyərlərinə daxil edin ('" & strCriteria & "')" MsgBox strSQL & ". Bu SQL girişi uğurlu olacaq və verilənlər cədvəlində O'Dowd olaraq görünəcək." Debug.Print strSQL 'connDB.Execute (strSQL) Son Alt
- Tam Yeniləmələr aşağıdakı kimi iş vərəqi, starhüceyrədə ting A8:
- Düymələri makrolara təyin edin Ignore Function və İstifadə funksiyası müvafiq olaraq
Nəticələr
Mesaj qutusu nəticələr göstərəcək; Bu məşqdə heç bir verilənlər bazası fiziki olaraq yenilənmir, lakin bunu etmək istəyirsinizsə, sahə adlarının verilənlər bazanızla uyğun olduğundan əmin olun və VBA ifadəsini əlavə edin conndb.execute(strSQL)
Excel qəzalarından bərpa
Kompüterinizin resursları tükəndikdə Excel qəzaya uğramağa meyilli olur. Bu tapşırığın yazılması zamanı Excel-in elektron cədvəli hələ saxlanmamış halda dondu. Kod pəncərəsi bütövlükdə iş kitabının bağlanmasına imkan verən qismən cavabdeh idi. Məlum oldu ki, iş dəftəri məzmun və kod tam olaraq normal şəkildə yenidən açıldı. Tempi var idirary və mənbə faylları (çox tez-tez) zədələnsə, həll etmək üçün alət olmadıqda iş yenidən aparılmalı idi. xlsx zərər. Bu işdə az əhəmiyyət kəsb edirdi, lakin daha böyük iş dəftərləri üçün potensial fəlakət ola bilər.
Müəllif Giriş:
Feliks Hooker məlumatların bərpası üzrə mütəxəssisdir DataNumendaxil olmaqla məlumatların bərpası texnologiyaları üzrə dünya lideri olan , Inc bərpa edin rar və sql bərpa proqram məhsulları. Ətraflı məlumat üçün ziyarət edin www.datanumen.com


