2017-01-02 5 views
0

Ich habe Code in Access VBA, das ist Abfrage-Vorlage mit SQL ausfüllen und ausführen. Ich muss querydefs. First funktioniert gut, aber mit zweiten, wenn ich SQL-String zuweisen, bekam ich Fehler 3305.Zweite QueryDefs.SQL funktioniert nicht

Beide Tabellen eingefügt sind auf Oracle DB und ich habe Tabellen verknüpft.

Code

Sub prc() 
Dim pSQLStr  As String   
Dim pQuery  As QueryDef 
Dim pBaza  As Database 

Set pBaza = CurrentDb 
Set pQuery = pBaza.QueryDefs("qryInsertTemplate") 

pSQLStr = "" 
pSQLStr = pSQLStr & "INSERT INTO tbl1 (" 
pSQLStr = pSQLStr & "ID, POS)" 
pSQLStr = pSQLStr & "SELECT xlsx.ID, xlsx.pos"  
pSQLStr = pSQLStr & " FROM xlsx;" 

With pQuery 
    .SQL = pSQLStr 
    .ReturnsRecords = False 
    .Execute 
End With 

Set pQuery = pBaza.QueryDefs("qryInsertTemplate") 

pSQLStr = "" 
pSQLStr = pSQLStr & "INSERT INTO tbl2 (" 
pSQLStr = pSQLStr & "ID, POS)" 
pSQLStr = pSQLStr & "SELECT xlsx.ID, xlsx.pos"  
pSQLStr = pSQLStr & " FROM xlsx;" 

With pQuery 
    .SQL = pSQLStr 'here I got error 3305 
    .ReturnsRecords = False 
    .Execute 
End With 

End Sub 
+0

Wenn Sie die Reihenfolge der Abfragen umkehren können, wurde die Excel-Datei möglicherweise nicht ordnungsgemäß geschlossen. Angenommen, die Abfrage zwei funktioniert, wenn sie eigenständig ausgeführt wird. – Gustav

+0

Stand-alone Es läuft – Gadziu

Antwort

1

Try - vor das zweite Mal in Folge - das Objekt zu schließen:

pQuery.Close 
Set pQuery = Nothing 
Set pQuery = pBaza.QueryDefs("qryInsertTemplate") 

oder eine Kopie qryInsertTemplate erstellen und auszuführen, dass das zweite Mal: ​​

Set pQuery = pBaza.QueryDefs("qryInsertTemplateCopy") 
+0

Danke, zweite Lösungen geholfen. – Gadziu

Verwandte Themen