PassThrough per VBA erstellen: 3131 Syntaxfehler in FROM-Klausel

grünkohl

Benutzer
Beiträge
5
Hallo Experten,

nutze eine bewährte Funktion, die PT-Abfragen auf SQL-Server erstellt.
Habe nun eine neue Tabellenwertfunktion auf dem SQL-Server erstellt, auf die ich über PT zugreifen möchte.
Die Fuktion bringt oben stehende Fehlermeldung.
Verwende ich eine einfache Select-Anweisung, wird die PT erstellt.
Setzte ich das Select-Statement in die so erzeugte PT ein, wird es ausgeführt.
Wo könnte der Fehler liegen?

Vielen Dank im voraus für jeden Tipp
Matze

-------------------------------------------------------------

select Datum,Nr,GP,Artikel,Charge from dbo.ELF_AnhangBeleg ('WEEK','20190319','20190320','HW') order by op desc

-------------------------------------------------------------
Public Function makePT(ByVal sql As String, Optional ptname As String = "P_PT", Optional SQLSVR As String = "Standard", Optional timeout = 90)

On Error GoTo Err

Dim DB As DAO.Database
Dim qdf As QueryDef

start:
Set DB = CurrentDb

On Error Resume Next
DB.QueryDefs.Refresh
DB.QueryDefs.Delete ptname
DB.QueryDefs.Refresh
On Error GoTo Err

Set qdf = DB.CreateQueryDef()
With qdf
.Name = ptname
.connect = getConSQL(True, SQLSVR)
.ODBCTimeout = timeout
.sql = KillTheBlanks(Nz(sql, ""))
End With

DB.QueryDefs.Append qdf


Ende:
Set qdf = Nothing
Set DB = Nothing
Exit Function

Err:
Select Case Err
Case Else
DoCmd.Hourglass False
MsgBox Err.Number & ": " & Err.Description, vbCritical
Resume Ende
End Select


End Function
 
Werbung:
Nunja die SQL Syntax sieht falsch aus. Ich vermute dbo.ELF_AnhangBeleg ('WEEK','20190319','20190320','HW') ist dein Funktionsaufruf und keine Tabelle, daher wäre FROM hier falsch. Es müsste dann einfach nur SELECT dbo.ELF_AnhangBeleg ('WEEK','20190319','20190320','HW') AS spalte heißen.
 
Guten Morgen,
danke für den Hinweis, aber es handelt sich um eine Tabellenwert-Funktion. Für eine Skalar-Funktion wäre das FROM natürlich falsch. Das Statement funktioniert.
Hatte nicht erwähnt, dass die Datenbank "neu" ist.
Es scheint wohl etwas mit den Berechtigungen des Benutzers oder anderer Einstellungen zu tun zu haben. Wenn ich nämlich über eine andere DB auf dem Server auf diese Datenbank zugreife, funktionert ist.
Grüße
Matze
 
Werbung:
Dann muss ich leider passen, kenne mich mit VBA nicht aus. Eigentlich müsste der ja alles direkt gegen die DB ausführen, somit sollte auch ein Funktionaufruf kein Problem sein. Irgendwer ist aber wohl der Meinung die Syntax sei falsch, ein DB Server würde das nicht sagen wenn es an den Rechten läge.
 
Zurück
Oben