Lorsque j'écris une requête SQL à deux lignes en VBA, j'obtiens une erreur. Mais lors de l'écriture d'une requête de ligne, elle s'exécute sur true. Exemple

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

Raison de cette question, ma requête est plus grande qu'une ligne. Je dois donc l'utiliser sur 2 rangées.

0
Ahmet Kaya 23 janv. 2020 à 11:03

1 réponse

Meilleure réponse

Dans la syntaxe VBA, une nouvelle ligne est significative. Chaque instruction se termine par un saut de ligne.
Par conséquent, une déclaration telle que

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

Renvoie une erreur de syntaxe car la première ligne contient une définition de chaîne sans les guillemets fermants.

Vous devez donc vous assurer que vous mettez la déclaration complète sur une seule ligne

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

Ou tu le fais en deux déclarations

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

Mais maintenant, vous manquez toujours votre nouvelle ligne. Vous pouvez l'ajouter dans le mélange comme ceci

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

Ou dans la variante à plusieurs lignes

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

Maintenant la première variante devient difficile à lire s'il y a beaucoup de ligne, et la deuxième variante a à chaque fois la partie myString = MyString & ce qui est embêtant.

Vous pouvez éviter tout cela avec le caractère de continuation de ligne _ (trait de soulignement)

Ensuite, vous vous retrouvez avec cette façon de définir plusieurs chaînes de ligne dans votre code

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

Quelle est ma variante préférée

2
Geert Bellekens 23 janv. 2020 à 08:25