• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Meerdere Joins middels ADO in Excel geeft een foutmelding

Status
Niet open voor verdere reacties.

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.

Foutmelding.jpg

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
 
Er is geen voorbeeldbestand bijgevoegd, dus ik kan het niet testen, maar ik vermoed dat het komt door het ontbreken van haakjes. Voeg eens 2 haakjes toe conform onderstaand voorbeeld en test eens of het dan wél werkt.
Code:
vtSql = vtSql & "[COLOR="#FF0000"]([/COLOR] FROM [Data_Art$] Art"
vtSql = vtSql & " LEFT JOIN [Data_Agrp$] Agrp ON Art.Agrpnr = Agrp.Agrpnr [COLOR="#FF0000"])[/COLOR]"
vtSql = vtSql & " LEFT JOIN [Data_Klr$] Klr ON Art.Vbnnr = Klr.Vbnnr"
 
Bedankt dat was inderdaad de oplossing.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan