Jump to content

SQL 2000 Fehler - Konvertierung von Datentyp


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

ich habe hier einen SQL 2000 auf nem W2003 Server laufen.

Wenn ich mich nun mit der zugehoerigen Clientsoftware am

SQL anmelde dann bekomme ich folgende Rückmeldung :

 

SQL Error State:37000, Native Errorc Code: 8114, ODBC Error:

[Microsoft]ODBC SQL Server Driver]

 Fehler beim 

Konvertieren von Datentyp varchar in datetime.

 

Wenn ich die wegklicke bekomm ich >>

The following query failed:(currmode) sp_insert_currmode

1,`2004-11-20 00 :00:00`,",2.....

 

Hat jemand eine Ahnung was das zu bedeuten hat ??

Link zu diesem Kommentar

-----ich habe hier einen SQL 2000 auf nem W2003 Server laufen.

Wenn ich mich nun mit der zugehoerigen Clientsoftware am

SQL anmelde dann bekomme ich folgende Rückmeldung ----

 

Hallo!

Also durch meine bescheidenen Kenntnisse vermute ich mal folgendes:

 

Du meinst mit Clientsoftware eine Applikation, die Ihrerseits eine Verbindungsanforderung an den Server sendet...?

 

Wenn ja gehts hier weiter:

 

Ich vermute stark, dass du eine SP in die zu öffnende DB gestellt hast, die durch die Clientsoftware aufgerufen wird. Ja? OK dann überprüfe bitte mal das Datumsformat, das du an den Server (die Datendbank) sendest! Ich glaube da ist der Hund begraben!

Ich vermute weiter stark, dass du beim Aufruf einen neuen Datensatz erzeugst und diesen durch eben diese SP in die DB schreiben lassen willst....(Vermutung durch den Namen der Prozedur in der Fehlermeldung) Überprüfe in dem Fall bitte die Schreibweise des Datums, das du im INSERT - Statement übergibst.

 

So könntest du zB versuchen das Datum in eine Variable zu fassen, die ihrerseits dann das US (mm/dd/yy) oder ISO (yyyy-mm-dd) Format des Datums enthält und diese Variable in den SQL-String einbauen.

 

strDatum = Format(DeinDatumsfeld, "\#yyyy\-mm\-dd\#")

 

die obige Schreibweise betrifft VBA (ich weiß ja leider nicht welche Clientsoftware du verwendest)

 

Wenn ich mit meinen vorherigen Vermutungen richtig liege, dann versuche das Statement der SP mit dem QueryAnalyzer auszuführen... gib dazu das Datum mal in genau der Schreibweise ein, die durch die Clientsoftware bereitgestellt wird!

Du müsstest dann ebenfalls eine Fehlermeldung ernten. Nun kannst du das Format der Schreibweise verändern und es sollte dann funktionieren.

Die Clientsoftware muss dann diese funktionierende Schreibweise verwenden und es sollte auch die SP fehlerfrei laufen.

 

Der EnterpriseManager arbeitet da ein wenig großzügiger und lässt auch Datumsschreibweisen zu, die die DB bei Übergabe durch einen SQL-String nicht akzeptiert. Das Problem tritt durch die Übersetzung des EnterpriseManagers ins Deutsche auf.

 

Der ganze Roman oberhalb stützt sich auf die Fehlermeldung, aus der ich entnehme, dass die Applikation ein Datum in Textformat an die DB in ein Feld des Datantyps Date übergeben will. Und die Schreibweise des Datums ist der Grund für das Versagen!

 

 

Hoffe ich konnte dir ein bisschen helfen...

Link zu diesem Kommentar

....The following query failedcurrmode) sp_insert_currmode

1,`2004-11-20 00 :00:00`,",2.....

 

 

...Wenn mich meine Augen nicht täuschen ist da im Teil des Strings der die Zeit darstellt ein Leerzeichen zwischen 00 und :00

 

....Erzeugst du in der Clientsoftware diesen Eintrag dann liegt das Versagen möglicherweise auch daran...

in dem Fall schau mal nach woher das Leerzeichen kommt

 

lg

Link zu diesem Kommentar

@SQL-

 

Also erstmal vorweg : Ich bin quasi ein DB Newbie

und kann mit ein paar Aussagen von Dir nichts

anfangen. Ich hoffe Du/Ihr koennt mir trotzdem

ein Stueck weiter helfen....

 

Ja das ist richtig es ist eine Clientsoftware die sich am

SQL anmeldet .

 

Was meinst Du mit SP ?

Wie überprüfe ich welches Datumsformat an den Server

gesendet wird ?

 

Ja es ist richtig, das beim Erstaufruf der Software ( am Client!)

ein neuer Datenersatz erzeugt wird ( es handelt sich um

eine Hotelverwaltungssoftware die bisher nur -Standalone- unter DBASE lief und jetzt auf einen SQL-Server umgestellt wird) .

 

Wie überprüfe ich die die Schreibweise des Datums, das im INSERT - Statement übergeben wird ?

 

Wo/Wie trage ich die Variable in den SQL String ein ?

Wie kann ich das Statement der SP mit dem QueryAnalyzer auszuführen um das DATUM einzugeben ?

 

Viele Gruesse

Link zu diesem Kommentar

hallo sql-sql,

 

in einem anderen forum habe ich diese (s.u)antwort bekommen.

nur weiss ich nicht recht was ich damit anfangen soll ... hast

du einen tipp ?

 

 

 

-----auszug aus dem ##--fremd##--forum### ----------

 

Moin!

 

Der Wert `2004-11-20 00 :00:00` ist kein gültiges Datetime.

Hier ist ein Leerzeichen zu viel.

Nun am besten mit dem Query Analyzer.

Wenn Du das/die Leerzeichen löschen möchtest könnte

ein Statement wie folgt aussehen:

 

Update DeineTabelle

Set DasFeld = Replace (DasFeld,'00 :','00:')

Link zu diesem Kommentar

@lin4ever

du brauchst kein update auf die tabelle absetzen, da die applikation ja nicht in die datenbank schreiben kann.

der fehler liegt in der schreibweise des datums.

wahrscheinlich wird die fehlerhafte schreibweise von der applikation geliefert.

überprüfe das feld, in dem das datum erzeugt wird und berichtige ggf auf schreibweise 2000-01-01 00:00:00

der Datumsstring darf keine leerzeichen enthalten ausser zwischen dem tag und dem ersten nullenpaar der zeitangabe.

---> mit SP ist eine stored procedure gemeint --> diese erhält von deiner applikation den datumsstring in besagt falschem format geliefert. das auszuführende insert-statement schlägt dann eben mit den geposteten fehlermeldungen fehl.

der umfang dieses forums reicht leider nicht aus um dir grundsätzlichkeiten des programmierens oder administratives mit dem sql-server beizubringen.

 

lg

sql-sql

Link zu diesem Kommentar

@lin4ever

 

so herr kollege - hier wird nicht um den heissen brei geredet - soviel mal gleich vorab!

 

ich habe bereits einmal geschrieben, dass ich deine applikation nicht kenne und daher keine expliziten aussagen treffen kann!

 

nun noch einmal ganz langsam zum mitschreiben:

 

deine applikation erzeugt ein datum in einer fehlerhaften schreibweise.

ich kann dir nicht sagen WO und WIE das passiert, da ich das ding nicht kenne!

 

suche nach der stelle im programmcode, an der das leerzeichen in diesen datumsstring gelangt und berichtige dies in der angegebenen weise - dann funktioniert auch das insert-statement auf deinen sql-server!

 

mit mehr kann ich dir hier nicht helfen

 

mfg

sql-sql

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...