SQL Server օգտագործում է միայնակ չակերտների զույգեր՝ տողի սկիզբն ու վերջը նշելու համար: «Տիկին Բրաունի տղաները» տվյալների բազայի աղյուսակում տեղադրելը կձախողվի, քանի որ երեք միայնակ չակերտները ենթադրում են երկու տող, որոնցից մեկը թերի է: Բրաունից հետո ապոստրոֆի համար անհրաժեշտ է escape նիշ։ Այս հոդվածը ուսումնասիրում է այս անոմալիան լուծելու համար հարմարեցված VBA ֆունկցիայի օգտագործումը։
Այս հոդվածը ենթադրում է, որ ընթերցողը ցուցադրում է erրագրավորողի ժապավենը և ծանոթ է VBA խմբագրին: Եթե ոչ, խնդրում ենք Google- ի «Excel Developer Tab» կամ «Excel Code Window»:
«Տվյալների շտեմարան» տերմինը վերաբերում է նման «արդյունաբերական ուժի» շտեմարաններին SQL Server և Oracle-ը։
Այս վարժությունում օգտագործված աշխատանքային գրքի օրինակ կարելի է գտնել այստեղ.
SQL տողը
SQL հայտարարության մեջ ապոստրոֆների (կամ չակերտների) ներառումը տվյալների բազայի կառավարիչից (այս դեպքում՝ O'Dowd անվան համար) վերադարձնում է հետևյալ սխալը.
Անհրաժեշտ է escape նիշ, որը կլինի կրկնակի ապոստրոֆ, այլ ոչ թե մեկ։ Այսպիսով, O'Dowd-ը ընդունելի է տվյալների բազայի համար։ O'Dowd-ը՝ ոչ։
Գործառույթը
Այն դեպքերում, երբ գրանցման դաշտերը կարող են պարունակել ապոստրոֆ, կարելի է ստեղծել հատուկ ֆունկցիա, որը կգործարկվի թարմացումից առաջ՝ միակ չակերտը փոխարինելով կրկնակի չակերտով։
- Բացել նոր աշխատանքային գրքույկ;
- Առաջին թերթը անվանեք «Թարմացնել» և լրացնել հետևյալ կերպ ՝ օգտագործելով ձեր սեփական տվյալների շտեմարանի անունը և այլն: Այս դաշտերը կօգտագործվեն կապի տող կառուցելու համար SQL Server.
- Բացեք կոդի պատուհանը և տեղադրեք մոդուլը: Օգտագործեք >Գործիքներ >Հղումներ ընտրացանկի տարրերը՝ ADO գրադարաններին հղում անելու համար:
Պատճենեք ներքևի կոդը մոդուլի մեջ: Սա միանում է տվյալների բազային:
Public connDB As New ADODB.Connection Public rs As New ADODB.Recordset Public strSQL As String Public strCriteria As String Sub ConnectDatabase () Եթե connDB.State = 1 Ապա connDB. Փակել սխալը GoTo ErrConnect Dim strServer, strDBase, strUser, strPWD As strServer = Աղյուսակներ («Թարմացնել»). Շարք («B2») strDBase = Թերթեր («Թարմացնել»): Լայնություն («B3») strUser = Թերթեր («Թարմացնել»): Շարք ("B4") strPWD = Թերթեր (" Թարմացնել "). Շարքը (" B5 ") Եթե strPWD>" "" Ապա strConnectionstring = "DRIVER = {SQL Server}; Server = "& strServer &"; Database = "& strDBase &"; Uid = "& strUser &"; Pwd = "& strPWD &"; Միացման ժամկետը = 30; "Այլ strConnectionstring =" DRIVER = {SQL Server}; SERVER = "& strServer &"; Trusted_Connection = այո; DATABASE = "& strDBase 'Windows- ի վավերացումը Վերջ Եթե connDB.ConnectionTimeout = 30 connDB.Open strConnectionstring Ելք Ենթաբաժնի ErrConnect: MsgBox Err.Description End Sub
- Ավելացրեք գործառույթը մոդուլի մեջ.
Ֆունկցիա fRemoveApostrophe(strWord As String) Dim n As Integer Dim x As Integer x = 0 n = 0-ի համար մինչև 100 x = InStr(x + 2, strWord, "'") 'Գտեք ապոստրոֆների դիրքը Եթե x = 0 Ապա Ելք Եթե x > 0 Ապա strWord = Left(strWord, x - 1) & Chr(39) & Chr(39) & Right(strWord, Len(strWord) - (x)) End If Next n fRemoveApostrophe = strWord End Ֆունկցիա
- Անտեսել գործառույթը:
Sub IgnoreFunction() Call ConnectDatabase strCriteria = Sheets("Update").Range("B10") strSQL = "Insert into tblCrewMember (LastName) values ('" & strCriteria & "')" MsgBox strSQL & ". Այս SQL գրառումը կձախողվի. ուշադրություն դարձրեք երեք ապոստրոֆներին:" Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Օգտագործեք գործառույթը
Sub UseFunction() Call ConnectDatabase strCriteria = Sheets("Update").Range("B15") strCriteria = fRemoveApostrophe(strCriteria) strSQL = "Insert into tblCrewMember (LastName) values ('" & strCriteria & "')" MsgBox strSQL & ". Այս SQL գրառումը կհաջողվի և կհայտնվի տվյալների աղյուսակում որպես O'Dowd." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Ավարտելու Թարմացումներ աշխատանքային թերթիկը հետևյալն է՝ սկսած բջիջից A8:
- Կոճակները վերագրեք մակրոների Անտեսել գործառույթը և Օգտագործման գործառույթ համապատասխանաբար
Արդյունքները
Հաղորդագրության տուփը ցույց կտա արդյունքները. Այս վարժությունում ոչ մի շտեմարան ֆիզիկապես թարմացված չէ, բայց, եթե ցանկանում եք դա անել, համոզվեք, որ դաշտի անունները համատեղելի են ձեր տվյալների բազայի հետ և ավելացրեք օգտագործեք VBA հայտարարությունը conndb.execute (strSQL)
Excel- ի վթարներից վերականգնում
Excel-ը հակված է խափանվելու, երբ ձեր համակարգչի ռեսուրսները սպառվում են։ Այս վարժությունը գրելու ընթացքում Excel-ի դեռևս չպահպանված աղյուսակը կախվեց։ «Կոդ» պատուհանը մասամբ արձագանքող էր, ինչը թույլ տվեց փակել աշխատանքային գիրքն ամբողջությամբ։ Պարզվեց, որ աշխատանքային գիրքը վերաբացվել է սովորականի պես՝ բովանդակությամբ և կոդով։ Եթե ժամանակավոր և սկզբնական ֆայլերը (շատ հաճախ) վնասվեին, աշխատանքը պետք է վերագործարկվեր՝ խնդիրը լուծելու գործիքի բացակայության դեպքում։ xlsx վնաս, Այս դեպքում դա քիչ նշանակություն ուներ, բայց կարող էր պոտենցիալ աղետ լինել ավելի մեծ աշխատանքային գրքերի համար:
Հեղինակի ներածություն.
Ֆելիքս Հուքերը տվյալների վերականգման փորձագետ է DataNumen, Inc., որը տվյալների վերականգման տեխնոլոգիաների համաշխարհային առաջատարն է, այդ թվում վերականգնել rar-ը և sql վերականգնման ծրագրային արտադրանքները: Լրացուցիչ տեղեկությունների համար այցելեք www.datanumen.com


