Autor Beitrag
volvox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 112

WIN XP
Delphi 7 Personal
BeitragVerfasst: So 17.06.07 23:43 
für die schule sollen wir ne datenbank für ne videothek machen

ich hab probleme bei der alterskontrolle

Geburtsdatum:=frmVerleih.tblKunden.FieldByName('Geburtsdatum').AsDateTime;
Alter:= yearsbetween(now,Geburtsdatum);
FSK:=frmVerleih.tblFilme.FieldByName('FSK').AsInteger;

If Alter >= FSK then begin //ausleihen...


Ich hoffe das versteht man, also erst das GebDatum aus der Datenbank auslesen, dann das aktuelle alter errechnen, dann die FSK zahl aus der DB in ner variable zwischenspeichern.

dann wird vor dem verleih überprüft, ob der person alt genug ist.

Das problem ist, dass das gebDatum immer der 30.12,1899(!!!) ist, was alles durcheinander bringt.

warum ist das so, was kann ich machen?
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: So 17.06.07 23:52 
wenn das geb datum immer gleich ist kannst du die FSK doch ausser acht lassen ich kenn keinen Film den man mit 107 jahren nicht gucken darf...
volvox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 112

WIN XP
Delphi 7 Personal
BeitragVerfasst: So 17.06.07 23:55 
aber es soll aus der DB ausgelesen werden und nicht dieses 30.12.1899 sein

vieleicht hat das was damit zu tun:


Delphi-Syntax:

type TDateTime = type Double;

Beschreibung

Bei den meisten CLX-Objekten werden Datums- und Zeitwerte mit dem Typ TDateTime repräsentiert. In Delphi entspricht der Typ TDateTime einem Double-Wert. Der Delphi-Typ TDateTime entspricht der Klasse TDateTime von C++.

Der ganzzahlige Teil eines TDateTime-Wertes von Delphi entspricht der Anzahl der Tage seit dem 30.12.1899. Der fraktionale Teil des TDateTime-Wertes gibt die Tageszeit an.

Es folgen einige Beispiele für TDateTime-Werte und die entsprechenden Datums- und Zeitangaben:

0 30.12.1899 12.00 Uhr
2.75 1.1.1900 18.00 Uhr
-1.25 29.12.1899 6.00 Uhr
35065 1.1.1996 12:00 am
Wenn beide TDateTime-Werte positiv sind, brauchen Sie zur Ermittlung der Tage zwischen zwei Datumsangaben die beiden Werte nur voneinander zu subtrahieren. Um eine Datums-/Zeitangabe um eine bestimmte Anzahl von Tagen zu erhöhen, addieren Sie einfach die Anzahl zur Datums-/Zeitangabe hinzu.
Wenn Sie mit negativen TDateTime-Werten arbeiten, muss der Zeitanteil separat berechnet werden. Der Zeitanteil gibt den Bruchteil eines 24-Stundentages ohne Berücksichtigung des Vorzeichens des TDateTime-Wertes wieder. 6:00 am 29.12.1899 ist –1,25, nicht –1 + 0,25, was –0,75 ergäbe. Zwischen – 1 und 0 gibt es keine TDateTime-Werte.
uko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220
Erhaltene Danke: 1

Win XP, VISTA, WIndows 7
Delphi 2007/2010 Prof
BeitragVerfasst: Mo 18.06.07 06:28 
Hallo,

hast Du mal überprüft, was für Werte die Kunden-Tabelle denn enthält? Das Datum 30.12.1899 deutet nämlich drauf hin, daß im Feld 'Geburtstdatum' ne Null oder NULL steht. Lies doch mal zusätzlich zum Geburtsdatum auch den Kundennamen aus der Tabelle aus (den wird es ja wohl geben oder ansonsten einen sonstigen Wert, mit dem Du den aktuellen Datensatz eindeutig bestimmen kannst) und schau, ob es überhaupt der richtige Datensatz ist.


Grüße,
Uli
Brother John
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 28

WinXP
Turbo Delphi Explorer Win32
BeitragVerfasst: Mi 20.06.07 15:10 
Am Code selbst seh ich jetzt auch kein unmittelbares Problem und würde darauf tippen, dass der Fehler beim Auslesen der Datenbank auftritt.

Info am Rande, weil da der Ausschnitt aus der Hilfe steht:
An der Stelle ist ein Fehler in der deutschen Hilfe. Da hat der Übersetzer nämlich 12 a.m. (= Mitternacht) und 12 p.m. (= 12 Uhr mittags) verwechselt. Der Wert 0 entspricht dem 30.12.1899, 0:00 Uhr; und nicht 12 Uhr. Das hat mich vor kurzem ne Stunde Bug suchen gekostet.

_________________
Grüße
Brother John