Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Server und Zeiteingabe (https://www.delphipraxis.net/53845-sql-server-und-zeiteingabe.html)

renekr 23. Sep 2005 16:49

Datenbank: SQL 2005 • Version: Beta • Zugriff über: ADO

SQL Server und Zeiteingabe
 
Hi,
kann mir jemand sagen ob ich im SQL Server ein Time Feld machen kann?,
Also das in der Tabelle nur der Zeit wert drin steht? ohne datum?

Danke.

Sharky 23. Sep 2005 16:55

Re: SQL Server und Zeiteingabe
 
Hai renekr,

ich glaube der MS-SQL kennt kein reines Zeitfeld. In der Regel ist dies aber auch nicht schlimm. Du kannst ja deine Zeiten in einem DateTime-Feld speichern aber bei Abfragen nur den Zeitanteil berücksichtigen.

renekr 23. Sep 2005 17:02

Re: SQL Server und Zeiteingabe
 
Hi,
ja klar,aber ich will den Tabellen Inhalt in einem Grid anzeigen und da soll nur daer Time Wert angezeigt werden.
Speicehrn tu i nur de Time wert, also steht 30.12.1899 davor. das macht mir nix aus , wenn das mit dem DBGrid gehn würde?
Kann man das DATETIME Feld beim anzeigen im Grid als Time handln?

Danke.

Jelly 23. Sep 2005 17:20

Re: SQL Server und Zeiteingabe
 
Du kannst im FieldEditor des Dataset beim entsrpechenden Feld das displayformat auf hh:nn:ss setzen.

renekr 23. Sep 2005 17:40

Re: SQL Server und Zeiteingabe
 
Hi,
Danke.
Wo genau mach i das ?Direkt im ADOQuery? unter Parameter?

Ich kann ja ev auch direkt im SQL String das DATE_Format oder Convert anwednen.

SQL String ist ein normaler Select * from das ich alles zurückbekomme.


Danke.

Sharky 23. Sep 2005 17:53

Re: SQL Server und Zeiteingabe
 
Hai renekr,

es gibt zwei Wege. Beim ersten machst Du das im ObjektInspector für die Felder des Query
  1. ADOQuery auf active setzen (unter SQL muss z.B. SELECT * FROM tabelle stehen).
  2. Einen doppelklick auf die ADOQuery Komponente
  3. Rechter Mausklick auf das Fenster
  4. Alle Felder hinzufügen wählen
  5. Das Feld mit dem Datum auswählen
  6. Im OI unter Dislplayformat das gewünschte einstellen (hh:mm)

oder einfacher ;
Delphi-Quellcode:
procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet);
begin
  (DataSet.FieldByName('zeit') as TDateTimeField).DisplayFormat := 'hh:mm:ss';
end;
Die erste Methode hat einen großen Nachteil. Wenn Du später ein Feld in deiner Tabelle hinzufügst würde dieses nicht mehr im Query verfügbar sein da dieses nur noch die Felder berücksichtig welche im FeldEditor eingetragen sind.

renekr 23. Sep 2005 18:14

Re: SQL Server und Zeiteingabe
 
WOW,
Ihr seit echt die Größten.
Bis jetzt wurde jedes Problem von mir wirklich sehr schnell und mit viel Anganement gelöst.
Respekt für das Forum.
Einsame Spitze.
:angel:

Ich habe es auch hinbekommen,aber viel Umständlicher.

Select * from Tabelle;
mit
select convert(varchar,uhrzeit_ab,108)as Uhrzeit_ab),ID,name usw, from Tabelle;
ersetzt.

Aber werde die Funktion von Sharky einsetzen,die ist am einfachsten und man muß bei ändrungen in der Tabelle nicht den Source anpassen.

Wirklich großes Lob an euch.

Danke.

Sharky 23. Sep 2005 18:20

Re: SQL Server und Zeiteingabe
 
Zitat:

Zitat von renekr
... Respekt für das Forum. ...

Wir, und damit meine ich alle Mitglieder der DP, geben uns mühe ;-)

Noch einen kleinen Tipp:
Wenn Du für die Anzeige die sekunden nicht brauchst solltest Du anstelle von:
Delphi-Quellcode:
(DataSet.FieldByName('zeit') as TDateTimeField).DisplayFormat := 'hh:mm:ss';
diesen Code nehmen:
Delphi-Quellcode:
(DataSet.FieldByName('zeit') as TDateTimeField).DisplayFormat := ShortTimeFormat;
Dann ist die Zeitanzeige so wie sie vom Anwender in der Systemsteuerung des OS eingestellt wurde.

omata 23. Sep 2005 21:38

Re: SQL Server und Zeiteingabe
 
Sowas geht auch direkt in einer SQL-Anweisung.

Gibt das Datum aus...
SQL-Code:
SELECT CONVERT(VARCHAR, datum, 104)
Gibt die Uhrzeit aus...
SQL-Code:
SELECT CONVERT(VARCHAR, datum, 108)
MfG
Thorsten

Sharky 24. Sep 2005 06:58

Re: SQL Server und Zeiteingabe
 
Zitat:

Zitat von omata
Sowas geht auch direkt in einer SQL-Anweisung.

Hai omata,

bei dieser Methode wird aber das Datums/Zeitformat im SQL-Code vorgegeben. Es wird also unabhängig von den Einstellungen der Regionsoptionen des Benutzers angzeigt. Dies finde ich persönlich nicht so gut. Ein Programm sollte Datums/Zeitwerte immer so anzeigen wie ich es an meinem Computer eingestellt habe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 Uhr.
Seite 1 von 2  1 2      

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