SQL Server lai noteiktu s, izmanto atsevišķu pēdiņu pārustart un virknes beigas. Ievietot “Mrs Brown's Boys” datu bāzes tabulā neizdosies, jo trīs vienīgās pēdiņas nozīmē divas virknes, no kurām viena ir nepilnīga. Bēgšanas raksturs ir nepieciešams apostrope pēc Brauna. Šajā rakstā tiek pētīta pielāgotas VBA funkcijas izmantošana šīs anomālijas novēršanai.
Šajā rakstā tiek pieņemts, ka lasītājam ir parādīta izstrādātāja lente un viņš ir iepazinies ar VBA redaktoru. Ja nē, lūdzu, Google “Excel izstrādātāja cilne” vai “Excel koda logs”.
Termins “datu bāze” šeit attiecas uz “rūpnieciski spēcīgām” datu bāzēm, piemēram, SQL Server un Oracle.
Var atrast šajā vingrinājumā izmantotās darbgrāmatas piemēru šeit.
SQL virkne
Ap. Iekļaušanaostrophes (vai atsevišķas pēdiņas) SQL priekšrakstā nodrošina šādu kļūdu, kas atgriezta no datu bāzes pārvaldnieka (šajā gadījumā nosaukumam O'Dowd):
Nepieciešams bēgšanas raksturs, kas ir dubults apostrope, nevis viena. Tādējādi O ”Dowd ir pieņemams datu bāzei. O'Dowd nav.
Funkcija
Kur tveršanas laukos varētu būt apostrophe, pielāgotu funkciju var izveidot, lai aktivizētu pirms atjaunināšanas, aizstājot vienu citātu ar dubultu.
- Atveriet jaunu darbgrāmatu;
- Nosauciet pirmo lapu “Atjaunināt” un aizpildiet šādi, izmantojot savu datu bāzes nosaukumu utt. Šie lauki tiks izmantoti, lai izveidotu savienojuma virkni SQL Server.
- Atveriet koda logu un ievietojiet moduli. Izmantojiet izvēlnes vienumus> Rīki> Atsauces uz atsauci uz ADO librarir.
Kopējiet zemāk esošo kodu modulī. Tas izveido savienojumu ar datu bāzi.
Publiskais connDB kā jauns ADODB.Connection Public rs kā jauns ADODB.Recordset publiskais strSQL kā virkne Public strCriteria kā virkne Sub ConnectDatabase () Ja connDB.State = 1 Tad connDB.Close On kļūda GoTo ErrConnect Dim strServer, strDBase, strUser, strPWD As String strServer = Izklājlapas ("Atjaunināt"). Diapazons ("B2") strDBase = Izklājlapas ("Atjaunināt"). Diapazons ("B3") strUser = Izklājlapas ("Atjaunināt"). Diapazons ("B4") strPWD = Izklājlapas (" Atjaunināt "). Diapazons (" B5 ") Ja strPWD>" "Tad strConnectionstring =" DRIVER = {SQL Server}; Server = "& strServer &"; Database = "& strDBase &"; Uid = "& strUser &"; Pwd = "& strPWD &"; Savienojuma taimauts = 30; "Cits strConnectionstring =" DRIVER = {SQL Server}; SERVER = "& strServer &"; Trusted_Connection = jā; DATABASE = "& strDBase 'Windows autentifikācijas beigas Ja connDB.ConnectionTimeout = 30 connDB.Open strConnectionstring Exit Sub ErrConnect: MsgBox Err.Description End Sub Sub
- Pievienojiet funkciju modulim:
Funkcija fRemoveApostrophe (strWord As String) Dim n As Integer Dim x As Integer x = 0 For n = 0 To 100 x = InStr (x + 2, strWord, "" ") 'Atrast apostrophes Ja x = 0, tad iziet, ja x> 0, tad strWord = Pa kreisi (strWord, x - 1) & Chr (39) & Chr (39) & Pa labi (strWord, Len (strWord) - (x)) Beigt Ja Nākamais n fRemoveApostrophe = strWord beigu funkcija
- Ignorējiet funkciju.
Sub IgnoreFunction () Zvana ConnectDatabase strCriteria = Izklājlapas ("Atjaunināt"). Diapazons ("B10") strSQL = "Ievietot tblCrewMember (Uzvārds) vērtībās ('" & strCriteria & "')" MsgBox strSQL & ". Šis SQL ieraksts tiks neizdoties; ņemiet vērā trīs apost"Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Izmantojiet funkciju
Sub UseFunction () Zvans ConnectDatabase strCriteria = Izklājlapas ("Atjaunināt"). Diapazons ("B15") strCriteria = fRemoveApostrophe (strCriteria) strSQL = "Ievietot tblCrewMember (Uzvārds) vērtībās ('" & strCriteria & "')" MsgBox strSQL & ". Šis SQL ieraksts izdosies un parādīsies datubāzē kā O'Dowd." Atkļūdot. Drukāt strSQL 'connDB. Izpildīt (strSQL) beigu apakšnodaļu
- Pabeigt Atjaunināt darblapa šādi, staršūnā A8:
- Piešķiriet pogas makro Ignorēt funkciju un UseFunction repektīvi
Rezultāti
Ziņojumu lodziņā tiks rādīti rezultāti; Šajā uzdevumā fiziski netiek atjaunināta neviena datu bāze, taču, ja vēlaties to izdarīt, pārliecinieties, vai lauku nosaukumi ir saderīgi ar jūsu datu bāzi, un pievienojiet VBA priekšrakstu conndb.execute (strSQL)
Atgūšanās no programmas Excel avarē
Programmai Excel ir tendence avarēt, kad datorā pietrūkst resursu. Šī uzdevuma rakstīšanas laikā Excel izklājlapa, kas vēl nav saglabāta, sastinga. Koda logs bija daļēji atsaucīgs, ļaujot aizvērt darbgrāmatu kopumā. Kā izrādījās, darbgrāmata atkal tika atvērta normāli, aizpildot saturu un kodu. Bija tempsrary un avota faili (pārāk bieži) ir bojāti, darbs būtu bijis jāpārstrādā, ja nebūtu rīka, kas atrisinātu problēmu xlsx bojājumi. Šajā gadījumā tam bija maza nozīme, taču tā varētu būt potenciāla katastrofa lielākām darbgrāmatām.
Autora ievads:
Fēlikss Hukers ir datu atkopšanas eksperts DataNumen, Inc., kas ir pasaules līderis datu atkopšanas tehnoloģiju, tostarp atgūt rar un SQL atkopšanas programmatūras produkti. Lai iegūtu vairāk informācijas, apmeklējiet vietni www.datanumen. Ar


