AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBExpress DateTime Parameter: dbExpress-Fehler:[0x0003]
Thema durchsuchen
Ansicht
Themen-Optionen

DBExpress DateTime Parameter: dbExpress-Fehler:[0x0003]

Ein Thema von GuenterS · begonnen am 29. Jan 2007 · letzter Beitrag vom 29. Jan 2007
Antwort Antwort
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#1

DBExpress DateTime Parameter: dbExpress-Fehler:[0x0003]

  Alt 29. Jan 2007, 11:55
Datenbank: MSSQL Server • Version: 2000 • Zugriff über: dbExpress
Hallo!

Ich verwende Delphi7 mit ServicePack1.

Ich versuche in eine Tabelle Datensätze einzutragen und bekomme folgende Fehlermeldung:

Zitat:
dbExpress-Fehler: [0x0003]: Ungültiger Feldtyp.
Um einzugtragen verwende ich folgenden Code:

Delphi-Quellcode:
  InsQry.ParamByName('a').AsInteger := 2;
  InsQry.ParamByName('b').AsString := '2';
  InsQry.ParamByName('c').AsDateTime := now;
  InsQry.ExecSQL;
Parameter a habe ich als Integer, b als String mit Länge 255 und c als DateTime deklariert. Alle Parameter als Input Parameter.

Der SQL String in der InsQry Komponente schaut folgendermassen aus:
Zitat:
INSERT INTO TEST (a, b, c) VALUES (:a, :b, :c)
Wenn ich das letzte Feld (c) nicht setze, also aus dem InsertStatement entferne und damit auch der Parameter weg ist, funktioniert es, sonst nicht. Daher schließe ich daraus, dass es am Datumstyp liegen muss.

Das Feld ist in der Datenbank als datetime definiert.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#2

Re: DBExpress DateTime Parameter: dbExpress-Fehler:[0x0003]

  Alt 29. Jan 2007, 13:09
Hi!

Schau dir mal die Params-Eigenschaft des Datasets an, der Parameter muß höchstwahrscheinlich den Datatype ftTimeStamp eingestellt bekommen, und nicht ftDateTime.

Cu,
Udontknow
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: DBExpress DateTime Parameter: dbExpress-Fehler:[0x0003]

  Alt 29. Jan 2007, 13:11
Danke für den Tipp,

aber leider liefert das den gleichen Fehler.

Ich habs dann auch gleich mal mit ftDate versucht, allerdings mit gleichem negativen Ergebnis.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#4

Re: DBExpress DateTime Parameter: dbExpress-Fehler:[0x0003]

  Alt 29. Jan 2007, 13:21
Hmmm, ich habe leider kein MS-SQL zur Hand, aber vielleicht wird ein DateTime dort als String hinterlegt? Einfach mal alles durchprobieren...

Cu,
UDontknow
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: DBExpress DateTime Parameter: dbExpress-Fehler:[0x0003]

  Alt 29. Jan 2007, 13:31
Der richtige Datentyp auf dem SQL Server 2000 ist "datetime".
"Smalldatetime" ist nicht zu empfehlen, da es zu Range-Errors kommen kann, die
von Delphi Programmierer nicht vorhersehbar oder vermeidbar sind.
Der Datentyp "timestamp" ist nicht zum Speichern von Datum & Uhrzeit vorgesehen, sondern dient
eher als eindeutiger Schlüssel.
Zitat:
timestamp ist ein Datentyp, der automatisch generierte binäre Zahlen offenlegt, die in einer Datenbank garantiert eindeutig sind. timestamp wird normalerweise als Mechanismus für die Erstellung einer Versionskennung von Tabellenzeilen verwendet. Die Speichergröße beträgt 8 Byte.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: DBExpress DateTime Parameter: dbExpress-Fehler:[0x0003]

  Alt 29. Jan 2007, 13:33
Zitat von shmia:
Der richtige Datentyp auf dem SQL Server 2000 ist "datetime".
"Smalldatetime" ist nicht zu empfehlen, da es zu Range-Errors kommen kann, die
von Delphi Programmierer nicht vorhersehbar oder vermeidbar sind.
Der Datentyp "timestamp" ist nicht zum Speichern von Datum & Uhrzeit vorgesehen, sondern dient
eher als eindeutiger Schlüssel.
Zitat:
timestamp ist ein Datentyp, der automatisch generierte binäre Zahlen offenlegt, die in einer Datenbank garantiert eindeutig sind. timestamp wird normalerweise als Mechanismus für die Erstellung einer Versionskennung von Tabellenzeilen verwendet. Die Speichergröße beträgt 8 Byte.

Danke für deine Informationen. Ich habe in der Datenbank DateTime als Spaltentyp verwendet.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#7

Re: DBExpress DateTime Parameter: dbExpress-Fehler:[0x0003]

  Alt 29. Jan 2007, 15:25
Höre ich da einen sarkastischen Unterton?

Probiere es mal hiermit.

Cu,
Udontknow
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: DBExpress DateTime Parameter: dbExpress-Fehler:[0x0003]

  Alt 29. Jan 2007, 15:44
Hallo, danke damit funktioniert das wohl, bedeutet aber wohl auch einen ziemlichen Aufwand, alle queries umzuschreiben.

Wird das jemals von Borland gefixt dieser Bug, das kann ja wohl nur ein workaround sein und nicht die endgültige Lösung.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#9

Re: DBExpress DateTime Parameter: dbExpress-Fehler:[0x0003]

  Alt 29. Jan 2007, 15:46
Hallo!

So wie sich das hier liest, ist es kein Problem von Borland, sondern von Microsoft. Nicht das erste Mal, daß sie sich nicht an Standards halten.

Cu,
Udontknow
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: DBExpress DateTime Parameter: dbExpress-Fehler:[0x0003]

  Alt 29. Jan 2007, 15:50
Zitat von Udontknow:
Hallo!

So wie sich das hier liest, ist es kein Problem von Borland, sondern von Microsoft. Nicht das erste Mal, daß sie sich nicht an Standards halten.

Cu,
Udontknow

In Deinem Beitrag mit dem Link zum bdn wird aber eine Lösung für Oracle angeboten mit dem TSQLTimeStamp. Die funktioniert jetzt auch für den SQL Server. Deshalb denk ich schon eher, dass das ein Problem von Borland bzw. dem Hersteller von dbExpress ist. Denn mit anderen Zugriffsmethoden BDE, ADO, SQL-Direct funktioniert das ja.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz