Ich habe jetzt mal die Datenbankabfrage in eine andere Funktion gelegt. Da ich noch am Anfang dieser Verarbeitung bin und genau aus diesem Grund auch jetzt schon frage, ist das mit der vielen arbeit nicht so das Problem. Ich habe zum jetzigen Zeitpunkt lediglich die Funktion geprüft und dessen Inhalt getestet. Das was ich vorhabe, funktioniert und muss halt jetzt umgesetzt werden.
Ich habe zur Zeit nur eine Testprogramm geschrieben um die Timer Komponenten und die E-Mail funktion zu Simulieren und das mit Erfolg. Ich will nur der Übersichthalber nicht den Gesamten Code hier einstellen, weil sonst eh keiner mehr weiß was ich will.
Ich habe jetzt z.B. mal die Datenbankabfrage der Uhrzeit ausgegliedert und als Funkton ausgelagert. Damit sieht man vieleicht was ich vorhabe.
Zu der Umwandlung von Time nach String etc. das kommt nur weil ich noch in einem Testprogramm probiere und auch die gesamte
Exception Behandlung und auch denn Rest des Programmteils noch gar nicht angepasst habe. Ich habe das ganze einfach mal schnell zusammen getippt, um überhaupt mal meinen Gedankengang zu prüfen.
Hier mal den Schritt den gerade veändert habe um die
DB Abfrage Uhrzeit zu realisieren..
Delphi-Quellcode:
//die function SetTimerInterbalEMailStart wird durch das FormCreate ausgelößt
function TForm1.SetTimer1IntervalEMailStart : Boolean;
var
TimeSend : TTime;
const
HalfDay = 43200000;
begin
SendEMailTimer1.Enabled := false;
TimeSend := ReadTimerTime(1); //'22:57:00';//Nächste Startzeit
if TimeSend > Time then //Prüfung ob Sendezeit für aktuellen Tag schon vorbei
begin
//Zeitpunkt für nächsten Step festlegen
SendEMailTimer1.Interval := MilliSecondsBetween(frac(Time),
frac(TimeSend));
...
function TForm1.ReadTimerTime(Timer : integer) : TTime;
begin
Qry_TimerTime.SQL.Text := 'SELECT ZEIT FROM EMAILGRUPPEN WHERE ID = :Id';
Qry_TimerTime.ParamByName('Id').AsInteger := Timer;
Qry_TimerTime.Open;
Result := Qry_TimerTime.FieldByName('ZEIT').Value;
end;
Gruß Jens