Niet alle ranges gevuld via VBA uit SQL database

Status
Niet open voor verdere reacties.

a13robert

Nieuwe gebruiker
Lid geworden
8 feb 2012
Berichten
2
Hallo,

Ik wil graag uit 2 tabellen in SQL gegevens ophalen, echter het lijkt erop dat slechts een paar gegevens worden overgenomen.
Wie heeft er een idee hoe dit kan? Het lijkt wel of er een maximum aan het aantal gegevens zit dat per regel uit de SQL database wordt gehaald.
Code:
        rc.Open "SELECT dbo.QHSE_Audit_RvA.Nummer, dbo.QHSE_Audit_RvA.Opmerkingen, dbo.QHSE_Audit_RvA.Laatste_audit_nr, dbo.QHSE_Audit_RvA.Laatste_MTV_nr, dbo.QHSE_Audit_RvA.Volgende_audit_periode, dbo.QHSE_Audit_RvA.Kolom, dbo.QHSE_Scope_Nr.Matrix, dbo.QHSE_Scope_Nr.Afdeling, dbo.QHSE_Scope_Nr.Werkvoorschrift, dbo.QHSE_Scope_Nr.Verrichting, dbo.QHSE_Scope_Nr.Conformiteit FROM dbo.QHSE_Audit_RvA INNER JOIN dbo.QHSE_Scope_Nr ON (dbo.QHSE_Audit_RvA.Nummer = dbo.QHSE_Scope_Nr.RvA_Nr OR dbo.QHSE_Audit_RvA.Nummer = dbo.QHSE_Scope_Nr.RvA_Letter) WHERE ((RIGHT(dbo.QHSE_Audit_RvA.Volgende_audit_periode, 1) = '" & kwartaal & "') AND (LEFT (dbo.QHSE_Audit_RvA.Volgende_audit_periode, 4) = '" & jaar2 & "'))", con
   
If rc.BOF = True And rc.EOF = True Then     'als er niks wordt gevonden, ontstaat er een foutmelding, daarom wordt er direct naar het einde verwezen.
    MsgBox "Er zijn geen openstaande audits gevonden in de aangegeven periode"
    Sheets("Audit_Overview").Visible = False
    Exit Sub
End If

mytel = 4
rc.MoveFirst
    Do
        Range("B" & mytel) = rc.Fields("nummer")  'van deze gegevens worden alleen de eerste 3 daadwerkelijk overgenomen uit de sql tabel.
        Range("C" & mytel) = rc.Fields("matrix")
        Range("D" & mytel) = rc.Fields("afdeling")
        Range("E" & mytel) = rc.Fields("verrichting")
        Range("F" & mytel) = rc.Fields("Werkvoorschrift")
        Range("G" & mytel) = rc.Fields("Conformiteit")
        Range("H" & mytel) = rc.Fields("Laatste_audit_nr")
        Range("I" & mytel) = rc.Fields("Laatste_MTV_nr")
        Range("M" & mytel) = rc.Fields("Opmerkingen")
        Range("N" & mytel) = Left(rc.Fields("Volgende_audit_periode"), 4)
        Range("O" & mytel) = Right(rc.Fields("Volgende_audit_periode"), 1)
       
        mytel = mytel + 1
        rc.MoveNext
        
        Loop Until rc.EOF

rc.Close
con.Close
Set rc = Nothing
Set con = Nothing
 
En dat maximum zou dan 4 velden zijn? Lijkt mij niet logisch... Bovendien is dat natuurlijk ook niet zo. Je kunt eens kijken wat dit doet:
Code:
    mytel = 4
    Do While Not rc.EOF
        For i = 0 To rc.Fields.Count - 1
            Cells(i + 2, mytel) = rc.Fields(i)
        Next i
        mytel = mytel + 1
        rc.MoveNext
    Loop

Overigens zou je het jezelf (en ons) een stuk makkelijker maken als je de code makkelijk leesbaar zou posten, bijvoorbeeld zo:
Code:
    rc.Open "SELECT " _
        & "dbo.QHSE_Audit_RvA.Nummer, " _
        & "dbo.QHSE_Audit_RvA.Opmerkingen, " _
        & "dbo.QHSE_Audit_RvA.Laatste_audit_nr, " _
        & "dbo.QHSE_Audit_RvA.Laatste_MTV_nr, " _
        & "dbo.QHSE_Audit_RvA.Volgende_audit_periode, " _
        & "dbo.QHSE_Audit_RvA.Kolom, " _
        & "dbo.QHSE_Scope_Nr.Matrix, " _
        & "dbo.QHSE_Scope_Nr.Afdeling, " _
        & "dbo.QHSE_Scope_Nr.Werkvoorschrift, " _
        & "dbo.QHSE_Scope_Nr.Verrichting, " _
        & "dbo.QHSE_Scope_Nr.Conformiteit " _
        & "FROM dbo.QHSE_Audit_RvA " _
        & "INNER JOIN dbo.QHSE_Scope_Nr ON " _
        & "(dbo.QHSE_Audit_RvA.Nummer = dbo.QHSE_Scope_Nr.RvA_Nr " _
        & "OR dbo.QHSE_Audit_RvA.Nummer = dbo.QHSE_Scope_Nr.RvA_Letter) " _
        & "WHERE ((RIGHT(dbo.QHSE_Audit_RvA.Volgende_audit_periode, 1) = '" & kwartaal & "') " _
        & "AND (LEFT (dbo.QHSE_Audit_RvA.Volgende_audit_periode, 4) = '" & jaar2 & "'))", con
 
Laatst bewerkt:
Helemaal gelijk dat het niet echt goed leesbaar is deze wijze, excuses!

Maar de code die je voorstelt werkt!, dank je wel.
Het was ook inderdaad niet logisch dat slechts een selecte hoeveelheid van de gegevens wordt overgenomen.
Weet ook niet waarom niet, maar kan weer verder.

Nogmaals dank,
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan