• 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.

scheidingsteken werkt niet bij csv import via SQL statement

Status
Niet open voor verdere reacties.

BjorntobeWild

Gebruiker
Lid geworden
29 aug 2011
Berichten
120
Goedendag,

Ik probeer via een SQL statement gegevens te importeren vanuit een csv bestand. De waarden in het csv bestand zijn gescheiden door een puntkomma (;). Dit heb ik ook aangegeven in de code.
Maar als ik de code uitvoer, wordt de data in mijn excelblad gescheiden door een komma. Het veld oRS.Fields(1).Value is nl. een decimaal getal.
In de landinstellingen van mijn computer wordt ";" gebruikt als scheidingsteken, dus het lijkt mij dat het daar ook niet aan kan liggen.

Iemand met de (simpele) oplossing??

Code:
Option Explicit
Sub import()
    Dim strFilePath As String, strFilename As String, strFullPath As String
    Dim oConn As Object, oRS As Object, oFSObj As Object
    Dim strConn As String
    Dim strSQL As String
    Dim i As Long
    Dim iRecordCount As Long
    strFullPath = "I:\import.csv"
    
    If strFullPath = "False" Then Exit Sub  'Cancel
    Set oFSObj = CreateObject("SCRIPTING.FILESYSTEMOBJECT")
    strFilePath = oFSObj.GetFile(strFullPath).ParentFolder.Path
    strFilename = oFSObj.GetFile(strFullPath).Name
    Set oConn = CreateObject("ADODB.CONNECTION")
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
               "Data Source=" & strFilePath & ";" & _
               "Extended Properties=""text; HDR=Yes; FMT=Delimited(;)"""
        
    'import in  Excel
    oConn.Open strConn
    
    strSQL = "SELECT * FROM " & strFilename
    
    Set oRS = New ADODB.Recordset
    oRS.Open strSQL, oConn, 3, 1, 1
    'oRS.Open strconn, oConn '3, 1, 1
    iRecordCount = oRS.RecordCount
    
    i = 1
    While Not oRS.EOF
        Cells(i, 1).Value = oRS.Fields(0).Value
        Cells(i, 2).Value = oRS.Fields(1).Value
        i = i + 1
    oRS.MoveNext
    Wend

    oRS.Close
    oConn.Close
End Sub

Groet,

Bjorn
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan