Excel VBA orqali ma'lumotlar bazasida ishlatiladigan SQL bayonoti uchun kotirovka qilingan satrlardan qanday qochish mumkin

Hozir ulashing:

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):Ma'lumotlar bazasi menejeridan qaytarilgan xato

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.

  1. Yangi ish kitobini oching;
  1. 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.Birinchi varaqni "Yangilash" deb nomlang va shu tarzda to'ldiring
  2. Kod oynasini oching va modulni joylashtiring. ADO lib ga murojaat qilish uchun menyu bandlaridan >Asboblar >Ma’lumotnomalardan foydalaningrarlar.Kod oynasini oching va modulni joylashtiring

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
  1. 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
  1. 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
  1. 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
  1. Tugallan Yangilash ish varag'i quyidagicha, starhujayradagi tinglash A8:Yangilash ish varag'ini to'ldiring
  1. 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

Hozir ulashing:

Comments are closed.