SQL Server використовує пари одинарних лапок для ідентифікації start і кінець рядка. Вставити "Місіс Браун хлопчики" в таблицю бази даних не вдасться, оскільки три одинарні лапки передбачають два рядки, один з яких неповний. Для ap потрібен символ втечіostРоф після Брауна. У цій статті розглядається використання спеціальної функції VBA для усунення цієї аномалії.
У цій статті передбачається, що на пристрої для читання відображається стрічка розробника та він знайомий з редактором VBA. Якщо ні, будь ласка, перегляньте Google “Вкладка розробника Excel” або “Вікно коду Excel”.
Термін "база даних" тут застосовується до таких баз даних "промислової потужності", як SQL Server та Oracle.
Можна знайти приклад робочої книги, використаної в цій вправі тут.
Рядок SQL
Включення апostrophes (або одинарні лапки) всередині оператора SQL надає таку помилку, яку повертає менеджер баз даних (у цьому випадку для імені O'Dowd):
Потрібен персонаж втечі, який є подвійним апostrophe замість одного. Таким чином, O ”Dowd є прийнятним для бази даних. О'Дауд - ні.
Функція
Де поля захоплення можуть містити apostrophe, спеціальну функцію можна створити для запуску перед оновленням, замінивши одинарну лапку на подвійну.
- Відкрийте нову книгу;
- Назвіть перший аркуш “Оновлення” та заповніть його, використовуючи власне ім’я бази даних тощо. Ці поля будуть використані для побудови рядка з’єднання з SQL Server.
- Відкрийте вікно коду та вставте модуль. Використовуйте пункти меню> Інструменти> Посилання для посилання на бібліотеку ADOrarе.
Скопіюйте код нижче в модуль. Це підключається до бази даних.
Public connDB As New ADODB.Connection Public rs As New ADODB.Recordset Public strSQL As String Public strCriteria As String Sub ConnectDatabase () If connDB.State = 1 Потім connDB.Close On Error GoTo ErrConnect Dim strServer, strDBase, strUser, strPWD, strPser strServer = Аркуші ("Оновлення"). Діапазон ("B2") strDBase = Аркуші ("Оновлення"). Діапазон ("B3") strUser = Аркуші ("Оновлення"). Діапазон ("B4") strPWD = Аркуші (" Оновлення "). Діапазон (" B5 ") Якщо strPWD>" "Тоді strConnectionstring =" DRIVER = {SQL Server}; Server = "& strServer &"; База даних = "& strDBase &"; Uid = "& strUser &"; Pwd = "& strPWD &"; Час очікування підключення = 30; "Інше strConnectionstring =" DRIVER = {SQL Server}; SERVER = "& strServer &"; Trusted_Connection = так; DATABASE = "& strDBase 'Завершення автентифікації Windows Якщо connDB.ConnectionTimeout = 30 connDB.Open strConnectionstring Вийти з Sub ErrConnect: MsgBox Err.Description End Sub Sub
- Додайте функцію в модуль:
Функція fRemoveApostrophe (strWord As String) Dim n As Integer Dim x As Integer x = 0 For n = 0 To 100 x = InStr (x + 2, strWord, "'")' Find position of apostrophes Якщо x = 0, тоді вийдіть, якщо x> 0, тоді strWord = ліворуч (strWord, x - 1) & Chr (39) & Chr (39) і праворуч (strWord, Len (strWord) - (x)) Кінець, якщо далі n fRemoveApostrophe = strКонцева функція слова
- Ігноруйте функцію.
Sub IgnoreFunction () Виклик ConnectDatabase strCriteria = Таблиці ("Оновлення"). Діапазон ("B10") strSQL = "Вставити в tblCrewMember (LastName) значення ('" & strCriteria & "')" MsgBox strSQL & ". Цей запис у SQL буде не вдається; зверніть увагу на три апostrophes. "Видалити налагодження strSQL 'connDB.Execute (strSQL) End Sub
- Використовуйте функцію
Sub UseFunction () Виклик ConnectDatabase strCriteria = Таблиці ("Оновлення"). Діапазон ("B15") strCriteria = fRemoveApostrophe (strCriteria) strSQL = "Вставити в tblCrewMember (LastName) значення ('" & strCriteria & "')" MsgBox strSQL & ". Цей запис SQL буде успішним і відображатиметься в таблиці даних як O'Dowd." Debug.Print strSQL 'connDB.Execute (strSQL) End Sub
- Завершити Оновити робочий лист наступним чином, сtarтинг у клітині A8:
- Призначте кнопки макросам Ігнорувати функцію та Використовуйте функцію повторно
Результати
У вікні повідомлення відображатимуться результати; жодна база даних фізично не оновлюється в цій вправі, але, якщо ви хочете це зробити, переконайтеся, що імена полів сумісні з вашою базою даних, і додайте використання оператора VBA conndb.execute (strSQL)
Відновлення після аварій Excel
Excel схильний до збою, коли на вашому комп’ютері закінчуються ресурси. Під час написання цієї вправи електронна таблиця Excel, ще не збережена, зависла. Вікно коду реагувало частково, дозволяючи закрити книгу в цілому. Як виявилося, книгу знову відкрили нормально із змістом та кодом. Мав темпrary та вихідні файли були (надто часто) пошкоджені, роботу довелося б переробити за відсутності інструменту для вирішення xlsx пошкодження. Це мало мало значення в цьому випадку, але могло б стати потенційною катастрофою для великих книг.
Вступ автора:
Фелікс Хукер - фахівець з відновлення даних у DataNumen, Inc., яка є світовим лідером у галузі технологій відновлення даних, в тому числі оговтуватися rar та програмні продукти для відновлення sql. Для отримання додаткової інформації відвідайте WWW.datanumen.com


