AatB
Gebruiker
- Lid geworden
- 15 dec 2007
- Berichten
- 253
Goedendag,
Ik heb een query met gebruik van ADO gemaakt, welke uitgevoerd wordt op tabellen in een excelsheet.
Het resultaat van de query wordt in dezelfde excelsheet op een ander tabblad aangemaakt.
De query heeft 2 joins.
Als ik de joins apart draai, dan gaat het goed.
Als ik ze beide toevoeg, dan krijg ik een foutmelding.
Weten jullie wat ik niet goed doe?
Ik hoor het graag.
mvg,
Aat
Ik heb een query met gebruik van ADO gemaakt, welke uitgevoerd wordt op tabellen in een excelsheet.
Het resultaat van de query wordt in dezelfde excelsheet op een ander tabblad aangemaakt.
De query heeft 2 joins.
Als ik de joins apart draai, dan gaat het goed.
Als ik ze beide toevoeg, dan krijg ik een foutmelding.
Weten jullie wat ik niet goed doe?
Ik hoor het graag.
mvg,
Aat
Code:
Sub test()
SetWs 'Set alle sheets
Set ws = Worksheets("Test")
ws.Cells.Delete
'' Open the connection
Set cnn = New ADODB.Connection
cnn.ConnectionTimeout = ctConnectionTimeOut
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";"
'' Set the command text.
Set cmdCommand = New ADODB.Command
Set cmdCommand.ActiveConnection = cnn
vtSql = ""
vtSql = vtSql & " SELECT"
vtSql = vtSql & " Art.Prodgrpnr,"
vtSql = vtSql & " Agrp.Agrpnr,"
vtSql = vtSql & " Agrp.AgrpOms,"
vtSql = vtSql & " Art.Vbnnr,"
vtSql = vtSql & " Art.ArtOms,"
vtSql = vtSql & " Klr.Klr,"
vtSql = vtSql & " Art.HandelOms"
vtSql = vtSql & " FROM [Data_Art$] Art"
vtSql = vtSql & " LEFT JOIN [Data_Agrp$] Agrp ON Art.Agrpnr = Agrp.Agrpnr"
vtSql = vtSql & " LEFT JOIN [Data_Klr$] Klr ON Art.Vbnnr = Klr.Vbnnr"
With cmdCommand
.CommandText = vtSql
.CommandType = adCmdText
.Execute
End With
'' Open the recordset.
Set rstRecordset = New ADODB.Recordset
Set rstRecordset.ActiveConnection = cnn
rstRecordset.Open cmdCommand
Set targetcell = ws.Range("A1")
'' Put fields in targetrow-1
For col = 0 To rstRecordset.Fields.Count - 1
targetcell.Offset(0, col).Value = rstRecordset.Fields(col).Name
Next
Select Case Not rstRecordset.EOF
Case True
putdata = targetcell.Offset(1, 0).CopyFromRecordset(rstRecordset)
End Select
ws.Columns.AutoFit
'' Close the connection
cnn.Close
Set cnn = Nothing
Set cmdCommand = Nothing
Set rstRecordset = Nothing
End Sub