Reputation: 126
I'm trying to learn VBA Script specifically connecting to SQL and pulling a few account details. However, I'm getting a syntax error "Incorrect Syntax near the keyword 'Join'. Could you help me find the syntax error.
strQuery = "" _
& "DECLARE @Perns TABLE(Id INT)" _
& " INSERT INTO @Perns (Id)" _
& " SELECT 4098 " _
& " SELECT ddm.FirstName, ddm.LastName, am.alias AS Alias, ddm.PersonnelNbr AS N'Pern#', nam.parent_OU_DN, gc.PersonGroupDesc AS N'AccManNG Status' " _
& " FROM @Perns AS p" _
& "LEFT OUTER JOIN [Accmanng].[dbo].[directory_data_master] ddm ON p.Id=ddm.PersonnelNbr" _
& "LEFT OUTER JOIN [Accmanng].[dbo].[alias_master] am ON am.alias_id = ddm.alias_id" _
& "LEFT OUTER JOIN [Accmanng].[dbo].[network_account_master] nam ON AM.alias_id = nam.alias_id" _
& "LEFT OUTER JOIN [Accmanng].[dbo].[dim_groupcode] gc ON ddm.PersonGroupCode=gc.PersonGroupCode " _
& "WHERE ddm.PersonnelNbr in ( SELECT Id FROM @perns)"
rst.Open strQuery, ConnectString
Sheets(1).Range("A2").CopyFromRecordset rst
Upvotes: 0
Views: 311
Reputation: 1269933
Print out your code. About 19 times out of 20 that makes the error obvious.
The first few lines of your code are:
DECLARE @Perns TABLE(Id INT)
INSERT INTO @Perns (Id)
SELECT 4098
SELECT ddm.FirstName, ddm.LastName, am.alias AS Alias, ddm.PersonnelNbr AS N'Pern#', nam.parent_OU_DN, gc.PersonGroupDesc AS N'AccManNG Status'
. . .
This is not valid SQL:
SELECT 4098 SELECT ddm.FirstName
Upvotes: 1
Reputation: 5135
You are missing the space before the JOIN clause
strQuery = "" _
& "DECLARE @Perns TABLE(Id INT)" _
& " INSERT INTO @Perns (Id)" _
& " SELECT 4098 " _
& " SELECT ddm.FirstName, ddm.LastName, am.alias AS Alias, ddm.PersonnelNbr AS N'Pern#', nam.parent_OU_DN, gc.PersonGroupDesc AS N'AccManNG Status' " _
& " FROM @Perns AS p" _
& " LEFT OUTER JOIN [Accmanng].[dbo].[directory_data_master] ddm ON p.Id=ddm.PersonnelNbr" _
& " LEFT OUTER JOIN [Accmanng].[dbo].[alias_master] am ON am.alias_id = ddm.alias_id" _
& " LEFT OUTER JOIN [Accmanng].[dbo].[network_account_master] nam ON AM.alias_id = nam.alias_id" _
& " LEFT OUTER JOIN [Accmanng].[dbo].[dim_groupcode] gc ON ddm.PersonGroupCode=gc.PersonGroupCode " _
& " WHERE ddm.PersonnelNbr in ( SELECT Id FROM @perns)"
EDIT: Also Gordon caught some more issues. I'm pretty sure the error you get is because of the space near join.
Upvotes: 3