2017-09-01 13 views
0

私は以下のコードを持っていますが、動作していません。それは私にエラーを与える:コンパイルエラー、関数または変数が必要です。VBAのSQL:コンパイルエラー、関数または変数が必要でした

エラーはDatabase.Executeメソッドにあると思いますが、まだ解決策がありません。

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

「データベース」という名前のExcelのVBAモデルにはオブジェクトがありません。 – cyboashu

+0

私はアクセスしています。申し訳ありませんが、私はそれを投稿しておくべきです。 –

+0

'SQLCMD ="(SELECT us.instalacao、ch.bloco、us.tipounidade "&_' ...を試しましたか? – yacc

答えて

0

Executeは、アクションSQL文(UPDATE、DELETE、INSERT)に使用され、Recordsetオブジェクトは設定されません。

次のように変更してみてください。SQL文全体を囲む外側の括弧を削除し、また

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

を。私は最初に接続してから見たことがありません。クエリはAccessで開きますか?

+0

私はそれを作った。今、それは私にエラーを与える:Syntax error、missing operator、 'rp.seccionadora IS NOT NULL CONNECT BY rp.nox = prior rp.fontexとrp.noy = prior rp.fontey START。どんな推測? –

+0

アクセス時にCONNECT BY ... PRIORのような階層構造を行うことはできません。なぜなら、私がVBAを使用している理由です。 –

+0

あなたは面白いです... VBAを使用しても、クエリはAccessクエリエンジンを通じて実行されます。 @CaioCésarSilvaGomes – Andre

関連する問題