Если вы взглянули на строку, которую вы создали, используя Debug.Print sqlstr
в коде или ?sqlstr
из командного окна, вы увидите
TRANSFORM Count([Deal Data ECM].[Disclosed Fees (Y/N)]) AS [CountOfDisclosed Fees (Y/N)]SELECT [Deal Data ECM].[Deal Type]FROM [Deal Data ECM]WHERE ((([Deal Data ECM].[Disclosed Fees (Y/N)]) = 'Y'))GROUP BY [Deal Data ECM].[Deal Type]PIVOT [Deal Data ECM].[Deal Region];
Тогда вы можете заметить, что между одним предложением нет пробелови следующее.
добавление возвратов там, где есть пробелы, немного усложняет просмотр
TRANSFORM Count([Deal Data ECM].[Disclosed Fees (Y/N)])
AS [CountOfDisclosed Fees (Y/N)]SELECT
[Deal Data ECM].[Deal Type]FROM
[Deal Data ECM]WHERE
((([Deal Data ECM].[Disclosed Fees (Y/N)]) = 'Y'))GROUP
BY [Deal Data ECM].[Deal Type]PIVOT
[Deal Data ECM].[Deal Region];
Попробуйте добавить пробел перед каждым окончанием "
sqlstr = "TRANSFORM Count([Deal Data ECM].[Disclosed Fees (Y/N)]) AS [CountOfDisclosed Fees (Y/N)] " & _
"SELECT [Deal Data ECM].[Deal Type] " & _
"FROM [Deal Data ECM] " & _
"WHERE ((([Deal Data ECM].[Disclosed Fees (Y/N)]) = 'Y')) " & _
"GROUP BY [Deal Data ECM].[Deal Type] " & _
"PIVOT [Deal Data ECM].[Deal Region]; "
Однако, поскольку вы хотите создать таблицу, вам нужно добавить цель.Добавляя предложение INTO
между select и from
sqlstr = "TRANSFORM Count([Deal Data ECM].[Disclosed Fees (Y/N)]) AS [CountOfDisclosed Fees (Y/N)] " & _
"SELECT [Deal Data ECM].[Deal Type] " & _
"INTO YourNewTable " & _
"FROM [Deal Data ECM] " & _
"WHERE ((([Deal Data ECM].[Disclosed Fees (Y/N)]) = 'Y')) " & _
"GROUP BY [Deal Data ECM].[Deal Type] " & _
"PIVOT [Deal Data ECM].[Deal Region]; "
Примечание: Каждый раз, когда вы выполняете это, вы удаляете старую таблицу.Также обратите внимание, что вы должны использовать DoCmd.RunSQL