Seite 1 von 2

Rechnen mit zwei Datumsfeldern

Verfasst: Mo 3. Okt 2016, 18:40
von Moerser01
Hallo

Ich bin Neuling in Base und habe Probleme mit Datumsrechnen.
leider finde ich auch, nach Tage langem suchen, keine passende Lösung für mein Problem. Ich muß auch dazusagen das ich mit Programmieren von Marcos und Formularverknüpungen keinerlei Erfahrungen habe.

Ich habe eine Tabelle mit folgenden Spalten entworfen.

Produkt; Stück; Einheit; Herstellungsdatum,; Lagerort; Firma; Verfallsdatum, Art

Dann eine Parameter-abfrage erstellt.

Und ein Formular mit 4 Abfragemöglichkeiten.
Und zwar:
Produkt; Lagerort; Firma; Art

Produkt ; Lagerort; Firma; Art

Als Subformular habe ich die komplette Tabelle.

Soweit funktioniert auch alles wunderbar.Aber jetzt zu meinem Problem.
Ich hätte gern das im Subformular (also in der Tabelle) das Verfallsdatum einen roten Hintergrund bekommt wenn das Verfallsdatum abgelaufen ist. Oder als alternative aber nur als Notlösung, falls Plan 1. nicht zu realisieren ist.Eine Spalte machen, in der wenn das Verfallsdatum abgelaufen ist, ein Text eingefügt wird "Abgelaufen" und wenn es noch unterm Ablaufdatum ist "OK" anzeigt. Also muß mit der Systemuhr gearbeitet werden.

Ich würde mich freuen wenn mir jemand helfen kann oder wenn es so eine Anfrage schon mal gab mir jemand den Link schicken kann.

Gruß Moerser

Re: Rechnen mit zwei Datumsfeldern

Verfasst: Mo 3. Okt 2016, 20:01
von RobertG
Hallo Moerser,

ein Umfärben wird wohl nicht gehen. So etwas gibt die Formatierung der Felder nicht her. Das funktioniert nur bei Feldern mit Zahlenwerten. Dort kann dann eine entsprechende Formatierung eingegeben werden, die auch abhängig von bestimmten Zahlenwerten ist. Siehe dazu die Hilfe der Zahlenformatierung.

Mit dem Datum kannst Du so verfahren:

Code: Alles auswählen

SELECT "Tabelle".*, CASEWHEN("Verfallsdatum"<NOW(),'abgelaufen','') AS "Ablauf" FROM "Tabelle"
Das wird als Abfrage (für den fiktiven Tabellennamen "Tabelle") erstellt und ist die Datengrundlage für Dein Unterformular. Die Spalte, in der gegebenenfalls 'abgelaufen' erscheint, kannst Du dann ja in roter Farbe und fett ausfüllen lassen.

Gruß

Robert

Re: Rechnen mit zwei Datumsfeldern

Verfasst: Mo 3. Okt 2016, 20:10
von F3K Total
Hi,
anbei ein einfaches Beispiel, hier die darin enthaltene Abfrage:

Code: Alles auswählen

SELECT 
    "ID",
    "VERFALLSDATUM",
    CASEWHEN( DATEDIFF( 'dd', CURRENT_DATE, "VERFALLSDATUM" ) < 0, 'abgelaufen', 'OK' ) AS "STATUS"
FROM 
    "PRODUKTE"
Gruß R

Re: Rechnen mit zwei Datumsfeldern

Verfasst: Di 4. Okt 2016, 05:27
von Moerser01
Danke Robert für die schnelle Hilfe. Funktioniert super. Sobald ich die Datenbank fertig habe werde ich sie hier zum upload bereitstellen.

Gruß Christian

Re: Rechnen mit zwei Datumsfeldern

Verfasst: Di 4. Okt 2016, 06:28
von F3K Total
Sehr schön,
aber ich bin nicht Robert :D
Gruß R

Re: Rechnen mit zwei Datumsfeldern

Verfasst: Di 4. Okt 2016, 15:37
von Moerser01
Achso. Sorry. Trotzdem danke.

Re: Rechnen mit zwei Datumsfeldern

Verfasst: Mi 5. Okt 2016, 05:02
von Moerser01
Hi!

WIe versprochen, für alle die einen Datenbank für ihr Lager brauchen, lade ich meine erste eigene Datenbank hoch.
Viel Spaß damit.

Christian

Re: Rechnen mit zwei Datumsfeldern

Verfasst: Mi 5. Okt 2016, 18:49
von F3K Total
Hallo Christian,
ich habe da noch einen Verbesserungsvorschlag für Dich, mit dieser Abfrage_P_L_A_S

Code: Alles auswählen

SELECT "ID",
    "Produkt",
    "Lagerort",
    "Art",
    "Anzahl",
    "Einheit",
    "Produktionsdatum",
    "Verfallsdatum",
    "Artikelfirma",
    "Abpackung",
    CASE WHEN DATEDIFF( 'dd', CURRENT_DATE, "Verfallsdatum" ) BETWEEN 1 AND 14 THEN DATEDIFF( 'dd', CURRENT_DATE, "Verfallsdatum" ) || ' Tage!' WHEN DATEDIFF( 'dd', CURRENT_DATE, "Verfallsdatum" ) <= 0 THEN 'abgelaufen' ELSE 'OK' END AS "Status"
FROM
    "Artikeltabelle"
WHERE
    ( LOWER ( "Produkt" ) LIKE LOWER ('%'|| :qProdukt || '%' ) OR :qProdukt IS NULL )
AND
    ( LOWER ( "Lagerort" ) LIKE LOWER ('%'|| :qLagerort || '%' ) OR :qLagerort IS NULL )
AND
    ( LOWER ( "Art" ) LIKE LOWER ('%'|| :qArt || '%' ) OR :qArt IS NULL )
AND
    ( LOWER ( "Artikelfirma" ) LIKE LOWER ( '%'||:qArtikelfirma || '%' ) OR :qArtikelfirma IS NULL )
bekommst du ab 14 Tage vor dem Verfalldatum einen Hinweis, wieviel Tage die Ware noch gut ist. Ausserdem habe ich noch ein %-Zeichen vor die Parameter gesetzt, so findest du bei Eingabe von gour auch Aldi Gourmet
Anbei mal die Datei.
Gruß R

Re: Rechnen mit zwei Datumsfeldern

Verfasst: Do 6. Okt 2016, 05:40
von Moerser01
Hallo R
Super probiere ich heute Nachmittag gleich mal aus.
Danke.

Re: Rechnen mit zwei Datumsfeldern

Verfasst: Do 6. Okt 2016, 19:59
von Moerser01
Klappt ja super. Habe aber aus 14 Tage
30 gemacht. Bekommt man auch noch das Wort "noch" davor?

Gruß Christian