2017-09-01 1 views
0

Ich habe den Code unten, aber es funktioniert nicht. Es gibt mir den Fehler: Kompilierungsfehler, eine Funktion oder eine Variable wurde erwartet.SQL on VBA: Kompilierungsfehler, eine Funktion oder Variable wurde erwartet

Ich denke, der Fehler auf der Database.Execute Methode ist, aber ich habe nicht mit einer Lösung noch kommen.

Sub ChavesMontante() 

Dim dbschaves As Database 

Dim rschaves As DAO.Recordset 

Dim tipodechave As String 

Dim SQLCMD As String 

Dim chave As String 

Set dbschaves = CurrentDb 

chave = "BED20777" 

SQLCMD = 

"(SELECT us.instalacao, ch.bloco, us.tipounidade " & _ 
"FROM (SELECT useccionadora, bloco " & _ 
"FROM sgdprd.redeprimaria rp " & _ 
"WHERE rp.useccionadora IS NOT NULL " & _ 
"CONNECT BY rp.nox = PRIOR rp.fontex AND rp.noy = PRIOR rp.fontey " & _ 
"START WITH rp.useccionadora = '" & chave & "') ch " & _ 
"INNER JOIN sgdprd.useccionadora us ON ch.useccionadora= us.instalacao) " 

Debug.Print SQLCMD 

Set rschaves = dbschaves.Execute(SQLCMD) 


End Sub 
+0

Es gibt kein Objekt im Excel-VBA-Modell namens 'Database'. – cyboashu

+0

Ich bin auf Zugriff. Tut mir leid, ich hätte das posten sollen. –

+0

Haben Sie versucht, 'SQLCMD = "(SELECT us.instalacao, ch.bloco, us.tipounidade" & _' ...? – yacc

Antwort

0

wird Handlungs SQL-Anweisungen (UPDATE, DELETE, INSERT), nicht gesetzt Cord-Objekt ausführen verwendet.

Versuchen Sie, die folgenden Änderungen:

Dim dbschaves As DAO.Database 
... 
Set rschaves = dbschaves.OpenRecordset(SQLCMD) 

Entfernen Sie auch die äußeren Pars die gesamte SQL-Anweisung umschließt. Ich habe CONNECT BY PRIOR START WITH nie gesehen. Wird die Abfrage in Access geöffnet?

+0

Ich habe das gemacht. Jetzt gibt es mir den Fehler: Syntaxfehler, fehlender Operator, 'rp.seccionadora IST NICHT NULL CONNECT VON rp.nox = vor rp.fontex und rp.noy = vor rp.fontey START. Irgendwelche Ideen? –

+0

Es ist nicht möglich, eine hierarchische Struktur wie CONNECT BY ... PRIOR beim Zugriff zu verwenden, deshalb verwende ich VBA. –

+0

Sie sind lustig ... Auch wenn Sie VBA verwenden, wird die Abfrage weiterhin durch die Access-Abfrage-Engine ausgeführt. @ CaioCésarSilvaGomes – Andre

Verwandte Themen