Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Zugriff auf Datumswert in Datenbank (https://www.delphipraxis.net/169857-zugriff-auf-datumswert-datenbank.html)

pixfreak 16. Aug 2012 14:38

Datenbank: SQL Server • Version: 2012 • Zugriff über: SDAC

Zugriff auf Datumswert in Datenbank
 
Hallo zusammen,

ich stehe hier gerade vor einem kleinem Problem und bekomme die Krise...:wall:

Ich versuche aus einer Datenbank ein Datumswert aus einer Tabelle auszulesen. Das Feld hat den Typ date.

Wenn ich nun den Wert als DateTime auslesen will klappt das auf meinem PC einwandfrei und beim zweiten PC knallt es dann mit einer EConvertError Exception, da yyyy-mm-dd kein gültiges Datum sei. Ich greife wie folgt zu:

Delphi-Quellcode:
datum := query.FieldByName('gueltigbis').AsDateTime;
Normalerweise sollte doch SDac sich um die Datumsübername kümmern... Und vor allem warum geht es auf einem PC und auf dem anderen nicht? (Die Umgebungseinstellungen passen und die Datenbank liefert auch im dmy Format...)

Ein AsDate oder AsTime gibt es ja auch nicht. Hat jemand eine Idee?


VG Pixfreak

mkinzler 16. Aug 2012 14:49

AW: Zugriff auf Datumswert in Datenbank
 
Warum nichtr .Value?

pixfreak 16. Aug 2012 14:56

AW: Zugriff auf Datumswert in Datenbank
 
Hi,

dann bekomme ich den Fehler, dass die Unicodevariante nicht nach double konvertiert werden kann...

Im Moment absolut ratlos... Dies sollte doch eigentlich kein Problem sein !?!?


VG Pixfreak

FBrust 16. Aug 2012 14:57

AW: Zugriff auf Datumswert in Datenbank
 
Hallo,

könnte das vielleicht an dem bekannten Windows-7-hat-englische-Datumseinstellungen-Problem liegen? Dabei werden deutsche Einstellungen angezeigt, aber hinterlegt sind die englischen.

Das betrifft die Rechner mit vorinstalliertem Windows 7. Vielleicht einfach mal an dem anderen PC die Ländereinstellungen auf "Englisch" stellen (welches ist egal), abspeichern und dann direkt wieder auf "Deutsch" umstellen.

Gruß
Frank

mkinzler 16. Aug 2012 15:01

AW: Zugriff auf Datumswert in Datenbank
 
Das Feld hat wohl einen Stringtyp. hat das einen bestimmten Grund?

pixfreak 16. Aug 2012 15:08

AW: Zugriff auf Datumswert in Datenbank
 
Wenn ich das wüsste.

In der Tabelle steht dort explizit "date"...

Die Ländereinstellungen habe ich eben auch mal geändert, ohne Erfolg...


VG Pixfreak

Bummi 16. Aug 2012 15:17

AW: Zugriff auf Datumswert in Datenbank
 
Was steht denn im OI wenn Du das Feld persistent machst?
Gegf. ein "Treiber"-Problem

pixfreak 16. Aug 2012 16:03

AW: Zugriff auf Datumswert in Datenbank
 
@Bummi: Entweder stehe ich auf dem Schlauch, oder ich kann das bei den SDac Komponenten nicht explizit auswählen...

Was mich nur wundert: Wenn ich einzeln auf das Feld zugreife gibt es einen Fehler, im Grid wird es dargestellt, als yyyy-mm-dd (warscheinlich als String...).

Ich habe mal ein SetFieldType angewendet, ohne Besserung...


VG Pixfreak

Bernhard Geyer 16. Aug 2012 16:08

AW: Zugriff auf Datumswert in Datenbank
 
Aktuelle Version von SDAC im Einsatz? Du setzt ja auch den neuesten MS-SQL Server ein und wer weiß ob hier im internen Serverprotokoll was geändert wurde ...

Furtbichler 16. Aug 2012 16:10

AW: Zugriff auf Datumswert in Datenbank
 
Der Datentyp 'Date' wird nur ungenügend unterstützt. Bei SDAC weiß ich das aber nicht so genau (gehe aber davon aus). Falls Du den Typ auf 'DateTime' ändern kannst, sollte es keine Probleme geben.

Falls Du den Datentypen nicht ändern kannst, dann verwende eine Query und caste auf DateTime.

pixfreak 16. Aug 2012 17:01

AW: Zugriff auf Datumswert in Datenbank
 
Hallo zusammen,

das mit dem Cast habe ich auch schon probiert, ohne Besserung. SDac ist in Version 6.2.7, mit der 6.2.8 kann ich keine Release compilieren, da meckert der Linker rum...

Und nun kommts: Installiert man auf dem fraglichen Rechner den nativen Clienten (2008R2 und auch 2012 habe ich probiert) und dann geht alles auf einmal:!:

Wenn man mal an diese Kleinigkeiten früher denken würde... Also werde ich den Client mit in meinen Installer aufnehmen.


Viele Grüße und danke für Eure Mühen!

Pixfreak

Furtbichler 16. Aug 2012 18:47

AW: Zugriff auf Datumswert in Datenbank
 
Hallo pixfreak,
:shock:

Das hätte ich nicht gedacht. Ist gespeichert.

pixfreak 16. Aug 2012 20:11

AW: Zugriff auf Datumswert in Datenbank
 
Zitat:

Zitat von Furtbichler (Beitrag 1178528)
:shock:

Das hätte ich nicht gedacht. Ist gespeichert.

Ich auch nicht, anscheinend können die neueren Features nur mit dem nativen Clienten durchgeführt werden. Die Windows eigene (ist glaube ich OLE-DB) Verbindung funktioniert zwar, versagt aber an den "neuen" Stellen. Denn alles andere hat ja funktioniert und sogar timestamps ala datetime2 stimmten in den verbundenen Datenkomponenten und Grids. Und auf meinem Entwicklungsrechner ist natürlich ein komplettes Management Studio (mit dem nativen Clienten) installiert, da fällt es nicht auf...

Manchmal steckt der Teufel im Detail.


Nen schönen Abend noch...

Pixfreak

Bernhard Geyer 16. Aug 2012 21:05

AW: Zugriff auf Datumswert in Datenbank
 
Zitat:

Zitat von pixfreak (Beitrag 1178538)
Ich auch nicht, anscheinend können die neueren Features nur mit dem nativen Clienten durchgeführt werden. Die Windows eigene (ist glaube ich OLE-DB) Verbindung funktioniert zwar, versagt aber an den "neuen" Stellen.

Wenn man bedenkt das der OLE-DB Client seit einiger Zeit abgekündigt ist, ist das nicht verwunderlich wenn die "neuen" Stellen nicht unterstützt werden.

p80286 16. Aug 2012 22:39

AW: Zugriff auf Datumswert in Datenbank
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1178542)
Wenn man bedenkt das der OLE-DB Client seit einiger Zeit abgekündigt ist, ist das nicht verwunderlich wenn die "neuen" Stellen nicht unterstützt werden.

Zitat:

SQL Server Data Access Components (SDAC) is a library of components that provides native connectivity to SQL Server from Delphi, C++Builder, Lazarus (and Free Pascal) for both 32-bit and 64-bit Windows platforms. SDAC-based applications connect to SQL Server directly through OLE DB, which is a native SQL Server interface. SDAC is designed to help programmers develop faster and cleaner SQL Server database applications.
....
SDAC-based DB applications are easy to deploy, do not require installation of other data provider layers (such as BDE and ODBC),
Naja so ganz scheint sich das zumindestens bei DEVART herum gesprochen zu haben.

Gruß
K_H


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 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