datetimepicker ile database deki tarih alanı eşitse

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ertline
Üye
Mesajlar: 137
Kayıt: 23 Nis 2005 09:15
Konum: Bartın
İletişim:

datetimepicker ile database deki tarih alanı eşitse

Mesaj gönderen ertline »

merhaba arkadaşlar çok kolay bir şey belki ama
çok denedim olmadı bir sorayım dedim:

formumda bir datetimepicker var verileri kaydediyorum
eğer formdaki datetimepicker da bulunan tarihle veritabanında kayıtlı bulunan tarih aynı ise düzeltme işlemi yaptırmak isityorum
yazdığım kod şu şekilde

if form5.DateTimePicker1.date=data.cariharaket.FieldByName('TARIH').AsDateTime THEN BEGIN
data.cariharaket.FieldByName('kalan').AsFloat:=data.cariharaket.fieldbyname('esastutar').AsFloat-data.cariharaket.fieldbyname('odenentutar').AsFloat;
END ELSE BEGIN
sHOWMESSAGE('Yapılan İşlem Tarihi İle Aynı Tarih te Değil, Yapılan işlem tarihini hareket yapılan tarihe getiriniz ve Kaydet ya da Düzelt butonlarına tıklamadan Ödenen Tutar alanındaki tutarı siliniz...!!!');
end;



hayırlı çalışmalar
Kullanıcı avatarı
otherside
Üye
Mesajlar: 65
Kayıt: 11 Mar 2005 02:48
Konum: istanbul

Mesaj gönderen otherside »

normalde bu sorun yok gıbı gozukuyo kaydederken bı sorun oalbılır
sole bı denesen
if adotable1tarih.value <> datetimepicker.date then begin
showmessage(); end else begin ed;
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
date ve datetime tipleri arasında karşılaştırma yaptığınızdan dolayı olabilir.
şöyle bir deneyin

Kod: Tümünü seç

if formatdatetime('dd.mm.yyyy', form5.DateTimePicker1.date) =
formatdatetime('dd.mm.yyyy', data.cariharaket.FieldByName('TARIH').AsDateTime) THEN
sanırım çözülecektir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

bence en büyük şey unutulmuş

yani veri tabanını siz baştan sona sorgulamıyorsunuz ki ?
sadece hali hazırdaki kayıt ile datetimepicker eşit ise bu kod düzgün çalışabilir.
chance olayına bir sql sorgusu yazarak işi halledebilsiniz.

Saygılarımla
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
ertug
Üye
Mesajlar: 82
Kayıt: 10 Ara 2004 05:41

Mesaj gönderen ertug »

Burada ne karşılaştırdığınıza dikkat ediniz. aslangeri arkadaşımızın da dediği gibi

Kod: Tümünü seç

if form5.DateTimePicker1.date=data.cariharaket.FieldByName('TARIH').AsDateTime THEN 
derken sadece tarihi değil saati de karşılaştırıyorsunuz.

DateTime aslında reel bir sayıdır. Noktanın solundaki kısım tarihi, sağındaki kısım ise saati tutar. Dolayısıyla tarih karşılaştırırken yalnızca noktanın solunu karşılaştırınız:

Kod: Tümünü seç

if Trunc(form5.DateTimePicker1.date) = Trunc(data.cariharaket.FieldByName('TARIH').AsDateTime) THEN 

Kolay gelsin
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Merhaba,

Bir süre önce bendede yapmıştı, kontrolü aşağıdaki gibi deneyebilirmisiniz....

if Datetostr(form5.DateTimePicker1.date)=data.cariharaketTarih.Text then
begin
...
end
else
begin
.
.
end;

şeklinde .... :D

Ama Kaydedilmiş bulunan Veri Kaydedildiği zamanki windows Tarih Sistemi Farklı Olabilir bunuda göz önünde bulundurunuz ....

saygılarımla,
Cevapla