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 solong mga quote upang makilala ang start at dulo ng isang string. Ang pagpasok ng 'Mrs Brown's Boys' sa isang database table ay mabibigo dahil ang tatlong solong quote ay nagpapahiwatig ng dalawang mga string, isa na kung saan ay hindi kumpleto. Kinakailangan ang isang character na makatakas para sa apostrophe pagkatapos kay Brown. Sinusuri ng artikulong ito ang paggamit ng isang pasadyang pagpapaandar ng VBA 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 Oracle.

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

Ang SQL String

Pagsasama ng apostrophes (o solong mga quote) 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

Kailangan ng isang character na makatakas, na maging isang dobleng apostrophe sa halip na isang solong isa. Kaya, O ”Dowd ay katanggap-tanggap sa database. O'Dowd ay hindi.

Ang Function

Kung saan maaaring isipin na naglalaman ng isang ap ang mga patlang ng pagkuhaostrophe, isang pasadyang pagpapaandar ay maaaring itayo upang sunugin bago i-update, palitan ang solong quote ng isang 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 window window at maglagay ng isang module. Gamitin ang mga item sa menu> Mga tool> Mga sanggunian upang sanggunian ang ADO librariesBuksan 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:
Pag-andar 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 apostrophes Kung x = 0 Pagkatapos Lumabas Para sa Kung x> 0 Pagkatapos strWord = Kaliwa (strWord, x - 1) & Chr (39) & Chr (39) & Kanan (strWord, Len (strWord) - (x)) Tapusin Kung Susunod n fRemoveApostrophe = strWord End Function
  1. Huwag pansinin ang pagpapaandar.
Sub IgnoreFunction () Tumawag sa ConnectDatabase strCriteria = Sheets ("Update"). Saklaw ("B10") strSQL = "Ipasok sa mga halaga ng tblCrewMember (LastName) ('" & strCriteria & "')" MsgBox strSQL & ". Ang pagpasok ng SQL na ito ay mabibigo; tandaan ang tatlong apostrophes. "Debug.Print strSQL 'connDB.Execut (strSQL) End Sub
  1. Gamitin ang pagpapaandar
Sub UseFunction () Tumawag sa ConnectDatabase strCriteria = Sheets ("Update"). Saklaw ("B15") strCriteria = fRemoveApostrophe (strCriteria) strSQL = "Ipasok sa mga halaga ng tblCrewMember (LastName) ('" & strCriteria & "')" MsgBox strSQL & ". Ang SQL entry na ito ay magtagumpay, at lilitaw sa datatable bilang O'Dowd." Pag-debug. I-print ang strSQL 'connDB. Ipatupad (strSQL) End Sub
  1. Kumpletuhin ang Mga update worksheet tulad ng sumusunod, starting 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 ang iyong computer ay nauubusan ng mga mapagkukunan. Sa pagsulat ng ehersisyo na ito, ang spreadsheet ng Excel, na hindi pa nai-save, nagyelo. Ang window ng Code ay bahagyang tumutugon, pinapayagan ang pagsara ng workbook bilang isang buo. Tulad ng pag-out, ang workbook ay muling binuksan nang normal na kumpleto ang nilalaman at code. Nagkaroon ng temporary at pinagmulan ng mga file ay (lahat ng madalas) nasira, ang gawain ay dapat na muling gawin sa kawalan ng isang tool upang malutas 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 mabawi 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.