SQL Server za identifikacijo s uporablja pare enojnih narekovajevtart in konec niza. Vstavitev gospe Brown's Boys v tabelo baze podatkov ne bo uspela, saj trije enojni narekovaji vključujejo dva niza, od katerih je eden nepopoln. Za ap. Je potreben ubežni znakostrophe po Brownu. Ta članek raziskuje uporabo prilagojene funkcije VBA za razrešitev te anomalije.
Ta članek predvideva, da ima bralec prikazan trak za razvijalce in da pozna urejevalnik VBA. V nasprotnem primeru prosimo za Google »Excel Developer Tab« ali »Excel Code Window«.
Izraz "baza podatkov" tukaj velja za baze podatkov "industrijske moči", kot so SQL Server in Oracle.
Najdemo primer delovnega zvezka, uporabljenega pri tej vaji tukaj.
Niz SQL
Vključitev apostrophes (ali enojni narekovaji) znotraj stavka SQL vsebuje naslednjo napako, vrnjeno iz upravitelja zbirke podatkov (v tem primeru za ime O'Dowd):
Potrebujete ubežni znak, ki je dvojni apostrophe namesto enega samega. Tako je O ”Dowd sprejemljiv za bazo podatkov. O'Dowd ni.
Funkcija
Kjer polja zajemanja lahko vsebujejo apostrophe, funkcijo po meri je mogoče zgraditi tako, da se sproži pred posodobitvijo, tako da enojni narekovaj nadomesti z dvojnim.
- Odprite nov delovni zvezek;
- Poimenujte prvi list »Posodobi« in izpolnite, kot sledi, z lastnim imenom baze podatkov itd. Ta polja bodo uporabljena za gradnjo niza povezave z SQL Server.
- Odprite okno s kodo in vstavite modul. Uporabite elemente menija> Orodja> Reference za sklicevanje na ADO librartj.
Kopirajte spodnjo kodo v modul. Ta se poveže z bazo podatkov.
Javni connDB kot nov ADODB.Connection Javni rs kot nov ADODB.Recordset Javni strSQL kot niz Javni strCriteriji kot niz Sub ConnectDatabase () Če je connDB.State = 1 Nato connDB.Close On Error Pojdi na ErrConnect Dim strServer, strDBase, strUser, strPWD, strPserD strD strServer = Sheets ("Update"). Range ("B2") strDBase = Sheets ("Update"). Range ("B3") strUser = Sheets ("Update"). Range ("B4") strPWD = Sheets (" Posodobi "). Obseg (" B5 ") Če strPWD>" "Potem strConnectionstring =" DRIVER = {SQL Server}; Server = "& strServer &"; Database = "& strDBase &"; Uid = "& strUser &"; Pwd = "& strPWD &"; Časovna omejitev povezave = 30; "Drugače strConnectionstring =" DRIVER = {SQL Server}; SERVER = "& strServer &"; Trusted_Connection = yes; DATABASE = "& strDBase 'Preverjanje pristnosti sistema Windows End if connDB.ConnectionTimeout = 30 connDB.Open strConnectionstring Exit Sub ErrConnect: MsgBox Err.Description End Sub Sub
- Dodajte funkcijo v modul:
Funkcija fRemoveApostrophe (strWord Kot niz) Dim n kot celo število Dim x kot celo število x = 0 Za n = 0 do 100 x = InStr (x + 2, strWord, "'")' Poišči položaj apostrophes Če je x = 0 Potem izstopite Če je x> 0, potem strWord = levo (strWord, x - 1) & Chr (39) & Chr (39) in desno (strWord, Len (strWord) - (x)) Konec, če je naslednji n fOdstrani apostrophe = strWon funkcija konca
- Prezri funkcijo.
Sub IgnoreFunction () Pokliči ConnectDatabase strCriteria = Sheets ("Update"). Range ("B10") strSQL = "Vstavi v vrednosti tblCrewMember (LastName) ('" & strCriteria & "')" MsgBox strSQL & ". Ta vnos v SQL bo ne uspe; upoštevajte tri apostrophes. "Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Uporabite funkcijo
Sub UseFunction () Pokliči ConnectDatabase strCriteria = Sheets ("Update"). Range ("B15") strCriteria = fRemoveApostrophe (strCriteria) strSQL = "Vstavi v tblCrewMember (LastName) vrednosti ('" & strCriteria & "')" MsgBox strSQL & ". Ta vnos SQL bo uspel in bo v podatkovni tabeli prikazan kot O'Dowd." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Dokončati Nadgradnja naslednji delovni list, starting v celici A8:
- Gumbe dodelite makrom IgnoreFunction in Uporabi funkcijo ponavljajoče se
Rezultati
V oknu za sporočilo bodo prikazani rezultati; v tej vaji se fizično ne posodobi nobena baza podatkov, če pa želite, pazite, da so imena polj združljiva z vašo bazo podatkov in dodajte uporabo stavka VBA conndb.execute (strSQL)
Okrevanje po zrušitvah Excela
Excel je nagnjen k zrušitvi, ko v računalniku zmanjkuje virov. Med pisanjem te vaje je Excelova preglednica, ki še ni bila shranjena, zamrznila. Okno kode je bilo delno odzivno, kar je omogočilo zaprtje delovnega zvezka kot celote. Kot se je izkazalo, se je delovni zvezek znova odprl z vsebino in kodo. Imel je temporarČe so bile izvorne datoteke (prepogosto) poškodovane, bi bilo treba delo obnoviti, če ne bi bilo orodja za razrešitev xlsx škoda. V tem primeru ni imel velikega pomena, vendar bi lahko predstavljal potencialno katastrofo za večje delovne zvezke.
Uvod avtorja:
Felix Hooker je strokovnjak za obnovitev podatkov v DataNumen, Inc., ki je vodilna na svetu na področju tehnologij za obnovitev podatkov, vključno z opomore rar in sql programske izdelke za obnovitev. Za več informacij obiščite www.datanumen.com



