Herhangi bir tarihte iki saat arasında süre aşımı var mı? var ise hangi saatte olmuş, burayı çözdüm;
Takıldığım nokta ise saat 00:00:00 ile 01:00:00 sorun yoksa döngü ile 01:00:00 ile 02:00:00 arası kontrol edilecek varsa uyarı yoksa sonraki saat dilime bakılacak bu şekilde yirmi dört saati kontrolü sağlanacak.
Kod: Tümünü seç
procedure TForm11.SpotClick(Sender: TObject);
var
Sure1, Sure2: Integer;
Total, Fazla, Saat1, Saat2: TTime;
Tnt, Rek, Spot: String;
begin
try
if Form1.ListView1.Items.Count > 0 then
begin
Sure1 := 0;
Sure2 := 0;
Saat1 := StrToTime('00:00:00');
Saat2 := StrToTime('01:00:00');
with Form1.Ayarlar do
begin
Close;
SQL.Clear;
SQL.Add('Select * From AYARLAR');
Open;
if Not IsEmpty then
begin
Tnt := FieldByName('TANITIMMAX').Value;
Rek := FieldByName('REKLAMMAX').Value;
Spot := FieldByName('SPOTMAX').Value;
end;
for Sure1 := 1 to 24 do
begin
with Form1.Playlist do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM PLAYLIST');
SQL.Add('Where ICERIK Like ' + QuotedStr('%' + 'Tanıtım' + '%'));
SQL.Add('And YTARIH=:Tarih And START BETWEEN :Time1 And :Time2');
ParamByName('Tarih').AsDate := StrToDate(Form1.Tarih.Caption);
ParamByName('Time1').AsTime := IncMinute(Saat1, Sure1);
ParamByName('Time2').AsTime := IncMinute(Saat2, Sure2);
Prepared := True;
Open;
if Not IsEmpty then
begin
while Not Form1.Playlist.Eof do
begin
Next;
Total := Total + StrToTime(FieldByName('YDURATION').Value);
Fazla := (Total - StrToTime(Rek));
end;
end;
end;
end;
if Total > StrToTime(Tnt) then
begin
Application.MessageBox
(Pchar((TimeToStr(Saat1)) + ' ve ' + (TimeToStr(Saat2)) +
' Saatleri Arasında Tanıtım Süresini ' + (TimeToStr(Fazla)) +
' Aştınız!'), 'Süre Kontrol!', MB_Ok or 0);
end;
end;
end;
except
end;
end;