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-Key: 627411

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

Printed on: April 23, 2024 at 20:04 o'clock

Mitglied: 146707
Solution 146707 Dec 02, 2020 updated at 14:37:38 (UTC)
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
Member: Florian86
Florian86 Dec 02, 2020, updated at Apr 21, 2022 at 14:42:00 (UTC)
Goto Top
habe es wie folgt gelöst...

screenshot_3