Hallo,
ich habe etwas vba in Excel eingebettet und führe Selects auf eine SQL Server 2005 Datenbank aus.
Dies funktioniert sehr gut.
Nun habe ich eine rekursive Abfrage benötigt und bin im Internet auf die Lösung gestoßen.
Der Select sieht so aus:
WITH StructReports ( STRUKTURELEMENT_ID, VATER_STRUKTURELEMENT_ID, NAME , Level, path)
AS
(
-- Anchor member definition
SELECT
STRUKTURELEMENT_ID,
VATER_STRUKTURELEMENT_ID,
NAME ,
0 AS Level,
se.NAME as path
FROM dbo.Strukturelement as se
WHERE VATER_STRUKTURELEMENT_ID is null
UNION ALL
-- Recursive member definition
SELECT
se.STRUKTURELEMENT_ID,
se.VATER_STRUKTURELEMENT_ID,
se.NAME ,
Level +1,
sv.path + @trenner + se.Name as path
FROM dbo.Strukturelement as se
inner join StructReports as sv
on se.VATER_STRUKTURELEMENT_ID = sv.STRUKTURELEMENT_ID
)
Select * from StructReports r
order by path
Im Sql Management Studio liefert die Abfrage auch ein Ergebnis.
Nur in VBA erhalte ich die Fehlermeldung "Falsche Syntax in der Nähe des 'WITH'-Schlüsselwortes."
Ich lege das Statement in die Variable sSelect und führe diesen Befehl aus:
rs.Open sSelect, hSql, adOpenForwardOnly, adLockReadOnly
Muss ich bei der Verwendung von WITH etwas anders machen?:confused: