accessde ayar isimli bir tablo ve tabloda tarih isimli bir alan yaptım date türünde.
anaform açılışında tarih alanına o günkü tarihi yazdırmak istiyorum ve daha sonra açıldığında 15 gün geçmişse demo uyarısı verdirmeyi düşünüyorum.
Yani
adoquery1.insert;
adoquery1.parameters.fieldbyname('tarih').value:=date;
if (adoquery1.parameters.fieldbyname('tarih').value) -date(bugünün tarihi)>15 then
showmessage('demo');
end
gibi birşey bu kodları tam olarak yazmama yardımcı olurmusunuz
kod düzeltme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
böyle bir koruma ile programın en basit kıralan program ünvanını alabilir.
soruna gelince.
yazım hataları olabilir kolay gelsin.
soruna gelince.
Kod: Tümünü seç
begin
if adoquery1.parameters.fieldbyname('tarih').isnull then
begin
adoquery1.insert;
adoquery1.parameters.fieldbyname('tarih').asdate:=date;
aqoquery1.post;
end;
if Date-15 > adoquery1.parameters.fieldbyname('tarih').asdate then
showmessage('demo');
end;
bence bu kodda mantık hatası var. yani yalnızca kurulum tarihinden şimdiki tarih 15 günü aşmışşsa gibi + bügünün tarihi kurulum tarihinden küçükse de karşılaştırılmaya eklenmeli
çünkü sistem saatiyle oynayabilir, geri alır istediği kadar kullanır. mesela şuan bulunduğumuz tarihi ve kurulum tarihini gün olarak hesaplayalım.
yılı aya, ayı güne çevirip;
kodu denemedim ama genel mantık bu şekilde olabilir.
çünkü sistem saatiyle oynayabilir, geri alır istediği kadar kullanır. mesela şuan bulunduğumuz tarihi ve kurulum tarihini gün olarak hesaplayalım.
yılı aya, ayı güne çevirip;
Kod: Tümünü seç
Var
Simdi_Tarih: integer;
Kurulum_Tarihi: integer;
Yil, Ay, Gun: word;
Ado_Tarihi: TDateTime;
Begin
/// Eğer Vt de bu alan boşsa bugünün tarihini kayıt edelim //////
If Not Adoquery1.fieldbyname('tarih').asdate Then Begin
Adoquery1.Edit;
Adoquery1.fieldbyname('tarih').asdate := Date;
Adoquery1.Post;
End;
Ado_Tarihi := Adoquery1.parameters.fieldbyname('tarih').asdate;
/// Bugünün tarihini gün olarak hesaplayalım //////
DecodeDate(Date, Yil, Ay, Gun);
Simdi_Tarih := Yil * 12 * 30 + Ay * 30 + Gun;
/// Vt deki kurlum tarihin gün olarak hesaplayalım //////
DecodeDate(Ado_Tarihi, Yil, Ay, Gun);
Kurulum_Tarihi := Yil * 12 * 30 + Ay * 30 + Gun;
/// Karşılaştıralım ////////////////////////////////////
If (Kurulum_Tarihi > Simdi_Tarih) Or ((Simdi_Tarih - Kurulum_Tarihi) > 30) Then Begin
ShowMessage('15 Günlük Deneme Süreniz Doldu');
End;