Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Leeres Datumsfeld abfragen? (https://www.delphipraxis.net/61266-leeres-datumsfeld-abfragen.html)

topoh 19. Jan 2006 00:17

Datenbank: Paradox • Version: 7 • Zugriff über: BDE

Leeres Datumsfeld abfragen?
 
Hallo allerseits!
Hab nur ein kleines Problem (Stirnfalten schon echt groß)......
Bin kein Profi im Programieren, habs nie gelernt (Autodidakt) also nicht gleich
schimpfen wenn ich hier ne Plöde oder aber auch schon 1000mal gestellte Frage stelle, Danke.

Dieses hier funktioniert einwandfrei:
Delphi-Quellcode:
      Begin If TableHSKS['KdNr'] <= null Then Richedit2.Lines.Append(' ')
             else Richedit2.Lines.Append('Kd.-Nr.: '+(TableHSKS['KdNr']));end;
Sprich , ist keine Kundennummer im Feld vorhanden schreibe einfach ne Leerzeile.


Das hier funktioniert NICHT:
Delphi-Quellcode:
Dat := FieldByName('LetzteWartung').AsDateTime;
If TableHSKS['LetzteWartung'] <= null Then Label27.Caption :='N/A';
If TableHSKS['Zyclus']= '3 Monate' Then dat:=dat+90;
If TableHSKS['Zyclus']= '6 Monate' Then dat:=dat+180;
etc....
Ich kann zum verrecken das blöde Datumsfeld nicht abfragen ob ein Datum drinnsteht
oder nicht? Sollte LezteWartung leer sein und das Programm genau an dieser Stelle beendet werden,
dann steigt Delphi mit nem Fehler aus das er das Datum nicht berechnen kann.
Steht bei diesem Feld ein Datum drinn, alles Wunderbar und es werden je nach Zyclus die
Tage draufgerechnet. Und das funktioniert wunderbar.

Der einzigste Unterschied zu obigem ist der Feldtype, oben ist es Alpha also vom
Type String und unten ist es Type Datum und ich muss jetzt eigendlich nur wissen,
steht ein Datum im Feld oder isses leer?
Das mit der kleiner oder gleich Null ist eigendlich ganz Prima gewesen,
warum geht das nicht bei Datumsfeldern?
Gibbet da ne andere Abfrage zu als die obige schon funktionierende?


Mfg. Topoh

Jelly 19. Jan 2006 00:26

Re: Leeres Datumsfeld abfragen?
 
Zitat:

Zitat von topoh
Delphi-Quellcode:
Dat := FieldByName('LetzteWartung').AsDateTime;
If TableHSKS['LetzteWartung'] <= null Then Label27.Caption :='N/A';
If TableHSKS['Zyclus']= '3 Monate' Then dat:=dat+90;
If TableHSKS['Zyclus']= '6 Monate' Then dat:=dat+180;
etc....

Also das kann ja auch verständlicherweise nicht funktionieren. Delphi kennt das Schlüsselwort null nicht.

Aber probier mal so:

Delphi-Quellcode:
if FieldByName('LetzteWartung').IsNull then begin
   label27.caption := 'N/A' ;
end else if FieldByName('LetzteWartung').AsDateTime = 0 then begin
   label27.caption := 'N/A' ;
end else begin
   If TableHSKS['Zyclus']= '3 Monate' Then dat:=dat+90;
   If TableHSKS['Zyclus']= '6 Monate' Then dat:=dat+180;
end ;

topoh 19. Jan 2006 10:19

Re: Leeres Datumsfeld abfragen?
 
Also da wäre ich nicht so draufgekommen und ich habe schon meine Bücher gewälzt
(Delphi5 Standartwerk von Elmar Warken und Delphi 6 Programmers Choice auch von Warken)
Das sind zusammen 2400 Seiten Delphi)
Aber da muss man erstmal ne Idee haben die in Richtung "IsNull" erstmal geht dann kann man evtl.
auch auf dieses kleine Teil kommen.
So funktioniert es jetzt Tadelos, ich bin begeistert, recht schönen Dank.
Man lernt halt nie aus, so weis ich jetzt wieder ein winziges Stück mehr wieder, Danke.

Mfg. topoh

Zitat:

Aber probier mal so:

Delphi-Quellcode:
if FieldByName('LetzteWartung').IsNull then begin
   label27.caption := 'N/A' ;
end else if FieldByName('LetzteWartung').AsDateTime = 0 then begin
   label27.caption := 'N/A' ;
end else begin
   If TableHSKS['Zyclus']= '3 Monate' Then dat:=dat+90;
   If TableHSKS['Zyclus']= '6 Monate' Then dat:=dat+180;
end ;


Jelly 19. Jan 2006 10:34

Re: Leeres Datumsfeld abfragen?
 
Zitat:

Zitat von topoh
Aber da muss man erstmal ne Idee haben die in Richtung "IsNull" erstmal geht dann kann man evtl.
auch auf dieses kleine Teil kommen.

Naja, dazu brauchts eigentlich keine 2400 Seiten Lektüre... F1 bei FieldByName drücken, Definition von TField anwählen, und auf Eigenschaften wählen... Da gibts ne ganze Liste der TField Eigenschaften, und IsNull sollte man da schon finden.


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