ibdataset te ilginç bir durum

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

ibdataset te ilginç bir durum

Mesaj gönderen y.kulac »

s.a.
firebird vt kullanıyorum. bu vt de deki bir tabloda alan olarak adisoyadi ve islemyili var.
önce isimleri ve işlem yılını kaydediyorum.

adisoyadi= ali veli,
islemyili=2004,

adisoyadi=ali veli,
islemyili=2005,

yani iki tane isim ve işlem yılı oluyor.2004 ve 2005 buraya kadar bir sorun yok. kaydedilen bir ismi aşağıdaki kod ile buluyorum

Kod: Tümünü seç

ibdataset1.Close;
ibdataset1.selectSQL.Clear;
ibdataset1.selectSQL.Add('Select * From IZIN');
ibdataset1.selectSQL.Add('where  ISLEMYILI ='''+CeComboBox1.Text+'''');
ibdataset1.selectSQL.Add('and ADISOYADI LIKE '''+CeEdit2.Text+'%'' order By ADISOYADI');
ibdataset1.Open;
buluğum bu kayıttta aşağıdaki kodu çalıştırınca;

Kod: Tümünü seç

ibdataset1.Edit;
ibdataset1TOPLAM.Value:= ibdataset1IZIN1.Value+   ibdataset1IZIN2.Value+  ibdataset1IZIN3.Value+ibdataset1IZIN4.Value+ibdataset1IZIN5.Value+
ibdataset1IZIN6.Value+ibdataset1IZIN7.Value+ibdataset1IZIN8.Value;
ibdataset1KALAN.Value:= ibdataset1IZINHAKKI.Value-ibdataset1TOPLAM.Value;
ibdataset1.Post;
hangi isimde işlem yaptıysam o isme ait bütün işlem yıllarının hepsine benim atadığım değeri veriyor. :?:
bu arada primary key adisoyadi.
neler öneririsiniz. iyi çalışmalar
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Tabloda unique (eşsiz) bir anahtar alanın vardır değil mi? Yok ise her iki alandan oluşan bir key - index (anahtar alan) vermelisin.

IBDataset in UpdateSql ını bir incelemnde fayda var! Sadece adisoyadi alanına göre bakıyorsa yaptığı işlem doğrudur. Oraya ayrıca and operatörü ile islemyili nı da eklemen lazım :idea:
Ayrıca vt deki alanların toplamını tutan bir alana ihtiyaç yok. sadece vt yi hantallaştırır :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

rsimsek hocam. kaydet butonuna tıklayınca sadece adı soyadı ve işlem yılına göre bulunan kaydın toplamını yaptırıyorum. işlem yılı ile ilgi hiçbir şey yapmıyorum. ama o bütün işlem yıllarını aynı yapıyor. yani daha önceki işlem yılı 2005, 2006, 2007... ise o ismin bütün işlem yıllarını örneğin 2004 yapıyor. aynı kaydı 2005 yılına göre buldurunca bu sefer bütün işlem yılları 2005 oluyor.

post işlemi yaparken zaten bulunan kaydın işlemini yapması gerekmez mi?
iyi çalışmalar.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

rsimsek yazdı:Tabloda unique (eşsiz) bir anahtar alanın vardır değil mi?
bu soruyu bende bir kez daha sana sormakta fayda görüyorum.
eğer senin pk alanın adsoyad ise o zaman ibdataset in update sqli büyük ihtmalle şöyledir.

Kod: Tümünü seç

update TABLO set YIL =:YIL
Where ADISOYADI = :ADISOYADI
bu sayede sen bir kaydı değiştirmeye çalıştığında aynı ada sahip olan bütün kayıtların yılı otomatik olarak değişir.

tabloya ID diye bir alan ekle ve bunu pk yap. sorun kalmaz o zman
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

sadettinpolat hocam
dediğiniz gibi tabloya ID diye bir alan ekledim ve bunu pk yaptım ve bu alanı autoinc yaptım. sorun çözüldü. :lol:
herkese teşekkür eder iyi çalışmalar dilerim.
Cevapla