PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vegleich von Datumsangaben



Rick Jones
24.06.2004, 18:26
Na Hoffentlich kann ich einigemassen verständlich machen worums geht ^^
------------
Ich hab ein Programm zum Verwalten von EDV-Geräten..

Bei der Eingabe eines Gerätes wird auch das Kaufdatum eingegeben.

Feld 1 - Datumsformat
------------------
Die Einträge kann man später natürlich ändern.
Zum Beispiel im Falle wenn das Gerät Defekt ist oder Verkauft wird.
Aus deisem Grunde gibt es im
-Eintrag Ändern- Formular einen Bereich um sowas einzutragen :)

Feld 2 "defekt seit" Datumsformat
und noch Eingabe Felder warum und was der defekt ist etc..

Naja jedenfalls ist mein Problem folgendes
----
Ich würde die beiden Datusm angaben gerne vergleichen
weil es wäre unlogisch ^^ das ein Gerät Defekt ist bevor ichs überhaupt gekauft habe.
Beispiel

Montitor gekauft am 10.10.2004
.. 1 Jahr Später geht er Kaputt und ich
trag das halt ein
Monitor Defekt seit 10.10.2005
----------------
Allerdings könnte ich auch eintragen 10.03.1999
Was von der Logik her allerdings ziemlich Falsch wäre ^^
...
Ich hab nun gegrübelt ohne Ende aber ich hab kein Plan wie ich die beiden Datumsnagaben vergleichen kann
So in der Art:

"Wenn Datum des Defektes vor Kaufdatum liegt gib ErrorMessage aus.."
Das Datum ist ja nicht einefach ne zahl die ich mit einerander auf Größre vergleichen kann

Das ganze hab ich mir Visual FoxPro 7.0 Programmiert falls das weiterhilft..

Für jetwege Tipps,Denkansätze,Codeschnipsel.. egal in Welcher Sprache bin ich sehr dankbar ^^

mfg RJ

Ynnus
24.06.2004, 18:40
Das Datum ist ja nicht einefach ne zahl die ich mit einerander auf Größre vergleichen kann

Ich gehe davon aus, dass die Daten als Strings gespeichert sind. also Datum1 = "24.06.04". Dann musst du diesen String in die einzelnen Teile zerlegen, dass du aus 24.06.04 also eine Variable 24, eine 06 und eine 04 hast. Das musst du mit beiden Jahreszahlen machen. Dann einfach stück für stück abgfragen. Zuerst das Jahr, welches ja nicht niedriger sein kann, minimal gleich. Wenn das Jahr schon größer ist, brauch man ja nicht mehr vergleichen. Wenn es gleich ist, dann den Monat. Dieser kann auch im Minimum gleich sein, nicht kleiner. Ist er größer, hat sich die Sache wieder gegessen. Ist er gleich, musst du eben noch den Tag vergleichen. Der darf wieder nur größer oder gleich sein. Gleich allerdings nur dann, wenn das Gerät am Kauftag gleich kaputt ist. (Was natürlich möglich wäre, also sollte "gleich" auch gegeben sein).

Crash-Override
25.06.2004, 22:32
Das ginge schon... wenn du gleich noch die Programmiersprache angegeben hättest hätten wir dir sogar noch besser helfen können aber egal...

@Topic:
Man könnte doch aber auch ein defektes Gerät kaufen oder?

edit:
sorry, hab's net gesehen bin wohl noch etwas müde von gestern nacht... (war bis um 4 auf und hab FF VIII gezockt *gähn*)

Rick Jones
25.06.2004, 23:19
Original geschrieben von Crash-Override
Das ginge schon... wenn du gleich noch die Programmiersprache angegeben hättest hätten wir dir sogar noch besser helfen können aber egal...




Original geschrieben von Rick Jones
Das ganze hab ich mir Visual FoxPro 7.0 Programmiert falls das weiterhilft..



:D Also lesen musst du schon selber.


Edit: Ok verziehen FF8 strengt den geist schon genug an XD

nudelsalat
26.06.2004, 04:22
@Rick Jones
Hast du das Problem mit Sunnys Beschreibung schon lösen können?

Rick Jones
26.06.2004, 08:50
Original geschrieben von nudelsalat
@Rick Jones
Hast du das Problem mit Sunnys Beschreibung schon lösen können?

Lösen nicht aber der Ansatz ist gut werd ich Montag auf Arbeit gleich mal testen :)
Ich geb dann bescheid

MuadDib
26.06.2004, 14:06
Ist Foxpro 7.0 eigentlich .NET-fähig? Wenn ja, gibt es da die nützliche Klasse "DateTime", die eine Funktion "Compare" besitzt, mit der man genau das machen kann :) hier (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatetimeclasscomparetopic.asp) findest du eine kleine Beschreibung der Funktion.

Rick Jones
26.06.2004, 15:43
Original geschrieben von MuadDib
Ist Foxpro 7.0 eigentlich .NET-fähig? Wenn ja, gibt es da die nützliche Klasse "DateTime", die eine Funktion "Compare" besitzt, mit der man genau das machen kann :) hier (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatetimeclasscomparetopic.asp) findest du eine kleine Beschreibung der Funktion.

Sie hams zwar aus dem .net Studio rausgenommen, Aber es ist soweit ich weis schon Net fähig http://www.multimediaxis.de/images/smilies/old/1/gruebel.gif..

Das mit dem Compare muss ich mal testen danke :)
bzw nach sehen obs das gibt ^^

Rick Jones
28.06.2004, 19:04
hab nach gesehen , Diese Funktion gibbet offensichtlich net :)
ich werd mal Sunnys methode testen

Chocwise
28.06.2004, 19:46
Ich kanns mir zwar nicht genau erklären warum ich das annehme, aber ich befürchte das es keine Timestamp-Orientierten Funktionen in einer M$-Programmiersprache gibt (I love PHP!). :D
Ich hab mich mal nach eine Online-Funktionsreferenz für VFP umgeschaut, aber Pustekuchen... (I love PHP!)

Egal, ich geb dir die Info dennoch. Vielleicht regt das ja deine Kreativität an. :D

Der Timestamp ist ein Wert in Sekunden die seit dem Beginn der Unix-Epoche vergangen sind. Also ein successiv inkrementierbarer Wert, was es sehr leicht macht mit ihm zu rechnen (I love PHP!).

Schau dir ggf. mal diese beiden Referenzseiten über diverse Datumsfunktionen:
http://de3.php.net/date
und speziell die mktime()-Funktion, welche man benötigt um aus einem konkreten Datum einen Timestamp zu machen,:
http://de3.php.net/manual/de/function.mktime.php
an.

Hinweis: Mithilfe der date()-Funktion lässt sich ein Timestamp sehr komfortabel wieder in ein Datum mit frei einstellbarem Format ausgeben (I love PHP!).

Der Rest ist dann nurnoch Rechnen mit großen natürlichen (mathematisch) Zahlen.

Rick Jones
28.06.2004, 20:01
Hmm das Datum in einen Rechenbaren Wert Umwandlen is auch ne Idee..

Jo also Anregungen sind ja shcon mal 2 oder 3 Da wenn ich das so überblicke werd mal kucken ob ich das in den nächsten tagen mal anwende :)