Почему две строки SQL Оператор получает ошибку в VBA - PullRequest
0 голосов
/ 23 января 2020

Когда я пишу две строки SQL запроса в VBA, я получаю сообщение об ошибке. Но когда написал один запрос строки, он работает верно. Пример

Sub Run_Report()
Dim Server_Name As String

Server_Name = "SRV2"

Call Connect_To_SQLServer(Server_Name, "Kn_v3", "SELECT TOP (1000) *  FROM [d].[dbo].[AllBanks]")
End Sub


IT is running but below code is getting error;

Sub Run_Report()
Dim Server_Name As String

Server_Name = "SRRP2"

Call Connect_To_SQLServer(Server_Name, **"Kn_v3", "SELECT TOP (1000) *
FROM [ ].[dbo].[AllBanks]"**)
End Sub

Причина этого вопроса - мой запрос превышает одну строку. Поэтому я должен использовать его на 2 ряду.

1 Ответ

2 голосов
/ 23 января 2020

В синтаксисе VBA важен перевод строки. Каждый оператор заканчивается новой строкой.
Поэтому такой оператор, как

myString = "first line of the string
second line of the string"

, возвратит синтаксическую ошибку, поскольку в первой строке содержится определение строки, в котором отсутствуют закрывающие двойные кавычки.

Таким образом, вы должны убедиться, что вы либо поместили полный оператор в одну строку

myString = "first line of the string second line of the string"

Или вы сделали это в двух утверждениях

myString = "first line of the string" 
myString = MyString & "second line of the string"

Но теперь вы все еще пропускаете новую строку , Вы можете добавить это в микс, как этот

myString = "first line of the string" & vbNewLine &  "second line of the string"

Или в многострочном варианте

myString = "first line of the string" & vbNewLine
myString = MyString  & "second line of the string"

Теперь первый вариант становится трудным для чтения, если имеется много строк, а второй каждый вариант имеет часть myString = MyString &, которая раздражает.

Вы можете избежать всего этого с помощью символа продолжения строки _ (подчеркивание)

Тогда вы получите такой способ определение нескольких строк в вашем коде

myString = "first line of the string" & vbNewLine & _
           "second line of the string" & vbNewLine & _
           "third line of the string" & vbNewLine & _
           "fourth line of the string"

Какой мой любимый вариант

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...