Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
pc saatini değiştirerek raporlamayı ve vt kayıtlarını bozmak hk.
#1
arkadaşlar veritabanı kayıtların tarih ve saate göre kaydediyoruz ve tarih saate göre raporluyoruz.

yaşanmış bir olayda kullanıcı  günün belli bir saatinde tarihi  2075 olarak değiştiriyor sonra geri düzeltiyor. bu değiştirilen zaman aralığında 
oynanan oyunlar raporlarda görünmüyor bu tip bir sorun için çözüm öneriniz var mı acaba.

benim aklıma prg ilk çalışmasında son id numarasını gün boyunca saklmak geliyor sonra raporları id ye göre yapmak geliyor ama 
başka bir çözüm var mı merak ettim 

saygılarımla.
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#2
Alttaki yöntemde,Raporlamayı alan kişinin Remote IP sini ve Raporlama yaptığı Saati Veritabanı yöneticisinde Trigger ile Kaydını bir sütunda tutun, Kullanıcı istediği kadar 2075 yapsın dursun.
NEW.RAPORLAMA_TARIHI= current_timestamp ; (Alanınız Timestamp ise ) 
NEW.REMOTE_IP=RDB$GetContext('SYSTEM','CLIENT_ADDRESS') ;


Veya Firebird de Şöyle Bir Yöntem Kullanıyorum. Server Saatini Sistemden Çekin
Rapor alacak Kişinin Kullandığı Clientte Rapor aldığı Butonda Raporu Ona göre düzenlersiniz
var
  DE:STRING;
 TAR:TDATETIME;
begin
 try
 UniConection1.Open;
   UniQuGETDATETIME.Close;
    UniQuGETDATETIME.SQL.Clear;
   UniQuGETDATETIME.SQL.Text := 'select current_date, current_timestamp from rdb$database;';
   UniQuGETDATETIME.Open;
  DE :=UniQuGETDATETIME.FieldByName('current_timestamp').Value;
   UniQuGETDATETIME.Close;
   TAR:=STRTODATETIME(DE);
 finally
 EDIT2.Text:= (DE);
 EDIT3.Text:= DATETOSTR(TAR);
 end;
end;
Cevapla
#3
Merhaba,

Kullandığınız veri tabanı nedir.
Eğer ms sql server kullanıyorsanız bu işi sql server tarafına yıkabilirsiniz.
Tablonuza insert yaparken ilgi tarih alanını "getdate()" fonksiyonu ile kayıt edebilirsiniz.


ikinci seçenek olarakta tabloda ilgili alana default tanım olarak getdate() tanımlayabilirsiniz.

ALTER TABLE [dbo].[TabloAd] ADD  CONSTRAINT [DF_TabloAd_GIRENTARIH]  DEFAULT (getdate()) FOR [GIRENTARIH]

bu şekildeki yapıda bu alana bir değer yazmazsanız o anki tarih ve saati değer olarak alacaktır.
Cevapla
#4
firebird kullanıyorum delphi7 ile
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#5
Veritabanına kayit yapildigi anda tablonun ilgili alanina varsayilan deger olarak current_date yaparsaniz. programdan tarih gondermenize gerek kalmaz. veri girisi oldugunda serverin tarihi neyse onu atacaktir.
Cevapla
#6
internete bağlı olmayan pc de de aynı sonucu alırmıyız.
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi