2017-10-13 1 views
-1

Je me suis connecté avec succès à notre SQL Server à partir de VBScript à partir d'un fichier Excel. Je suis en mesure d'exécuter la requête suivante et retourner les résultats attendus, mais maintenant je reçois une erreur:Syntaxe incorrecte près de '.' lors de l'interrogation de SQL Server à partir d'Excel

Incorrect syntax near '.'

La seule chose que j'ai changé ajoutais corde casse, mettant fin à la ligne avec une citation, esperluette , espace, trait d'union pour continuer la requête sur la ligne suivante.

J'ai essayé toutes les recommandations que j'ai pu trouver sur Stack Overflow, par exemple. supprimer et réajouter des espaces blancs, copier/coller dans un bloc-notes pour trouver des caractères spéciaux, en rajoutant tous les '.' et ajouter manuellement CR.

Avez-vous d'autres idées? Dois-je utiliser une syntaxe différente pour rompre ma chaîne de requête?

SELECT 
    IM_BARCOD.BARCOD, IM_PRC.PRC_1, IM_INV.QTY_AVAIL, IM_ITEM.DESCR, 
    IM_INV.LOC_ID, IM_INV.ITEM_NO" & _ 
FROM 
    BCEXP.dbo.IM_BARCOD 
INNER JOIN 
    BCEXP.dbo.IM_INV ON IM_INV.ITEM_NO = IM_BARCOD.ITEM_NO 
INNER JOIN 
    BCEXP.dbo.IM_PRC ON IM_INV.ITEM_NO = IM_PRC.ITEM_NO 
INNER JOIN 
    BCEXP.dbo.IM_ITEM ON IM_INV.ITEM_NO = IM_ITEM.ITEM_NO" & _ 
WHERE 
    (IM_ITEM.TRK_METH = 'N' AND IM_INV.LOC_ID = 'MAIN')" & _ 
    AND(IM_ITEM.ITEM_VEND_NO = 'OSPR' OR IM_ITEM.ITEM_VEND_NO = 'ENZEES' 
     OR IM_ITEM.ITEM_VEND_NO = 'WM') 
+0

vous pouvez éditer votre question pour inclure le code SQL, et le formater correctement – Pac0

+0

C'est une meilleure pratique d'utiliser une procédure de magasin, donc vous n'avez pas à faire face à de longues requêtes dans VB, c'est inconfortable, et c'est plus facile pour trouver des erreurs dans les requêtes avec l'éditeur sql. – espino316

+0

Vous avez probablement besoin de doubler vos guillemets ... – ian0411

Répondre

2

Comme vous l'avez remarqué, il est difficile de corriger SQL lorsque vous utilisez une chaîne comme celle-là. Je suppose que vous utilisez une ancienne version de Visual Studio, donc une option pour rendre le SQL plus lisible est d'utiliser un littéral XML, comme ceci:

Dim sql = <sql> 
SELECT     im_barcod.barcod, 
           im_prc.prc_1, 
           im_inv.qty_avail, 
           im_item.descr, 
           im_inv.loc_id, 
           im_inv.item_nofrom bcexp.dbo.im_barcod 
inner JOIN bcexp.dbo.im_inv 
ON         im_inv.item_no=im_barcod.item_no 
INNER JOIN bcexp.dbo.im_prc 
ON         im_inv.item_no=im_prc.item_no 
INNER JOIN bcexp.dbo.im_item 
ON         im_inv.item_no=im_item.item_nowhere(im_item.trk_meth='N' 
AND        im_inv.loc_id='MAIN') 
AND       ( 
                      im_item.item_vend_no='OSPR' 
           OR         im_item.item_vend_no='ENZEES' 
           OR         im_item.item_vend_no='WM') 
</sql>.Value() 

Le nom de la balise <sql> est pas important. Votre indentation peut varier de celle indiquée - J'ai utilisé un formateur SQL en ligne (Instant SQL Formatter cette fois).

Maintenant, vous pouvez voir que tout va terriblement mal autour

im_inv.item_no=im_item.item_nowhere(im_item.trk_meth='N' 

parce il y a un espace manquant après « No_article ».

+0

Merci pour votre aide. J'ai ajouté des espaces où il était évidemment nécessaire de votre XML ci-dessus et cela a fonctionné! Je serai sûr d'utiliser le formatage SQL dans le futur – Liz