Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Date auf null setzen???? (https://www.delphipraxis.net/15749-date-auf-null-setzen.html)

O.T. 3. Feb 2004 16:43


Date auf null setzen????
 
Hey Leute.

Hab n Problem :x


Und zwar muss ich einen Wert von typ Date auf null setzen.

Hab ein Objekt mit einer Eigenschaft vom Typ "Date". Dieses Objekt wird in eine Datenbank geschrieben und ich will das genau in diesem Wert nichts drinsteht.

Setze ich das Date auf '0', so steht immer das Default-Datum darin (irgenwas mit xx.xx.1899 oder so glaub ich).

Wie mach ich das das genau die Zelle in der Datenbank leer ist???

Wisst ihr was ich meine, kann mir einer helfen????


Badanke mich jetzt schon................


Machts gut.............. :hello:

Michael Leyhe 3. Feb 2004 16:55

Re: Date auf null setzen????
 
HI

Also ich weiss nicht genau was du meinst aber der Typ Date ist folgendermaßen aufgebaut:

Tag . Monat . Jahr --> das heutige Datum 03.02.2004

wenn du dies auf Null setzten willst dann musst du folgendes tun

Delphi-Quellcode:
var datum :Tdate;

...

datum := '00.00.0000';
Kann sein das du was anderes meints, aber ich wüsste dann nicht was.

Giantics 3. Feb 2004 16:59

Re: Date auf null setzen????
 
Zitat:

Zitat von O.T.
...
Setze ich das Date auf '0', so steht immer das Default-Datum darin (irgenwas mit xx.xx.1899 oder so glaub ich).

Wie mach ich das das genau die Zelle in der Datenbank leer ist???

Wisst ihr was ich meine, kann mir einer helfen????...

Der Typ TDate ist so festgelegt, dass ein Wert 0 dem "30.12.1899" entspricht. d.h. Wenn du ein "Null-Datum" möchtest, musst du eben diesen Wert "negativ" reinschreiben. Ein Tag entspricht 1.
d.h. du müssteigentlich "1900*364.25-1" abziehen. Allerdings hab ichs grad ausprobiert und gemerkt, dass ein Jahr mit 366 Tagen gerechnet wird (Hä, warum das) :gruebel:
Delphi-Quellcode:
var TDate ADate;
begin
  ADate:=-1900*366+1;
  ...

Giantics 3. Feb 2004 17:01

Re: Date auf null setzen????
 
Zitat:

Zitat von Michael Leyhe
Delphi-Quellcode:
var datum :Tdate;

...

datum := '00.00.0000'; // Hier Fehler

[Error] Unit1.pas(35): Incompatible types: 'TDate' and 'String'
Irgendwie logisch, oder? :zwinker:

xineohp 3. Feb 2004 17:38

Re: Date auf null setzen????
 
moin moin,

wenn du unbedingt das Datum "00.00.0000" in deiner Datenbank stehen haben willst (mir ist zwar schleierhaft warum ... aber egal) dann musst du vom Standardwert "30.12.1899" die Differenz abziehen. Freundlicherweise hat Borland exakt diesen Wert in der Variable "DateDelta" hinterlegt (zumindest in D7, flls dem in anderen Versionen nicht so ist steht der Wert bei mir mit"
const DateDelta = 693594" in der Hilfe);

cu phoenix

PS.: du kannst tDatetime Variablen nur tDatetime oder real zuweisen. Dabei stehen die Vorkommastellen für Tage seit dem "30.12.1899" und die Nachkommastellen für den Rest in Tagesbruchteilen.

leviathan666 26. Okt 2004 12:19

Re: Date auf null setzen????
 
Also, ich hatte das selbe Problem, und habe versucht, es mit der DateDelta-Konstante zu lösen, jedoch lautet bei mir das Datum dann: "28.12.3798". Und nu?

glkgereon 26. Okt 2004 12:56

Re: Date auf null setzen????
 
ich denk ma du hast plus gerechnet :wink:

shmia 26. Okt 2004 13:18

Re: Date auf null setzen????
 
So wird ein Feld auf NULL gesetzt:
Delphi-Quellcode:
Query1.Edit;
Query1.FieldByName('Datum').Clear;
Query1.Post;
Man kann z.B. dafür sorgen, dass ein Datumsfeld explizit auf NULL gesetzt wird:
Delphi-Quellcode:
procedure TForm1.Query1BeforePost(DataSet: TDataSet);
var
   f : Field;
begin
   f:= Dataset.FieldByName('Datum');

   // ein Datum um das Jahr 1900 kann ja nichts sein
   if f.AsDateTime < 1.0 then
      f.Clear; // deshalb löschen
end;


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