hatırlatma ve timer

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
BOGACHAN
Üye
Mesajlar: 38
Kayıt: 12 May 2004 02:37
Konum: istanbbul

hatırlatma ve timer

Mesaj gönderen BOGACHAN »

Selemun Aleykum
Öncelikle herkeze hayırlı ramazanlar diliyorum.
Bir ajanda programına anaforma hatırlatma için sorgu çalıştırıyorum. sorguyu devamlı çalışması için timer nesnesine yazıyorum. Fakat soprgulamaya saat kriteri konulunca herhangi bi mesaj vermiyor. saati kaldııp sadece tarih oluncada devamlı veriyor mesajı. İşin içinden çıkmam için yardımcı olabilirmisiniz. Yazdığım kod aşşağıdadır.

Kod: Tümünü seç

procedure TAnaform.Timer1Timer(Sender: TObject);
var
a:integer;
sat:TTime;
begin
sat:=time;
query1.close;
query1.sql.clear;
query1.sql.add('select konu from ajanda');
Query1.sql.Add('where Hatirlatma=:Hatirx and Tarih=:tarihx and Saat=:saatx');
query1.Params.Items[0].Asinteger:=0;
query1.Params.Items[1].AsDate:=datetimepicker1.Date;
query1.Params.Items[2].Astime:=(sat);
query1.Open;
query1.First;
for a:=1 to Query1.RecordCount do
begin
showmessage('Bu güne ait '+Query1.FieldByName('KONU').AsString+' konulu notunuz vardır');
query1.Next;
end;
end;
[/code]
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

öncelikle veri tabanına bir alan ekleyip hatırlatma işlemi tamamlandığında o alana hatırlatıldı diye işeretlet bence. ve saat sorgulamasınıda

Kod: Tümünü seç

simdikisaat > hatirlaticalaksaat  
şeklinde değiştirirsen olur bence
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 01:14

Mesaj gönderen mucar »

Aleyküm selam. Bu şekilde hatırlatma yapacak olursan, bütün randevular kaçar :lol: Şayet Senin saat 15:00 te bir randevun varsa tam 15:00 te hatırlatacak. Bu yüzden hbahadir'in da dediği gibi hatırlatma saatinden sonraki bütün hatırlatmaları göstermesi iyi olacaktır.

Kod: Tümünü seç

Query1.sql.Add('where Hatirlatma=:Hatirx and Tarih=:tarihx and Saat>:saatx');  
şeklinde.
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
BOGACHAN
Üye
Mesajlar: 38
Kayıt: 12 May 2004 02:37
Konum: istanbbul

değidiğiniz gibi yaptım

Mesaj gönderen BOGACHAN »

hbahadir yazdı:öncelikle veri tabanına bir alan ekleyip hatırlatma işlemi tamamlandığında o alana hatırlatıldı diye işeretlet bence. ve saat sorgulamasınıda

Kod: Tümünü seç

simdikisaat > hatirlaticalaksaat  
şeklinde değiştirirsen olur bence

Kod: Tümünü seç

procedure TAnaform.Timer1Timer(Sender: TObject);
var
a:integer;
sat:TTime;
begin
sat:=time;
query1.close;
query1.sql.clear;
query1.sql.add('select Konu, Tarih, Saat from ajanda');
Query1.sql.Add('where Hatirlatma=:Hatirx and Tarih=:tarihx and Saat>:saatx and Hatirlatildi is null');
query1.Params.Items[0].Asinteger:=0;
query1.Params.Items[1].AsDate:=datetimepicker1.Date;
query1.Params.Items[2].Astime:=(sat);
query1.Open;
query1.First;
for a:=1 to Query1.RecordCount do
begin
If MessageDlg('Bu güne ait '+Query1.FieldByName('KONU').AsString+' konulu notunuz vardır', mtWarning, [mbyes, mbno],0) = mryes then
 begin
 query2.Close;
 query2.SQL.Clear;
 query2.SQL.Add('update ajanda set Hatirlatildi=1');
 query2.SQL.Add('where Tarih=:tarx  and Konu=:konx and Saat=:satx');
 query2.Params.Items[0].Asdate:=datetimepicker1.Date;
 query2.Params.Items[1].Asstring:=Query1.FieldByName('KONU').AsString;
 query2.Params.Items[2].Astime:=Query1.FieldByName('Saat').AsDateTime;
 query2.ExecSQL;
 end
 else
query1.Next;
end;
end;
Bu şekilde bi sorun yok düzgün çalışıyor. Yalnız ben genede cep telefonlarınd olduğu kurduğum saatte mesaj vermesini istiyorum. Bu şekilde o gün içinde bu saatten sonraki üm mesajları ekrane getirecek. Zaten kişi ona hatırlatılması istenilen saate mesaj yazacak yanlışmı düşünüyorum. Cevaplarınız için teşekkürler
Kullanıcı avatarı
mnt
Üye
Mesajlar: 57
Kayıt: 30 Eki 2005 12:58
Konum: Kocaeli

Mesaj gönderen mnt »

Saat>:saatx yerine 2 parametre kullan..
Saat>:saatx1 , Saat<:saatx2 , saatx1 ile saatx2 arasındaki fark Timer1.Interval dan en az 2 kat büyük olacak şekilde ayarlamalısın..

Not: Programın sürekli çalıştırıldığını varsayıyoruz . Ara verilirse ilk sorgusunda tek parametreli kullanmak gerekecek..
Mustafa
Cevapla