Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#23

Re: Access - monatlich neue DB erstellen

  Alt 30. Aug 2006, 16:13
Zitat von stephan3309:
Von der Function Neuer_Monat bekomme ich anscheind keinen Wert.
Wenn ich einen Monatswechsel (z.b. durch ändern der systemzeit auf kurz von Monatswechsel) simuliere,
tut sich nichts.

Habe folgendes versucht um den Fehler einzugrenzen:
Delphi-Quellcode:
if Neuer_Monat then Edit1.Color := clred
else
Edit1.Color := clblue;
Eigentlich sollte ja dann beim Übergang vom 31. zum 1. Jeden Monats etwas passieren,
aber das Textfeld wird weder rot noch blau, es bleibt bei der starteigenschaft (grau).
1. Vielleicht fehlt noch Edit1.Refresh;
2. "bekomme ich keinen Wert" kann so nicht stimmen: einen Wert (true oder false) bekommst Du mit Sicherheit; denn eine Exception kann es in dieser Funktion nicht geben.
3. Ich weiß leider nicht, wann/wie ein Delphi-Programm durch 'Now' das Win-Datum erhält (und habe keine Lust, in SysUtils.pas o.ä. und der Win-API zu suchen).
4. Hast Du einmal den Debugger durch diese Funktion laufen lassen und die einzelnen Werte geprüft? Dann müsstest Du doch sehen, was läuft.

Mach doch einmal folgenden Test:
Delphi-Quellcode:
// gezielt ein Datum übergeben
function TForm1.Neuer_Monat(Vergleich: TDateTime): Boolean;
var Year, Month, Day: Word;
// Vergleich: TDateTime;
begin
  // bei dieser Variante könnte man auf die Variable Vergleich verzichten
  // und DecodeDate(Now...) schreiben; aber zur Vergleichbarkeit lassen wir das
// Vergleich := Now;
  DecodeDate(Vergleich, Year, Month, Day);
  // Rückgabe: Day = 1 => Neuer_Monat ja
  // Rückgabe: Day <> 1 => Neuer_Monat nein
  Result := Day = 1;
end;
// und von einem Hilfsprogramm aus testen nach dem folgenden Motto:
if Neuer_Monat( StrToDateTime('01.01.2000') )
then ShowMessage('true')
else ShowMessage('false');
Viel Erfolg! Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat