IBDataset update işlemini geri alıyor...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

IBDataset update işlemini geri alıyor...

Mesaj gönderen aLonE CoDeR »

Merhaba.
Daha önce konuşulmuş konu, yeni topic açıp açmama konusunda tereddüt ettim aslında ancak yeni topic açmakta karar kıldım..

@t-hex IbTable bileşenlerinde bir bugdan ötürü update sorunu yaşandığını yazmış ve IBDataset kullanmak gerektiğini belirtmiş.Oysa ben tam tersini yaşıyorum, IBTable ile herhangi bir sorun yaşamazken IBDataset ile update sorunu yaşıyorum..Tabloya kaydedip Transactionu Commitretaining yapıyorum ama kayıt önceki haline dönüyor..
Fikirleriniz için şimdiden teşükkerler..
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

IBTable bileşenlerindeki sorun biraz farklı, yeni kayıt açıyorsunuz bir iki alanı dolduruyorsunuz, post ediyorsunuz, kaydediyor. Başka bir kayıda konumlanmadan tekrar edit moduna girip bir değişiklik daha yapıyorsunuz post diyorsunuz o zaman ikinci değişiklikler veritabanına işlenmemiş oluyor. Program çalışırken bir sorun yok gibi görünüyor ama açıp kapatınca son değişikliklerin alınmadığını görüyorsunuz. Ben bu sorunu IBDataset kullanarak aşmıştım. Belki IBDataset'ten değil başka bir nedenden kaynaklanıyordur?
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Senaryo şu şekilde;
- Her kayıt işleminden sonra Commitretaining yapılıyor...
- Yeni kayıt eklerken herhangi bi sorun yok...
- Kayde edit ettiğimde IBTable bileşeni kullandığımda sorunsuz yansıyor tabloya, ancak IBDataset kullandığımda kayıt önceki halini alıyor...

İlginiz için teşekkürler...
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

sorun, trigger gibi veritabanı tarafından yapılan işlemlerden dolayı kaynaklanıyor. bu değişikliklerden delphi tarafının haberi olmadığı için üretilen sql kodu yanlış veya geçersiz oluyor. konu ile ilgili konuşmuştuk buralarda..
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Evet bahsettiğiniz konuyu hatırlıyorum ancak Triggeri Inactive yapmama rağmen sorun düzelmiyor, tabloya bağlı başka herhangi bir trigger ya da muadili birşey yok..
İlginiz için teşekkürler..
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

primary key değeri delphi tarafından mı atanıyor yoksa vt tarafından mı?
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Autoinc alan var ancak primary key atamadım..Bu işlemi de Trigger yapıyor..
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

ibdatasetteki updatesql kodunuz nedir ?
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Kod: Tümünü seç

update PRESENTTRANS
set
  APPCODE = :APPCODE,
  CHECKWHOIS = :CHECKWHOIS,
  CODE = :CODE,
  DESCRIPTION = :DESCRIPTION,
  DOCNO = :DOCNO,
  FIXDATE = :FIXDATE,
  FOREIGNTOTAL = :FOREIGNTOTAL,
  ID = :ID,
  PRESENTTRANS = :PRESENTTRANS,
  PRIVATECODE = :PRIVATECODE,
  TITLE = :TITLE,
  TOTAL = :TOTAL,
  TRANSDATE = :TRANSDATE,
  TRANSTYPE = :TRANSTYPE
where
  APPCODE = :OLD_APPCODE and
  CHECKWHOIS = :OLD_CHECKWHOIS and
  CODE = :OLD_CODE and
  DESCRIPTION = :OLD_DESCRIPTION and
  DOCNO = :OLD_DOCNO and
  FIXDATE = :OLD_FIXDATE and
  FOREIGNTOTAL = :OLD_FOREIGNTOTAL and
  ID = :OLD_ID and
  PRESENTTRANS = :OLD_PRESENTTRANS and
  PRIVATECODE = :OLD_PRIVATECODE and
  TITLE = :OLD_TITLE and
  TOTAL = :OLD_TOTAL and
  TRANSDATE = :OLD_TRANSDATE and
  TRANSTYPE = :OLD_TRANSTYPE
şeklinde..
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

where kısmındaki bu şartların hepsini sen mi koydun ? ben genelde id' yi dikkate alırım. her neyse.

where kısmında belirttiğin alanların tümünü grid üzerinde gözükecek şekilde ayarla, yeni kayıt ekle, commit et. ardından ibexperti aç ve yeni eklediğin kayıdın ilgili alanlarıyla grid üzerinde gösterilen değerleri karşılaştır. bunların en az birinin farklı olması lazım. update işlemi bu nedenle olmuyor.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Evet, sorun bundan kaynaklanıyor, where şartındaki alanları kendisi oluşturduktan sonra müdahale etmedim..IBDataset'i de daha önce neredeyse hiç kullanmamıştım, where şartında sadece id'yi bırakınca sorun düzeldi..
Teşekkürler..
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

IBDataSet te Generate SQL yaparken sol tarafta tanımladığınız Primary Key sağ tarafta da tüm field ların seçili olduğuna dikkat etmelisiniz. Hatta SQL ler oluşturulduktan sonra tek tek kontrol etmek zaman kaybınızı önleyecektir.. :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

@rsimsek;

İlginiz ve bilgilendirdiğiniz için teşekkürler.Primary Key tanımlamasını özellikle yapmamıştım, aslında Trigger kullanma konusunda da kararsızdım, daha önce autoinc alan için kullandığımız table bileşeninin bir property'si vardı ve tüm işlemleri o hallediyordu.Bu kez şartlar değişti, bindik bi alamete bakalım :)

Kolay gelsin.
Cevapla