SQL Server χρησιμοποιεί ζεύγη μεμονωμένων εισαγωγικών για να προσδιορίσει το start και τέλος μιας συμβολοσειράς. Η εισαγωγή του «Mrs Brown's Boys» σε έναν πίνακα βάσης δεδομένων θα αποτύχει καθώς τα τρία μεμονωμένα εισαγωγικά υποδηλώνουν δύο χορδές, μία εκ των οποίων είναι ελλιπής. Απαιτείται χαρακτήρας διαφυγής για το apostrophe μετά τον Μπράουν. Αυτό το άρθρο διερευνά τη χρήση μιας προσαρμοσμένης λειτουργίας VBA για την επίλυση αυτής της ανωμαλίας.
Αυτό το άρθρο προϋποθέτει ότι ο αναγνώστης έχει εμφανιστεί την κορδέλα προγραμματιστή και είναι εξοικειωμένος με τον επεξεργαστή VBA. Εάν όχι, παρακαλώ "Google Tab Developer Excel" ή "Excel Code Window" της Google.
Ο όρος «βάση δεδομένων» εδώ ισχύει για βάσεις δεδομένων «βιομηχανικής ισχύος» όπως SQL Server Oracle.
Μπορείτε να βρείτε ένα παράδειγμα του βιβλίου εργασίας που χρησιμοποιείται σε αυτήν την άσκηση εδώ.
Η συμβολοσειρά SQL
Συμπερίληψη apostrophes (ή μεμονωμένα εισαγωγικά) μέσα σε μια δήλωση SQL παρέχει το ακόλουθο σφάλμα που επιστρέφεται από τον διαχειριστή βάσης δεδομένων (για το όνομα O'Dowd σε αυτήν την περίπτωση):
Απαιτείται ένας χαρακτήρας διαφυγής, που είναι διπλό apostrophe αντί για ένα. Έτσι, το O "Dowd είναι αποδεκτό στη βάση δεδομένων. Το O'Dowd δεν είναι.
Η λειτουργία
Όπου τα πεδία σύλληψης ενδέχεται να περιέχουν apostrophe, μια προσαρμοσμένη λειτουργία μπορεί να δημιουργηθεί για να ενεργοποιηθεί πριν από την ενημέρωση, αντικαθιστώντας το μεμονωμένο απόσπασμα με διπλό.
- Ανοίξτε ένα νέο βιβλίο εργασίας.
- Ονομάστε το πρώτο φύλλο "Ενημέρωση" και συμπληρώστε τα εξής, χρησιμοποιώντας το δικό σας όνομα βάσης δεδομένων κ.λπ. Αυτά τα πεδία θα χρησιμοποιηθούν για τη δημιουργία συμβολοσειράς σύνδεσης για SQL Server.
- Ανοίξτε το παράθυρο κώδικα και εισαγάγετε μια ενότητα. Χρησιμοποιήστε τα στοιχεία μενού> Εργαλεία> Αναφορές για αναφορά ADO librarδηλαδή.
Αντιγράψτε τον παρακάτω κώδικα στη λειτουργική μονάδα. Αυτό συνδέεται με τη βάση δεδομένων.
Δημόσιο connDB ως νέο ADODB.Connection Δημόσιο rs ως νέο ADODB.Recordset Public strSQL As String Public strCriteria As String Sub ConnectDatabase () If connDB.State = 1 Then connDB.Close On Error GoTo ErrConnect Dim strServer, strDBase, strUser, strPWD As String strServer = Sheets ("Update"). Range ("B2") strDBase = Sheets ("Update"). Range ("B3") strUser = Sheets ("Update"). Range ("B4") strPWD = Sheets (" Ενημέρωση "). Εύρος (" B5 ") Εάν strPWD>" "Στη συνέχεια strConnectionstring =" DRIVER = {SQL Server}; Server = "& strServer &"; Database = "& strDBase &"; Uid = "& strUser &"; Pwd = "& strPWD &"; Timeout σύνδεσης = 30; "Else strConnectionstring =" DRIVER = {SQL Server}; SERVER = "& strServer &"; Trusted_Connection = yes; DATABASE = "& strDBase 'Έλεγχος ταυτότητας των Windows Λήξη Εάν connDB.ConnectionTimeout = 30 connDB.Open strConnectionstring Exit Sub ErrConnect: MsgBox Err.Description End Sub Sub
- Προσθέστε τη συνάρτηση στη λειτουργική μονάδα:
Λειτουργία fRemoveApostrophe (strWord As String) Dim n As Integer Dim x As Integer x = 0 Για n = 0 έως 100 x = InStr (x + 2, strWord, "'")' Εύρεση θέσης apostrophes If x = 0 Έπειτα Έξοδος για If x> 0 Τότε strWord = Αριστερά (strWord, x - 1) & Chr (39) & Chr (39) & Right (strWord, Len (strWord) - (x)) Τερματισμός Εάν Επόμενο n fRemoveApostrophe = Λειτουργία End Strord
- Αγνοήστε τη λειτουργία.
Sub IgnoreFunction () Call ConnectDatabase strCriteria = Sheets ("Update"). Range ("B10") strSQL = "Insert to tblCrewMember (LastName) τιμές ('" & strCriteria & "')" MsgBox strSQL & ". Αυτή η καταχώριση SQL θα αποτύχει. σημειώστε τα τρία apostrophes. "Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Χρησιμοποιήστε τη συνάρτηση
Sub UseFunction () Call ConnectDatabase strCriteria = Sheets ("Update"). Range ("B15") strCriteria = fRemoveApostrophe (strCriteria) strSQL = "Εισαγωγή σε τιμές tblCrewMember (LastName) ('" & strCriteria & "')" MsgBox strSQL & ". Αυτή η καταχώρηση SQL θα πετύχει και θα εμφανιστεί στο σύνολο δεδομένων ως O'Dowd." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Συμπληρώστε το Ενημέρωση φύλλο εργασίας ως εξής, starστο κελί A8:
- Εκχωρήστε τα κουμπιά σε μακροεντολές Παράβλεψη λειτουργίας Χρησιμοποιήστε τη λειτουργία αναλογικά
Τα αποτελέσματα
Ένα πλαίσιο μηνύματος θα εμφανίσει τα αποτελέσματα. Καμία βάση δεδομένων δεν έχει ενημερωθεί φυσικά σε αυτήν την άσκηση, αλλά, αν θέλετε να το κάνετε, βεβαιωθείτε ότι τα ονόματα των πεδίων είναι συμβατά με τη βάση δεδομένων σας και προσθέστε τη χρήση της δήλωσης VBA conndb.execute (strSQL)
Ανάκτηση από σφάλματα του Excel
Το Excel είναι επιρρεπές σε συντριβή όταν ο υπολογιστής σας εξαντλείται από πόρους. Κατά τη σύνταξη αυτής της άσκησης, το υπολογιστικό φύλλο του Excel, μέχρι στιγμής, δεν αποθηκεύτηκε, παγώθηκε Το παράθυρο κώδικα ήταν εν μέρει ανταποκρινόμενο, επιτρέποντας το κλείσιμο του βιβλίου εργασίας στο σύνολό του. Όπως αποδείχθηκε, το βιβλίο εργασίας άνοιξε ξανά κανονικά με το περιεχόμενο και τον κώδικα ολοκληρωμένο. Είχα το τέμποrary και τα αρχεία προέλευσης ήταν (πολύ συχνά) κατεστραμμένα, η εργασία θα έπρεπε να επαναληφθεί ελλείψει εργαλείου για επίλυση xlsx ζημιά. Δεν είχε σημασία σε αυτήν την περίπτωση, αλλά θα μπορούσε να είναι μια πιθανή καταστροφή για μεγαλύτερα βιβλία εργασίας.
Εισαγωγή συγγραφέα:
Ο Felix Hooker είναι ειδικός στην ανάκτηση δεδομένων DataNumen, Inc., η οποία είναι ο παγκόσμιος ηγέτης στις τεχνολογίες ανάκτησης δεδομένων, συμπεριλαμβανομένων ανάκτηση rar και sql προϊόντα λογισμικού ανάκτησης. Για περισσότερες πληροφορίες επισκεφθείτε www.datanumen.com


