Paano makatakas sa Mga Quote na Sipi para sa SQL na Pahayag na ginamit sa Database sa pamamagitan ng Excel VBA

Ipamahagi ngayon:

SQL Server Gumagamit ng mga pares ng iisang panipi upang matukoy ang simula at katapusan ng isang string. Mabibigo ang paglalagay ng 'Mrs Brown's Boys' sa isang database table dahil ang tatlong iisang panipi ay nagpapahiwatig ng dalawang string, kung saan ang isa ay hindi kumpleto. Kinakailangan ang isang escape character para sa kudlit pagkatapos ng Brown. Sinusuri ng artikulong ito ang paggamit ng isang customized na VBA function upang malutas ang anomalya na ito.

Ipinapalagay ng artikulong ito na ang mambabasa ay ipinapakita ang Developer ribbon at pamilyar sa VBA Editor. Kung hindi, mangyaring Google "Excel Developer Tab" o "Excel Code Window".

Ang terminong "database" dito ay nalalapat sa mga database ng "lakas-industriya" na gusto SQL Server at Orakulo.

Ang isang halimbawa ng workbook na ginamit sa ehersisyo na ito ay maaaring matagpuan dito.

Ang SQL String

Ang pagsasama ng mga kudlit (o mga panipi na nag-iisa) sa loob ng isang pahayag ng SQL ay nagbibigay ng sumusunod na error na ibinalik mula sa database manager (para sa pangalang O'Dowd sa kasong ito):Error na Bumalik Mula Sa Database Manager

Kinakailangan ang isang escape character, dahil ito ay isang dobleng kudlit sa halip na iisa lamang. Kaya, ang O”Dowd ay katanggap-tanggap sa database. Ang O'Dowd ay hindi.

Ang Function

Kung saan ang mga capture field ay maaaring maglaman ng kudlit, maaaring bumuo ng isang custom na function na gagana bago ang pag-update, na papalitan ang iisang sipi ng doble.

  1. Magbukas ng isang bagong workbook;
  1. Pangalanan ang unang sheet na "Update" at kumpletuhin ang mga sumusunod, gamit ang iyong sariling pangalan ng database, atbp. Ang mga patlang na ito ay gagamitin upang makabuo ng isang string ng koneksyon sa SQL Server.Pangalanan Ang Unang Sheet na "Update" At Kumpletong Tulad Ng Ito
  2. Buksan ang code window at maglagay ng module. Gamitin ang mga item sa menu >Mga Tool >Mga Reperensya para sa mga sanggunian ng ADO library.Buksan ang Window Window At Magsingit ng Isang Modyul

Kopyahin ang code sa ibaba sa modyul. Kumokonekta ito sa database.

Public connDB Bilang Bagong ADODB.Connection Public rs Bilang Bagong ADODB.Recordset Public strSQL Bilang String Public strCriteria Bilang String Sub ConnectDatabase () Kung connDB.State = 1 Kung gayon ang connDB.Close On Error GoTo ErrConnect Dim strServer, strDBase, strUser, strPWD As String strServer = Sheets ("Update"). Saklaw ("B2") strDBase = Sheets ("Update"). Saklaw ("B3") strUser = Sheets ("Update"). Saklaw ("B4") strPWD = Sheets (" Update "). Saklaw (" B5 ") Kung strPWD>" "Kung gayon strConnectionstring =" DRIVER = {SQL Server}; Server = "& strServer &"; Database = "& strDBase &"; Uid = "& strUser &"; Pwd = "& strPWD &"; Connection Timeout = 30; "Else strConnectionstring =" DRIVER = {SQL Server}; SERVER = "& strServer &"; Trusted_Connection = yes; DATABASE = "& strDBase 'Windows authentication End Kung connDB.ConnectionTimeout = 30 connDB. Buksan ang strConnectionstring Exit Sub ErrConnect: MsgBox Err.Description End Sub
  1. Idagdag ang pagpapaandar sa modyul:
Tungkulin fRemoveApostrophe(strWord Bilang String) Dim n Bilang Integer Dim x Bilang Integer x = 0 Para sa n = 0 Hanggang 100 x = InStr(x + 2, strWord, "'") 'Hanapin ang posisyon ng mga kudlit Kung x = 0 Pagkatapos ay Lumabas Para sa Kung x > 0 Pagkatapos ay strWord = Kaliwa(strWord, x - 1) & Chr(39) & Chr(39) & Kanan(strWord, Len(strWord) - (x)) Wakas Kung Susunod n fRemoveApostrophe = strWord Wakas na Tungkulin
  1. Huwag pansinin ang pagpapaandar.
Sub IgnoreFunction() Tawagin ang ConnectDatabase strCriteria = Sheets("Update").Range("B10") strSQL = "Ilagay sa tblCrewMember (LastName) ang mga halaga ('" & strCriteria & "')" MsgBox strSQL & ". Mabibigo ang SQL entry na ito; tandaan ang tatlong kudlit." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
  1. Gamitin ang pagpapaandar
Sub UseFunction() Tawagin ang ConnectDatabase strCriteria = Sheets("Update").Range("B15") strCriteria = fRemoveApostrophe(strCriteria) strSQL = "Ilagay sa tblCrewMember (LastName) ang mga halaga ('" & strCriteria & "')" MsgBox strSQL & ". Magtatagumpay ang SQL entry na ito, at lilitaw sa datatable bilang O'Dowd." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
  1. Kumpletuhin ang Mga update worksheet gaya ng sumusunod, simula sa cell A8:Kumpletuhin ang Update Worksheet
  1. Italaga ang mga pindutan sa macros Huwag pansinin ang Pag-andar at UseFunction repective

Ang Resulta

Ipapakita ng isang kahon ng mensahe ang mga resulta; walang database na pisikal na na-update sa pagsasanay na ito ngunit, kung nais mong gawin ito, siguraduhin na ang mga pangalan ng patlang ay katugma sa iyong database, at idagdag ang gamitin ang pahayag ng VBA na conndb.execut (strSQL)

Pag-recover mula sa mga pag-crash ng Excel

Madaling mag-crash ang Excel kapag nauubusan ng resources ang iyong computer. Habang sinusulat ang pagsasanay na ito, nag-freeze ang spreadsheet ng Excel, na hindi pa nase-save. Bahagyang tumutugon ang Code window, kaya't naisara ang workbook sa kabuuan. Lumalabas na normal na nagbubukas ang workbook nang kumpleto ang nilalaman at code. Kung ang mga temporary at source file ay (napakadalas) nasira, kinailangan sanang gawin muli ang trabaho nang walang tool para malutas ito. pinsala sa xlsx. Ito ay may maliit na kahalagahan sa kasong ito, ngunit maaaring maging isang potensyal na sakuna para sa mas malaking mga workbook.

Panimula ng May-akda:

Si Felix Hooker ay isang dalubhasa sa pagbawi ng data sa DataNumen, Inc., na pinuno ng mundo sa mga teknolohiya sa pagbawi ng data, kasama ang ibalik ang rar at mga produkto ng software sa pag-recover ng sql. Para sa karagdagang impormasyon pagbisita www.datanumen. Sa

Ipamahagi ngayon:

Mga komento ay sarado.