angelica skrev:
Om man tar bort kommatecknet i början av raden så fungerar det! :-)
Om du ändrade dina radbrytningar så att de inleds (inte avslutas) med SQL:s kodord skulle koden bli lättare att läsa, också för dig själv tror jag:
SQL = "SELECT l.intID, l.strName, l.intMapIndex, l.strText " _
& ", (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID)" _
& ", (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) " _
& " FROM [location] l " _
& "WHERE (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) > 0 " _
& " AND l.bolView = TRUE ORDER BY l.strName"
Då ser du direkt varför den raden inte börjar med kommatecken.
angelica skrev:
SQL = "SELECT l.intID, l.strName, l.intMapIndex, l.strText " _
& ", (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID)" _
& ", (SELECT COUNT(*) as tmpCounter FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) " _
& " FROM [location] l WHERE " _
& " tmpCounter > 0 " _
& " AND l.bolView = TRUE ORDER BY l.strName"
Denna varianten känner jag skulle vara lite snyggare.... men det fungerar inte.
Det beror på att tmpCounter inte finns i din yttersta fråga, bara i subuttrycket. Här har du en kolumn som heter tmpCounter:
SELECT COUNT(*) as tmpCounter FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE
Men i den yttre frågan är denna kolumn namnlös:
(SELECT COUNT(*) as tmpCounter FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) och kan inte refereras till senare.
Testa att skriva:
SQL = "SELECT l.intID, l.strName, l.intMapIndex, l.strText " _
& ", (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID)" _
& ", (SELECT COUNT(*) as tmpCounter FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) as artistCounter" _
& " FROM [location] l " _
& " WHERE artistCounter > 0 " _
& " AND l.bolView = TRUE ORDER BY l.strName"
Om det inte funkar får du mellanlagra uttrycket för artistCounter i en temptabell och joina in den i din fråga. Då om inte förr funkar det.