none
Ausgabe als Datum hinterlegen in Excel über VBA RRS feed

  • Frage

  • Hallo an alle,

    ich hoffe ihr könnt mir weiterhelfen.

    Ich rufe mit einer SQL Abfrage Daten aus dem MS SQL Server ab. Jedoch sind im Ergebnis auch Zeitstempel enthalten. Diese werden in Excel erst als Zahlenkombination angezeigt. Erst nach einer Formatierung in Datum wird der Zeitstempel richtig angezeigt.

    Sub gestern()
        Dim cn As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim r  As Integer
        Set cn = New ADODB.Connection
        cn.ConnectionString = "provider=sqloledb.1;data source=server2008r2;user id=sa;password=password;initial catalog=Testdaten"
        cn.Open
        Set rs = New ADODB.Recordset
        rs.ActiveConnection = cn
        rs.Open "Select top 100 * FROM [TREND009] where CONVERT(varchar(8),Time_Stamp ,112) = convert(varchar(50),dateadd(d, datediff(d, 0, getdate())-1, 0),112) "
        
        
        'For Each rs.EOF In sArray
         '   Cells
        
        
        
        
        Worksheets("Tabelle1").Range("A10:G110").Clear
        
        
        
        
        
        r = 10
        
        
        Do While Not rs.EOF
            Cells(r, 1) = rs.Fields(0)
            Cells(r, 2) = rs.Fields(1)
            Cells(r, 3) = rs.Fields(2)
            Cells(r, 4) = rs.Fields(3)
            Cells(r, 5) = rs.Fields(4)
            Cells(r, 6) = rs.Fields(5)
            Cells(r, 7) = rs.Fields(6)
            Cells(r, 8) = rs.Fields(7)
            Cells(r, 9) = rs.Fields(8)
            rs.MoveNext
            r = r + 1
        Loop
        
        
    End Sub
    
    

    Cells(r, 1) = rs.Fields(0) müsste irgendwie beigebracht bekommen das er ein Datum ist bzw. das die Spalten Datum anzeigt.

    Weiß jemand wie das geht??

    Dienstag, 22. März 2016 22:31

Alle Antworten

  • Am 22.03.2016 schrieb Toot_Braunstein:

    CONVERT(varchar(8),Time_Stamp ,112) = convert(varchar(50),dateadd(d, datediff(d, 0, getdate())-1, 0),112) "

    Stell in der zweiten Zeile doch mal um auf 104.

    Servus
    Winfried


    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/
    HowTos zum WSUS Package Publisher http://www.wsus.de/wpp
    GPO's: http://www.gruppenrichtlinien.de
    NNTP-Bridge für MS-Foren: http://communitybridge.codeplex.com/

    Mittwoch, 23. März 2016 05:52
  • Hallo Winfried erst mal danke für dein Vorschlag. Ich habe es etwas zu kompliziert bzw. nicht vollständig erklärt.

    Das Ergebnis enthält einen Zeitstempel!

    Select Time_Stamp FROM [Trend009]. Der Time_Stamp hat das Format Datetime bei der Übergabe des Resultset´s erkennt Excel diesen aber als normale Zahl. Erst wenn ich händig die Formatierung auf Datum stelle erkennt Excel das als Datum. (Was es ja eigentlich auch ist)

    Kann man das irgendwie vordefinieren das es immer ein Datum ist?

    Mittwoch, 23. März 2016 11:14
  • Am 23.03.2016 schrieb Toot_Braunstein:

    Das Ergebnis enthält einen Zeitstempel!

    Select Time_Stamp FROM [Trend009]. Der Time_Stamp hat das Format Datetime bei der Übergabe des Resultset´s erkennt Excel diesen aber als normale Zahl. Erst wenn ich händig die Formatierung auf Datum stelle erkennt Excel das als Datum. (Was es ja eigentlich auch ist)

    Schon klar, ich vermute das Excel mit dem Datumsformat das Du über den

    CONVERT(varchar(8),Time_Stamp ,112) = convert(varchar(50),dateadd(d, datediff(d, 0, getdate())-1, 0),112) "

    ausgibst, nicht klar kommt. Deshalb der Hinweis die 112 durch die 104
    zu ersetzen.

    Servus
    Winfried


    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/
    HowTos zum WSUS Package Publisher http://www.wsus.de/wpp
    GPO's: http://www.gruppenrichtlinien.de
    NNTP-Bridge für MS-Foren: http://communitybridge.codeplex.com/

    Mittwoch, 23. März 2016 17:31
  • Hallo Winfried,

    nach den Osterfeiertagen hatte ich heute wieder Zeit mich dem Thema zu widmen. Jedoch ohne nennenswerten Erfolg.

    Wenn ich zum Beispiel meinen Zeitstempel zerlege mit :

    Convert(varchar(20),Time_Stamp,104) as TEST2

    CAST(Time_Stamp AS date) AS [Time_Stamp]

    erkennt Excel weder Test2 als Datum noch Time_Stamp als Datum. Für ihn ist es nur eine Zeichenfolge. Kann man das nicht noch verfeinern?

    Außerdem habe ich überhaupt noch keine Möglichkeit gefunden wie man Datum mit Uhrzeit in Excel anzeigen lässt. Gibt es auch hier nicht irgendeine Lösung?

    Donnerstag, 31. März 2016 22:14
  • Am 01.04.2016 schrieb Toot_Braunstein:


    Convert(varchar(20),Time_Stamp,104)asTEST2



    CAST(Time_StampASdate)AS[Time_Stamp]

    erkennt Excel weder Test2 als Datum noch Time_Stamp als Datum. Für ihn ist es nur eine Zeichenfolge. Kann man das nicht noch verfeinern?

    Bring doch bitte exakte Beispieldaten. Auch ist sehr wichtig ein
    CREATE-TABLE Script der vorhandenen Tabelle zu bekommen, evtl. kommt
    man damit weiter.

    Außerdem habe ich überhaupt noch keine Möglichkeit gefunden wie man Datum mit Uhrzeit in Excel anzeigen lässt. Gibt es auch hier nicht irgendeine Lösung?

    Die passenden Formatierungen gibt es IMHO schon, man muss sie nur
    einstellen.

    Servus
    Winfried


    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/
    HowTos zum WSUS Package Publisher http://www.wsus.de/wpp
    GPO's: http://www.gruppenrichtlinien.de
    NNTP-Bridge für MS-Foren: http://communitybridge.codeplex.com/

    Freitag, 1. April 2016 04:49
  • Hallo Winfried,

    das ist eine gute Idee. Anbei ein paar Testdaten damit wir vom gleichen reden.

     select
      CAST('2006-04-25T15:50:59.997' AS datetime) AS datetime,
      CAST('2006-04-25T15:50:59.997' AS time) AS time,
      CONVERT(varchar(20),CAST('2006-04-25T15:50:59.997' AS datetime),104) AS onehundertfour,
      CAST('2006-04-25T15:50:59.997' AS datetime) AS datetime,
      CAST('2006-04-25T15:50:59.997' AS date) AS date,
      convert(varchar(50),'2006-04-25T15:50:59.997',104) as Uhrzeit 

    Wie du im Anhang sehen kannst erkennt Excel stets die Importierten Daten als Zeichenfolge und nicht als Datum oder Uhrzeit.

    Ziel für mich wäre es Datum und Uhrzeit in einer Zelle in Excel darzustellen.  

    Freitag, 1. April 2016 08:32
  • Am 01.04.2016 schrieb Toot_Braunstein:

    das ist eine gute Idee. Anbei ein paar Testdaten damit wir vom gleichen reden.

    Zusätzlich von der Tabelle ein CREATE TABLE Statement. Du mußt ja
    nicht alle Felder aufnehmen, aber das Datumsfeld wäre schon nicht
    schlecht. Excel 2016 ist up2date? Gibt es das Problem auch mit Excel
    2013?

    Servus
    Winfried


    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/
    HowTos zum WSUS Package Publisher http://www.wsus.de/wpp
    GPO's: http://www.gruppenrichtlinien.de
    NNTP-Bridge für MS-Foren: http://communitybridge.codeplex.com/

    Freitag, 1. April 2016 17:45