Entwickler-Ecke
Dateizugriff - Alterskontorolle für Filme
volvox - So 17.06.07 23:43
Titel: Alterskontorolle für Filme
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 - 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 - 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 - 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 - 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!