Birden fazla Datetimepicker ile birden fazla alana tarih ata

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Birden fazla Datetimepicker ile birden fazla alana tarih ata

Mesaj gönderen hdayi »

Merhaba,

aynı tabloda birden fazla tarih alanım var ve bu alanlara datetime picker ile atama yapmak istiyorum.
datasource'un ondatachange olayına aşağıdaki kodu yazdım.

Kod: Tümünü seç

rocedure Tdm.dsnikahDataChange(Sender: TObject; Field: TField);
begin
frmgenel.dtpbeyan.Date:=tblnikahvatandasbeyantar.AsDateTime;
frmgenel.dtpevlenme.Date:=tblnikahevlenmetarihi.AsDateTime;
ButonDurum;
end;
onupdate data koduna ise

Kod: Tümünü seç

procedure Tdm.dsnikahUpdateData(Sender: TObject);
begin
tblnikahvatandasbeyantar.AsDateTime:=DateOf(frmgenel.dtpbeyan.Date);
tblnikahevlenmetarihi.AsDateTime:=dateof(frmgenel.dtpevlenme.Date);
end;


kodunu yazdım. datetimepicker'ların onenter ve onclick'lerinde de tabloyou edit moduna geçiriyorum.

üst satırdaki datetimepicker'da (burada dtpbeyan oluyor) bir problem yok. Ancak alt satıra yazmış olduğum datetimepşcker'da (dtpevlenme) problemim var.

Tarihi değiştirip te post ettiğim zaman post etmeden önce tablodaki tarihi dattimepicker'a atıyor ve sonra bu değeri tekrar tabloya atıyor. Tabloda ilk girilen tarih ne ise devamlı o kalıyor değiştiremiyorum.

İmdaaaaat
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

- Burada sorunun cevabına geçilmeden önce elenmesi gereken bazı ihtimaller var...

- DateTimePicker'leri copy/paste ile çoğalttıysanız, önceki DateTimePicker'in onEnter / onExit procedure'leri ortak kalmış olabilir...

- Diğer türlü datetimepicker'in değerini bugüne veya veritabanından okutma şartlarını tek DateTimePicker düşünerek yapmışsanız, ikincisi daha gerçekleşmeden devreye giriyor olabilir... Aksi halde aynı eventler altındaki aynı tipteki atamalarda farklı sonuçlar görülmemesi lazım... Mutlaka gözden kaçmış bir nokta olmalı...
Resim
Resim ....Resim
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

çözüldü.
oldukça basitmiş, mrmcop'un dediği gibi imiş. update data çalıştığında ilk satır datachange'i çalıştırıyor ve bu da hataya yol açıyordu. updatedata'daki satırları if'lendirice çözüldü.

Teşekkürler

Kod: Tümünü seç

procedure Tdm.dsnikahDataChange(Sender: TObject; Field: TField);
begin
frmgenel.dtpbeyan.Date:=tblnikahvatandasbeyantar.AsDateTime;
frmgenel.dtpevlenme.Date:=tblnikahevlenmetarihi.AsDateTime;
ButonDurum;
end;

procedure Tdm.dsnikahUpdateData(Sender: TObject);
begin
if tblnikahvatandasbeyantar.AsDateTime<>DateOf(frmgenel.dtpbeyan.Date)
    then tblnikahvatandasbeyantar.AsDateTime:=DateOf(frmgenel.dtpbeyan.Date);
if tblnikahevlenmetarihi.AsDateTime<>dateof(frmgenel.dtpevlenme.Date)
    then tblnikahevlenmetarihi.AsDateTime:=dateof(frmgenel.dtpevlenme.Date);
end;
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Küçük bir ek:
iki tarih alanını da aynı anda değiştirmeye kalkınca, alt satırdakiler yine değişmiyor.
datetimepickerların onexite olayında tabloyu post ettirince bu problemde halloluyor.
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Cevapla