florian86
Goto Top

ADO Abfrage Excel

Hallo Zusammen,

ich frage eine SAP Datenbank mit VBA ab. Es klappt auch alles. Aber der ausgelesene Wert in der 1. Spalte stimmt nicht zu 100%

        

        charge = ActiveCell.Value
        chargeneu = Format(charge, "0000000000")  
        matnr = ActiveCell.Offset(0, -8).Value
        
        selhu = "select cast(VEKP.EXIDV as varchar(20))," & _  
                   "VEPO.VEMNG," & _  
                   "cast(VEKP.ERDAT as Datetime)," & _  
                   "cast(VEKP.ERUHR as time) " & _  
            "from SAPABAP1.VEKP inner join SAPABAP1.VEPO on VEKP.VENUM = VEPO.VENUM " & _  
            "where VEPO.CHARG = " & "'" & chargeneu & "' " & "and VEPO.WERKS = '1000' " & _  
            "order by VEKP.ERDAT, VEKP.ERUHR asc"  
            
        conn.Open "driver={HDBODBC32};Servernode=****;Uid=***;Pwd=*****;"  

        record.Open selhu, conn

        ActiveSheet.Activate

        
        Do While Not record.EOF

        lastrow = ActiveSheet.Cells(Rows.Count, 18).End(xlUp).Row + 1
        
        Sheets(1).Cells(lastrow, 18) = record.Fields.Item(0).Value
        Sheets(1).Cells(lastrow, 19) = record.Fields.Item(1).Value
        Sheets(1).Cells(lastrow, 20) = record.Fields.Item(2).Value
        Sheets(1).Cells(lastrow, 21) = record.Fields.Item(3).Value

        record.MoveNext

        Loop

        record.Close
        conn.Close

Die Spalte "select cast(VEKP.EXIDV as varchar(20))" wird zwar ausgegeben aber leider nie komplett richtig.

Ausgabe Excel
screenshot_1

Ausgabe mit gleichem Code im SQL Editor (hier wird es richtig ausgegeben)
screenshot_2

Es sind immer die letzten 4 Stellen. Ich habe es auch schon ohne Cast probiert.
Hat das jemand schon mal gehabt?

MfG

Florian86

Content-ID: 627411

Url: https://administrator.de/contentid/627411

Ausgedruckt am: 19.11.2024 um 17:11 Uhr

146707
Lösung 146707 02.12.2020 aktualisiert um 15:37:38 Uhr
Goto Top
Das kommt weil deine Zelle von Excel als Zahl formatiert wird und und dieses alles ab 15 Stellen kappt, formatiere die Zelle im Code als "Text" und weise den Inhalt dann zu, dann kommt es richtig rüber.
https://access-excel.tips/excel-maximum-number-of-digits-workaround/

With Sheets(1).Cells(lastrow, 18)
    .Numberformat = "@"  
    .Value = record.Fields.Item(0).Value
End with
Florian86
Florian86 02.12.2020, aktualisiert am 21.04.2022 um 16:42:00 Uhr
Goto Top
habe es wie folgt gelöst...

screenshot_3