kod düzeltme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
zaxacm
Üye
Mesajlar: 129
Kayıt: 05 Ara 2005 05:48

kod düzeltme

Mesaj gönderen zaxacm »

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
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

böyle bir koruma ile programın en basit kıralan program ünvanını alabilir.
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; 
yazım hataları olabilir kolay gelsin.
zaxacm
Üye
Mesajlar: 129
Kayıt: 05 Ara 2005 05:48

Mesaj gönderen zaxacm »

Teşekkürler hemen deneyeceğim
Kullanıcı avatarı
Z.D.
Üye
Mesajlar: 104
Kayıt: 01 Nis 2006 01:48
Konum: İstanbul

Mesaj gönderen Z.D. »

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;

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;
kodu denemedim ama genel mantık bu şekilde olabilir.
Cevapla