Announcement

Collapse
No announcement yet.

In OleDbCommand ein Datum als String in Date konvertieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • In OleDbCommand ein Datum als String in Date konvertieren

    Hallo,

    ich möchte über ein OleDbCommand mit einer SQL-Anweisung eine Tabelle einer AccessDB abfragen.
    Die Tabelle enthält eine Spalte Namens Verfalldatum (Datentyp: OleDbType.WChar).
    Datumskonformität (dd.mm.yyyy) ist gegeben, da dies beim Eintragen geprüft wird.

    Die Abfrage soll mir alle Datensätze liefern, die älter sind als das aktuelle Systemdatum.

    Also etwa wie im fiktiven Beispiel, das natürlich so nicht funktioniert.

    [highlight=vbnet]Dim cmd As New OleDb.OleDbCommand
    cmd.CommandText = "SELECT Spalte1, Spalte2, Spalte3," & _
    "Verfalldatum FROM ThisTable WHERE Verfalldatum < Today"[/highlight]
    ich habe zum Thema gegoogelt und auch hier im Forum was gefunden, aber ich steh echt
    auf'm Schlauch und kann's bei mir trotz unzähliger Versuche einfach nicht umsetzen.
    Wobei es nur um diese Select-Anweisung geht. Der Zugriff auf die DB und andere Abfragen
    funktionieren tadellos.

    Es muß doch eine Möglichkeit geben direkt in der Select-Anweisung eine Konvertierung
    von String nach Date hinzubekommen.

    gruß John
    Zuletzt editiert von John68; 08.04.2011, 08:59. Reason: Rechtschreibung + Formulierung

  • #2
    Hi,

    wie wäre es mit CONVERT(DATETIME, Verfalldatum) < TODAY?

    Dave

    Comment


    • #3
      Funktioniert leider nicht.
      Exception: Undefinierte Funktion 'CONVERT' in Ausdruck.

      John

      Comment


      • #4
        Komisch, CONVERT oder CAST sollten schon funktionieren, wenn über SQL zugegriffen wird.
        Hast Du es einmal mit ZDate probiert? Ich habe den Link nur überflogen und weiß jetzt nicht genau, ob das im "SQL" oder im VBA verwendet werden kann.

        Jetzt habe ich auch noch was gefunden mit TO_DATE(DatumsString, FormatString), geht das?
        Und zu guter letzt hilft vielleicht dieser Link.

        Ansonsten ... wüßte ich auch nicht weiter ...

        Dave

        Comment


        • #5
          Trotz unzähliger Seiten die ich schon durchforstet habe, kenne ich diese Links noch nicht.
          Ich werde mir das sofort mal ansehen.

          Vielen Dank!

          John
          Zuletzt editiert von John68; 08.04.2011, 17:36. Reason: RS

          Comment


          • #6
            Hi Dave,

            leider haben mir die Links auch nicht weitergeholfen.
            Ich bin echt am verzweilfeln.

            Trotzdem nochmal Danke.

            John

            P.S.: Auch to_Date funktioniert nicht.
            Zuletzt editiert von John68; 08.04.2011, 17:33.

            Comment


            • #7
              Nachdem mein Nervenkostüm mittlerweile ziemlich lädiert war und ich mir die Zähne
              ausgebissen hatte, bin ich das Problem ganz neu angegangen.

              Hätte ich nur gleich zu Beginn hierauf gehört > Post #2 die ersten beiden Sätze.
              Jetzige Lösung:
              1. In der DB-Tabelle eine neue Spalte (Typ: Datetime Format: dd.mm.yyyy) hinzugefügt.
              2. Alte Datumseinträge rüberkopiert. Datenverlust = Null.
              3. OleDbCommand.text wie folgt angepasst.

              [highlight=vbnet]Dim cmd As New OleDb.OleDbCommand
              cmd.CommandText = "SELECT Spalte1, Spalte2, Spalte3, " & _
              "newVerfalldatum FROM ThisTable WHERE newVerfalldatum < Now"[/highlight]
              Ergebnis: Funktioniert wie gewünscht. Aufwand ca. 8 Minuten.

              Aber, es bleibt eine Frage offen. Warum scheut man oft den einfachen Weg???

              Eigentlich ist die Lösung für mich so akzeptabel, aber wenn noch jemand Hinweise zu
              mir unbekannten Stolpersteinen in diesem Lösungsweg hat, wäre ich dankbar.

              John
              Zuletzt editiert von John68; 11.04.2011, 09:51. Reason: RS

              Comment


              • #8
                Aus meiner Sicht gibt es auch keinen Grund, Datumswerte in Textfeldern zu speichern, es sei denn, man weiß es nicht besser. Auch das Sortieren macht nicht wirklich Spaß, wenn das Datum als Text vorliegt. Und wenn Du in der Tabelle das Feld hast ersetzen können, somit auch nichts doppelt speichern musst, ist das sicher die beste Lösung.

                Comment


                • #9
                  Das mit dem Sortieren ist natürlich eindeutig ein weiteres Plus.
                  Da habe ich also das nächste Problem gleich auch noch eingespart.

                  John
                  Zuletzt editiert von John68; 11.04.2011, 12:27. Reason: RS

                  Comment

                  Working...
                  X