Ankündigung

Einklappen
Keine Ankündigung bisher.

Datumsformatkonflikt bei ODBC/SQL Abfrage

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datumsformatkonflikt bei ODBC/SQL Abfrage

    Ich habe ein interessantes Phänomen. In einer Excel Datei löse ich via VBA Code eine SQL Abfrage über ODBC auf einen SQL Server ab. Dies funktioniert bei den meisten Benutzern problemlos. Bei zwei Benutzern jedoch erhalte ich die Fehlermeldung "Laufzeitfehler '1004': Allgemeiner ODBC-Fehler".

    Nach längerem Testen habe ich gemerkt, dass der Fehler durch den Datumsstring ausgelöst wird. Das Datum "2006-01-01" funktioniert überall problemlos. Besagte Benutzer erhalten jedoch die Fehlermeldung, wenn sie das Datum "2006-12-31" eingeben. Wenn hingegen "2006-31-12" (also Tag und Monat vertauscht) mitgegeben wird, funktioniert es bei denen. Dafür beim ganzen Rest vom Team nicht mehr.

    Jetzt meine Frage: Kann mir irgendwer sagen, wo ich eine solche Einstellung vornehmen könnte?? Ich weiss bereits, dass es Computer unabhängig ist, weil die beiden dieses Problem auf allen PC haben. An der Konfiguration der ODBC Schnittstelle kann es ebenfalls nicht liegen, die ist überall gleich. Am Benutzerprofil kann es nicht liegen, weil ich dieses bereits lokal sowie auch serverseitig gelöscht und neu erstellt habe...

    Vielen Dank für eure Hilfe!
    froeschli

    PS. ich werde die nächsten zwei Wochen nicht all zu viele Antworten geben können, da ich in Bulgarien am Schwarzen Meer verweile!
    Gott gebe mir die gelassene Gemühtsruhe,
    die Dinge hinzunehmen, die ich nicht ändern kann,
    den Mut, die Dinge zu ändern, die ich ändern kann,
    und immer die Weisheit, den Unterschied zu erkennen.

  • #2
    Hehe das Phänomen taucht auf wegen der Ländersprache. Sobald man Datum mit String kombiniert, hebt man die Konvertierung des Systems auf, da man ja ein Text übergibt. Und da das System nun mal ein englisch-formatiertes Text erwartet gibts ein Exception.
    Ich würde dir darum dringend empfehlen:
    Datum nie in einem String Variable handzuhaben, sondern benutze das Date Typ. Jede Programmiersprache hat so einen Date Typ und der Kompiler weis wie das Datum zu formatieren ist. Wenn du fragen hast, kannst du mir gerne ein IGM schreiben.
    Ich wäre dir gefolgt mein Bruder, mein Hauptmann, mein König.

    Kommentar


    • #3
      Fragen zu deinem Vorschlag habe ich (noch) keine. Mich wunderts nur, dass es bei allen anderen Benutzern funktioniert nur bei den beiden nicht. Die Computereinstellungen sind überall gleich. Die werden mit einem Image gemacht. Und die Ländersprache kann man soweit ich weiss nur auf Systemebene ändern, nicht jedoch auf Benutzerebene. Weshalb haben die Benutzer dann aber das selbe Problem von meinem PC aus???
      Gott gebe mir die gelassene Gemühtsruhe,
      die Dinge hinzunehmen, die ich nicht ändern kann,
      den Mut, die Dinge zu ändern, die ich ändern kann,
      und immer die Weisheit, den Unterschied zu erkennen.

      Kommentar


      • #4
        Die Systeme sind bei allen Identisch? Windows, Benuterprofile, Office, ODBC Treiber und ODBC Data Source haben alle die gleiche Sprache?
        Ich wäre dir gefolgt mein Bruder, mein Hauptmann, mein König.

        Kommentar


        • #5
          Jep genau. Deshalb frage ich mich, wo ich denn noch einen Unterschied finden könnte....
          Gott gebe mir die gelassene Gemühtsruhe,
          die Dinge hinzunehmen, die ich nicht ändern kann,
          den Mut, die Dinge zu ändern, die ich ändern kann,
          und immer die Weisheit, den Unterschied zu erkennen.

          Kommentar


          • #6
            kenn mich zwar nicht mit VBA aus aber du brauchst eine Funktion die dir das Datum entsprechend Umwandelt.
            Unter standard c++ musst du dir das von Hand basteln. Bei Java gibt die Klasse DateFormat und unter c# müsste sowas hier funktionieren Format(Date, "dd.mm.yyyy"). Wenn du mal danach Suchst findest du vielleicht die entsprechende VBA Funktion, oder du wartest einfach bis dir ein VBA Experte hilft, scotty kennt sich glaube ich damit aus.

            Ps: eine möglichkeit wäre auch hiersowas, der Code sollte mit dem Regexsystem von Python funktionieren, bei VBA musst du wahrscheinlich die Variablendeklaration ändern:
            Code:
             mdy = "\b(?<month>\d{1,2})/(?<day>\d{1,2})/" & _  "(?<year>\d{2,4})\b"
                  return "${day}.${month}.${year}"
            Zuletzt geändert von TheJoker; 18.08.2006, 17:41.
            "Wer Sicherheit der Freiheit vorzieht ist zu Recht ein Sklave"
            (Aristoteles 384 v.Chr. - 322 v.Chr.)

            Kommentar


            • #7
              Kommt dieser DateString in einem SQL-Querry vor oder irgendwo in einer VBA-Funktion?
              Ich wäre dir gefolgt mein Bruder, mein Hauptmann, mein König.

              Kommentar


              • #8
                Das Datum als String in einem Query zu übergeben kann immer wieder mal zu Problemen führen da dann versucht wird automatisch zu erkennen wie der String formatiert ist.

                Ich glaub in VBA bzw. ODBC gibts so ne Art Formatierungsfunktion für Datum und Zeit in Abfragen, gibts eigentlich in jedem SQL Dialekt.

                Format(DeinWert;"ttmmjjjj")

                oder versuch mal statt den - einen . zu machen?
                Even on a black and empty street ... if we go together ... we might one day find something ... like the moon that floats in the darkness [eva 3-18]

                Homepage: StarTrek-Pictures.com | StarTrekArchiv.com

                Kommentar


                • #9
                  @TheJoker
                  Ich habe bereits eine Loesung bei der ich das Datum umwandle. Diese Funktion greift aber nur, wenn einer der beiden Benutzer die ein Problem damit haben sich anmelden. Mich wunderts, warum diese Personen ueberhaupt ein Problem mit dem Datum bekommen, da ihr System sich nicht von den anderen unterscheiden sollte....

                  @terra
                  werd ich bei Gelegenheit mal versuchen. Bin zur Zeit noch im Urlaub. Melde mich wieder wenn ich etwas konkreteres weiss!!
                  Gott gebe mir die gelassene Gemühtsruhe,
                  die Dinge hinzunehmen, die ich nicht ändern kann,
                  den Mut, die Dinge zu ändern, die ich ändern kann,
                  und immer die Weisheit, den Unterschied zu erkennen.

                  Kommentar

                  Lädt...
                  X