Ausgabe von Datum in SQL Query unformatiert

  • Hallo,
    ich benutze für meine Verbindung zu einer Access 2007 Datenbank die _sql.au3, also nicht die mitgelieferte SQLite Bibliothek sondern die von der Community.
    Hier mein Code:

    [autoit]

    $query = "Select * From Artikel a Where a.Zeit Between #4/29/2010# And #4/30/2010#"
    GetTable2D(-1, $query, $aResult, $iColumn, $irow) aus
    _ArrayDisplay($aResult)

    [/autoit]


    Ich bekomme keine Fehlermeldung, jedoch werden die Daten (Plural Datum) ganz unformatiert im 2D Array angezeigt, was dann so aussieht:
    20100429105648
    20100429105647
    20100429105646

    usw.

    Hat jemand eine Idee woran das liegt??
    Danke schonmal

    Einmal editiert, zuletzt von Trolleule (28. Mai 2010 um 16:00)

  • Access kennt keine Transact-SQL Befehle.
    Darf ich eigentlich nur die Befehle benutzen die Access kennt oder gibt es noch eine Instanz zwischen Autoit und meiner Access Datenbank die auch Befehle unterstützt? ?(

    In meiner Tabelle verwende ich den Standard Pseudo Datentyp Datum/Uhrzeit, welcher das nun ist bleibt ein Rätsel, aber in der Tabelle sieht das so aus: 28.05.2010 09:08:00

    Meine Abfrage in Autoit sieht so aus:

    [autoit]

    $query &= $dtpFS[$m][2] & " BETWEEN (Format(" & '"' & $dtpFS[$m][0] & '","DD/MM/YYYY"))' & " AND (Format(" & '"' & $dtpFS[$m][1] & '","DD/MM/YYYY"))'

    [/autoit]

    aufgelöst sieht das so aus:

    SQL
    Select * From Artikel a Where a.Zeit Between (Format("28.05.2010 09:08:00", "DD/MM/YYYY")) AND 
    (Format("29.05.2010 09:08:00", "DD/MM/YYYY"));

    Ausgabe sieht so aus: s. Anhang

    Was kann ich jetzt machen und mit welchen SQL Befehlen kann ich arbeiten?
    Danke!

  • Danke auf die Idee bin ich auch gekommen aber das wäre ein ziemlicher Umweg, der ja eigentlich nicht sein müsste.
    Ich muss dazu noch sagen, die Funktion an der ich schreibe entspricht einem Filter, d.h. ich hab Input Ctrls die ich einlese und daraus eine Query bastel. Als Output verwende ich ein neues GUI mit einem ListView-Objekt.
    Also müsste ich die Daten(Plural) aus $aResult auslesen, konvertieren wie oben beschrieben und dann wieder richtig ins Array übernehmen, übernehmen deshalb weil ich das Ganze in einer Schleife ins ListView schreibe und es einfacher ist mit nur einem Array zu arbeiten.

    Edit: Ich hab testweise die Datenbank in 2003 Format konvertiert, das Format des Datentyps Datum/Uhrzeit geändert was auch nicht geholfen hat, immer die gleiche Ausgabe. Jedoch wenn ich den Datentyp Text verwende funktioniert es und ich bekomme die gleiche Ausgabe wie in Access.

    Gibt es eine Funktion die Access kennt und die im Select Statement, die Daten in einen char Datentyp oder was eben Text bei Access ist speichert?
    Danke

    Einmal editiert, zuletzt von Trolleule (28. Mai 2010 um 11:38)

  • Die Ergebnisse werden über ein COM-Objekt abgerufen. Dieses besitzt einen speziellen Datumstyp, mit dem die Ergebnisse gespeichert werden. AutoIt kennt diesen Typ nicht und verlangt einen String. Daher wird das intern von dem COM-Objekt in einen String umgewandelt und das Ergebnis ist eben dieser String. Du hast keine andere Möglichkeit, als das mit AutoIt umzuwandeln.

    Vielleicht funktioniert auch ein Formatieren so:

    Code
    Select *, Format(a.Zeit, "DD/MM/YYYY") as datum_formatiert From Artikel a ...
  • Danke.
    Aber ich bekomm folgende Fehlermeldung:

    SELECT Format(a.[Zeit Eingang], "DD/MM/YYYY") as Datum FROM Artikel a###############################
    err.description is: [Microsoft][ODBC Microsoft Access Driver] 1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.
    err.windescription:
    err.number is: 80020009
    err.lastdllerror is: 0
    err.scriptline is: 263
    err.source is: Microsoft OLE DB Provider for ODBC Drivers
    err.helpfile is:
    err.helpcontext is: 0###############################

    Edit: So funktioniert es, aber die Ausgabe stimmt nicht, ist der Bug bekannt mit _ArrayDisplay?

    [autoit]

    $query = "SELECT Format(a.[Zeit Eingang]) as Datum FROM Artikel a"
    MsgBox(0, "sdfadas", "Datum 1: " & $aResult[1][0] & " Datum 2: " & $aResult[2][0] & " Datum 3: " & $aResult[3][0])
    _ArrayDisplay($aResult)

    [/autoit]

    Ausgabe: s. Anhang

  • Hier nochmal meine fertige Abfrage:

    SQL
    SELECT a.Artikelnr, a.Artikelbezeichnung, a.Regal, a.Koordinate, a.Seriennummer, a.BNR AS Buchungsnr, a.Mindestbestand, Format(a.[Zeit Eingang]) AS Eingebucht, Format(a.[Zeit Ausgang]) AS Ausgebucht, Format(a.[Zeit Edit]) AS Editiert, a.[User Eingang] AS User_ein, a.[User Ausgang] AS User_aus, a.[User Edit] AS User_mod, a.WA AS Warenausgang FROM Artikel a WHERE a.[Zeit Eingang] >= Format("28.05.2010 15:21:51") AND a.[Zeit Eingang] < Format("28.05.2010 15:21:51")SELECT a.Artikelnr, a.Artikelbezeichnung, a.Regal, a.Koordinate, a.Seriennummer, a.BNR AS Buchungsnr, a.Mindestbestand, Format(a.[Zeit Eingang]) AS Eingebucht, Format(a.[Zeit Ausgang]) AS Ausgebucht, Format(a.[Zeit Edit]) AS Editiert, a.[User Eingang] AS User_ein, a.[User Ausgang] AS User_aus, a.[User Edit] AS User_mod, a.WA AS Warenausgang FROM Artikel a WHERE a.[Zeit Eingang] >= Format("28.04.2010 15:21:51") AND a.[Zeit Eingang] < Format("30.04.2010 15:21:51")

    Der Thread kann als gelöst markiert werden