Excel ADODB BETWEEN Dates funktioniert nicht?

  • Excel

    Excel ADODB BETWEEN Dates funktioniert nicht?

    Gelöst, unten org. Post.

    Ursache: Spalte enthielt stellenweise inkonsistene Datumswerte bzw. nicht Datumswerte.
    Lösung:
    - Falsche Werte Löschen
    - Datumsformat nochmal auf Spalte anwenden
    - Spalte auswählen -> Daten -> Text in Spalte -> Alle Trennwerte abwählen -> Ausführen
    - Fertig, jetzt ist das Datumsformat auf alle bestehenden und neuen Werte übertragen und die BETWEEN Funktion geht.

    Spoiler anzeigen
    Hallo Leute,

    ich möchte per ADODB Werte aus einer Excel Tabelle holen, wo die Datumsspalte ein Datum enthält welches innerhalb eines Quartals liegt.
    Die Daten welche im ausgewählten Quartal liegen werden errechnet, der Nutzer muss also nur ein Quartal auswählen.

    Hier die berechnung, für die die es interessiert:
    Spoiler anzeigen

    Visual Basic-Quellcode

    1. Public Function floor(ByVal val As Double, ByVal precision As Integer) As Variant
    2. floor = Application.WorksheetFunction.Floor_Math(val, precision)
    3. End Function
    4. Public Function getStart(ByVal sDate As String) As Date
    5. If Not IsDate(sDate) Then Exit Function
    6. On Error Resume Next
    7. Dim retVal As Variant
    8. retVal = DateSerial( _
    9. year(CDate(sDate)), _
    10. floor(Month(sDate) - 1, 3) + 1, _
    11. 1 _
    12. )
    13. getStart = retVal
    14. End Function
    15. Public Function getEnd(ByVal sDate As String) As Date
    16. If Not IsDate(sDate) Then Exit Function
    17. On Error Resume Next
    18. Dim retVal As Variant
    19. retVal = DateSerial( _
    20. year(CDate(sDate)), (( _
    21. CInt((Month(CDate(sDate)) - 1) / 3) + 1) * 3) + 1, _
    22. 1 _
    23. ) - 1
    24. getEnd = retVal
    25. End Function



    Der SELECT gibt ALLE Daten wieder zurück.

    Visual Basic-Quellcode

    1. "SELECT [ID] FROM [Table$] WHERE [Client]='" & search & "' AND [DateField1] BETWEEN #" & dt1 & "# AND #" & dt2 & "#;"


    Hier nochmal als nicht Code:

    SQL-Abfrage

    1. SELECT [ID] FROM [Table$] WHERE [Client]='Name' AND [DateField1] BETWEEN #01/01/2018# AND #31/03/2018#;


    Ich habe bereits verschiedene Datums Formate ausprobiert wie mm/dd/yyyy, aber nichts davon hatte einen Effekt.
    Die Datumsspalte ist in Excel als Datum Formatiert (TT.MM.JJJJ)

    Kann mir jemand sagen, warum er alle Daten holt und nicht nur die im angegebenen Zeitraum?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Petersilie“ ()