SQL Server s ni aniqlash uchun juft qo‘shtirnoqlardan foydalanaditart va satrning oxiri. "Mrs Braun's Boys" ni ma'lumotlar bazasi jadvaliga kiritish muvaffaqiyatsiz bo'ladi, chunki uchta bitta tirnoq ikkita qatorni bildiradi, ulardan biri to'liq emas. Ilova uchun qochish belgisi talab qilinadiostBraundan keyin rophe. Ushbu maqola ushbu anomaliyani hal qilish uchun moslashtirilgan VBA funktsiyasidan foydalanishni o'rganadi.
Ushbu maqolada o'quvchi dasturchi tasmasi ko'rsatilgan va VBA muharriri bilan tanish deb taxmin qilinadi. Agar yo'q bo'lsa, Google "Excel Developer Tab" yoki "Excel Code Window".
Bu erda "ma'lumotlar bazasi" atamasi "sanoat kuchli" ma'lumotlar bazalariga tegishli SQL Server va Oracle.
Ushbu mashqda foydalanilgan ish kitobining namunasini topish mumkin Bu yerga.
SQL String
Apni kiritishostSQL bayonotidagi rophes (yoki bitta tirnoq) ma'lumotlar bazasi menejeridan qaytarilgan quyidagi xatoni beradi (bu holda O'Dowd nomi uchun):
Qochish belgisi kerak, u qoʻsh ap boʻladiostbitta o'rniga rophe. Shunday qilib, O"Dowd ma'lumotlar bazasi uchun maqbuldir. O'Dowd emas.
Funktsiya
Qaerda qo'lga olish maydonlari, ehtimol, ilovani o'z ichiga olishi mumkinostrophe, yangilanishdan oldin ishga tushirish uchun maxsus funktsiyani qurish mumkin, bu bitta tirnoqni ikki barobarga almashtiradi.
- Yangi ish kitobini oching;
- Birinchi varaqni “Yangilash” deb nomlang va oʻz maʼlumotlar bazasi nomidan foydalanib, quyidagi tarzda toʻldiring. Bu maydonlar ulanish qatorini yaratish uchun ishlatiladi. SQL Server.
- Kod oynasini oching va modulni joylashtiring. ADO lib ga murojaat qilish uchun menyu bandlaridan >Asboblar >Ma’lumotnomalardan foydalaningrarlar.
Quyidagi kodni modulga nusxalang. Bu ma'lumotlar bazasiga ulanadi.
Public connDB Yangi ADODB.Connection Public rs As New ADODB.Recordset Public strSQL as String Public strcriteria as String Sub ConnectDatabase() Agar connDB.State = 1 bo‘lsa, keyin connDB.Close Xatoga o‘tish ErrConnect Dim strServer, strDBase, strWD String, strServer = Sheets("Update").Range("B2") strDBase = Sheets("Update").Range("B3") strUser = Sheets("Update").Range("B4") strPWD = Sheets(" Update").Range("B5") Agar strPWD > "" bo'lsa, strConnectionstring = "DRIVER={SQL Server};Server=" & strServer & ";Ma'lumotlar bazasi=" & strDBase & ";Uid=" & strUser & ";Pwd=" & strPWD & ";Ulanish vaqti=30;" Aks holda strConnectionstring = "DRIVER={SQL Server};SERVER=" & strServer & ";Trusted_Connection=yes;DATABASE=" & strDBase 'Windows autentifikatsiyasi tugaydi, agar connDB.ConnectionTimeout = 30 bo'lsa connDB.Open strConnectionstring Exit Sub ErrConnect: MsgBox Err. Subscription End
- Funktsiyani modulga qo'shing:
fRemoveAp funktsiyasiostrophe(strWord As String) Dim n As Integer Dim x As Integer x = 0 n = 0 uchun 100 x = InStr(x + 2, strWord, "'") 'Ap o'rnini topingostrophes Agar x = 0 bo'lsa, undan chiqing Agar x > 0 bo'lsa, keyin strWord = Chap(strWord, x - 1) & Chr(39) & Chr(39) & O'ng(strWord, Len(strWord) - (x)) Keyingi bo'lsa tugatish n fRemoveApostrophe = strWord End Function
- Funktsiyaga e'tibor bermang.
Sub IgnoreFunction() ConnectDatabase strCriteria = Sheets("Update").Range("B10") strSQL = "Insert into tblCrewMember (LastName) qiymatlari ('" & strCriteria & "')" MsgBox strSQL & en ". muvaffaqiyatsiz; uchta ilovaga e'tibor beringostrophes." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Funktsiyadan foydalaning
Sub UseFunction() ConnectDatabase-ga qo'ng'iroq qiling strCriteria = Sheets("Update").Range("B15") strCriteria = fRemoveApostrophe(strCriteria) strSQL = "TblCrewMember (Familiya) qiymatlari ('" & strCriteria & "')" MsgBox strSQL & "ga kiriting. Bu SQL yozuvi muvaffaqiyatli bo'ladi va ma'lumotlar jadvalida O'Dowd sifatida ko'rinadi." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Tugallan Yangilash ish varag'i quyidagicha, starhujayradagi tinglash A8:
- Tugmalarni makroslarga belgilang IgnoreFunction va Foydalanish funktsiyasi mos ravishda
Natijalar
Xabar oynasi natijalarni ko'rsatadi; Ushbu mashqda hech qanday ma'lumotlar bazasi jismonan yangilanmaydi, lekin agar xohlasangiz, maydon nomlari ma'lumotlar bazasiga mos kelishiga ishonch hosil qiling va VBA bayonotini qo'shing conndb.execute(strSQL)
Excel xatosidan tiklash
Kompyuteringizning resurslari tugab qolganda Excel ishdan chiqishiga moyil bo'ladi. Ushbu mashqni yozish paytida Excel elektron jadvali hali saqlanmagan holda qotib qoldi. Kod oynasi qisman javob berdi, bu ish kitobini butunlay yopish imkonini berdi. Ma'lum bo'lishicha, ish kitobi mazmuni va to'liq kod bilan odatdagidek qayta ochildi. Temp bor edirary va manba fayllari (juda tez-tez) shikastlangan bo'lsa, hal qilish uchun vosita yo'q bo'lganda ishni qayta bajarish kerak edi. xlsx zarar. Bu holda bu unchalik ahamiyatga ega emas edi, lekin kattaroq ish kitoblari uchun potentsial falokat bo'lishi mumkin edi.
Muallif kirish:
Feliks Xuker ma'lumotlarni qayta tiklash bo'yicha mutaxassis DataNumenMa'lumotlarni qayta tiklash texnologiyalari bo'yicha jahon yetakchisi bo'lgan , Inc tiklash rar va sql-ni tiklash dasturiy mahsulotlar. Qo'shimcha ma'lumot olish uchun tashrif buyuring www.datanumen.com


