insertle tableye kayıt açıyor fakat editle değişmiyor.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

benzer durumu bende yasamıstım insert ve edit icin aynı transaction kullanınca bende sorun bitti. iki ayrı transactionda eger ReadCommitted parametresi yoksa birbirlerini gormuyorlar
transaction nesnesi sag tık-> tran.editorde ReadCommitted isaretle
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
Yusuf AYDIN
Üye
Mesajlar: 69
Kayıt: 02 Oca 2004 05:45
Konum: Antalya

Mesaj gönderen Yusuf AYDIN »

Bana göre söylediğiniz hataya neden olan telk şey transaction gibi geliyor.

Çünkü yaptığınız tüm değişiklikler öncelikle transaction içinde tutulur.
Siz commit etmediğiniz müddetçe table ulaşmaz yada gerçek manada yazılmaz.
Post işleminden sonra. (After post) işleminde CommitReteanning in çalıştığına emin olun.

Yine tekrarlıyorum. Söylediğiniz hatalar, tamamen transaction ile ilgili.

Bir de post işleminden sonra Table.Refresh; yapmayı deneyin.
NOT
Table.Refresh yapınca table üzerindeki konumunuzu kaybedeceğinizi unutmayın.

Bu arada aynı hataya takıldığınızda detayları atlaya bilirsiniz.
Mesala kayıt yaptığınız GDB farklı EMS den baktığınız farklı GDB olabilir.
( Bir defasında bana olmuştu. Yedeklediğim GDB ye bakarken gerçek GDB ye kayıt yapmışım. Bunu 2 saat sonra fark edebilmiştim.)

Kolay Gelsin.
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

gkimirti yazdı:benzer durumu bende yasamıstım insert ve edit icin aynı transaction kullanınca bende sorun bitti. iki ayrı transactionda eger ReadCommitted parametresi yoksa birbirlerini gormuyorlar
transaction nesnesi sag tık-> tran.editorde ReadCommitted isaretle
insert ve edit icin aynı transaction ne demek olduğunu anlayamadım?
benim table min adı-> tblgircik, databasesi -> db,db'nin default transactionu->ibtransacion1 ,

bu durumda insert içinde edit içinde aynı transectionu kullanmış olmuyormuyum.?

birde kafama takılan ayrı bir husus databasede default transaction var
transactionda ise default database var. şimdi burda hangisini hangisine atamak lazım. ben databasenin default transactionuna ibtransaction1 i veriyorum. transactionun default databasesini boş bırakıyorum.
transactionun activini true yapıyorum.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

bende su sekilde sorunsuz calısmakta
database de default tran. icin bos bir tran. oluyor tum tran. ların default database i de database i gosteriyor :idea: bundan kaynaklanabilir.
ayrıca tran.ların active i false ne ise yarıyor diyorsan tam olarak bende bilmiyorum :roll:
ama bu sekilde hic sorunsuz calısıyor
ÜŞENME,ERTELEME,VAZGEÇME
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

Abi sizlerin değerli zamanını alıyorum ama. kafayı yiyecem ama öylede olmadı, ben şu anda başka bir konuya başlıyorum. biraz kafamı toparladıktan sonra bu konuya dönsem diyorum ama ben interbase de ilk defa program yazmıyorumki. database çökmüştür diye datayı sıfırdan oluşturdum.Ama yine olmadı

Neyse vardır bir kusurumuz ki, Allah(C.C) beni böyle olmuyacak bir yerde olması mümkün olmayan bir hata ile sınıyor. Haydi hayırlısı Buda Geçer Ya Hu
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

Şu konuda yardımlarınızı bekliyorum
halen çözemedim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhabalar yani hayırlı geceler.

Bizde aynı sorunu yaşıyoruz. Yazılanları okudum ve hatalarımı düzelttim. Düzeltmeden önce ana tabloya yeni bir kayıt girdiğimde sorunsuz giriş yapıyordu. Fakat bu tablodan bilgi kontrolu yaparak aidat ödeme girişlerini yapacak diğer formu açık o girdiğim kayda ait ödemeleri girmek istediğimde hata veriyordu. Kaydı bulamama gibi bi durum ingilizcem yok. Programı kapatıp açtığımda durum düzeliyor ve veri giriyordum. Anladım ki veri girişi yaptığımda veriler tabloya hemen yazılmıyor commit olması lazım geliyor. araştırmaya durdum ve yazılarınızı buldum.

Denilenlerin hepsini yaptım bu sefer kayıt giriyor önceki gibi hata vermiyor ama program kapanıp açılmadan veriler tablolara yazılmıyor.

Cevaplar burada bitmiş hata nerede acaba.



verileri görebiliyorum, kayıt girebiliyorum önceki sorun yok ama tabloya hemen yazmıyor prg. açıp kapamak gerekiyor. Sorunu çözemedim.

Teşekkür ve saygılarla

Kod: Tümünü seç

Fb/İbx kullanıyorum ve Delphi7

ibdatabase1->ibtransaction1 e bağlı
ibtransaction1->ibdatabase1 e bağlı ve bunlar active=true

ibdataset1 in afterpost tuna ibtransaction.commitretaining; yazılı.

ibtarnsaction1 lerin field editörleri reat committed olarak ayarlı.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

ibtransaction nesnesinin parametresi default olarak
concurrency
nowait

seklinde yani snapshot isaretli

bunu ReadCommitted yap
yani parametreler
read_committed
rec_version
nowait
olmalı
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

yukarıdaki geçen ayarlara ilave olrak, IBQuery kullanıp, bunun IbUpdateSQL ini bağlayıp SQL leri oluşturun. UpdateSQl i koymazsanız db ye parametreler yani filed ve değerleri gönderilmez
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

şu tip bir sorun olabilir mi acaba?

yeni kayıt ekliyorsunuz ve bu kaydın pk alanına trigger ile değer atıyorsunuz. büyük ihtimalle de tablonun afterinsert gibi bir olayında pk alana 0 değerini atıyorsunuz.

eğer bu şekilde yapıyorsanız yeni kayıt eklerken herhangi bir sorun çıkmayacaktır fakat tabloyu açıp kapatmadan yeni eklemiş olduğunuz bu kayıt üzerinde edit işlemini yapamazsınız. çünkü delphi tarafında bu kayıdın pk değeri 0 iken veritabanı tarafında bu alanın değeri generatorun değerine bağlı olarak çok daha değişik bir değer olacaktır.

sorunun bu olup olmadığını pk alanı grid üzerinde görülebilecek şekilde ayarlarsanız kolay bir şekilde görebilirsiniz.

yeni bir kayıt ekleyin ve pk alanın değerini hem grid üzerinde hem de ems den kontrol edin.

commit olayınıda tablonun afterpost olayında değil table1.post dediğiniz satırdan hemen sonra kullanmanızı tavsiye ederim.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Sevgili ustalarım merhabalar.

Gökmen abi transaction ayarları dediğin gibi readcommitted olarak ayarlı daha önce değildi ama yazdıklarınızı okuyunca düzelttim ve önceden girmeyen kayıtlar girmeye başladı.

çalışmam sp ve trigger ler ile stok prg. benzer (fahrettin ustamın makalesinde geçen) aidat ödeme durumlarını içeriyor. aidatlar toplanıyor. borclar yazılıyor, borç ödeme olursa borc hanesinden eksilme oluyor vs. basit bi deneme amaçlı yapıyorum öğrenmek için.

şu an için ibdatabase+transaction+ibdataset+datasource ile girişleri gerçekleştiriyorum.

aynı uygulamayı delphi tarafında değilde ibexpert tablo alanında bilgi girişleri yaptığımda commit mi yoksa roolback mı diye soruyor ve commit diyerek olayı gerçekleştiriyoruz. bunu delphi tarafında beceremiyorum. söylenenleri yazdığım halde hata verip kapanıp açılmak istiyor. bölece commit etmiş oluyor.

freeman ustam sizin dediğiniz yoldan query ile deneyeceğim
belki SP ve Trigger yapılarında hata vardır diyecem ama dediğim gibi commit olayı haric çalışıyor.

Teşekkür ve saygılarla
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

transaction bileseninde default action var burası hic degistirmezsen TACommit ayarlı bunu TARollBack yaparsan
kayıt girisi vesaire bitiminde bir onay butonu ile commit edersin
eger adam onaylamak istemezse kapatırsın formu yada roolback edersin

IbDataset.Transaction.Commit ve IbDataset.Transaction.Rollback seklinde kullanabilirsi,n
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhabalar.

Ustalarım bu olan sorunu verdiğiniz ayarlar doğrultusunda form üzerinde ib bileşenlerini tekrar oluşturarak düzenledim. Form yine eskisi gibi yaptı fakat çözümü ibdataset bileşeninin active durumunu açıp kapamakla düzelttim. formlar arası gezintide butonlara ibdataset1.active:=true veya false olayını ekledim ve olay çözüldü. Artık girilen bilgiler tabloya yazılıyor.

yardımlarınız için teşekkürler
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 181
Kayıt: 01 Oca 2008 05:34

Re: insertle tableye kayıt açıyor fakat editle değişmiyor.

Mesaj gönderen Commandx »

Konuyu hortlatacam maalesef ama ayni sorun bendede var.
bu sorun bende de var.
kayitlartablosu dediğim primary key olan master alanim ile Detay tablom dedigim icra tablom var.
Masteri ibdataset ile ayri transactiona bagli.
Detay tablom. "icra" da ibtable ile başka bir transactiona bağlı.
Master tablodan detay tablosu olan icra tablosuna insert ettigim ana bilgiler ad soyad tckimlik alanlarına insert oluyor buraya kadar sıkınt yok bunu post ediyorum fakat bu post dan sonra ikinci bir bilgi editi yaptigimda post ettikten sonra nedense veritabanına kaydetmiyor. Programı acip kapattiktan sonra detay tablosunu tekrar edit edip post ladigimda kayit gerceklesiyor. buna bir anlam veremedim.
Bende sorunu detay tablosu post edilmeden önce refresh ederek çözdüm.
refresh ile post edilince ibexper ile bakinca evet veri yaziliyor. Detay tablomda primary key yok, gerekte yok tckimlik kisiye ait detay sonucta..
Aynı tipte iki tablom daha var nedense onlarda bu hata olusmuyor, veritabanına direct edit post oluyor ama nedense icra dediğim tabloda olusan bu tuhaflıgin nedenini cozemedim.
3 gun kafa yordum, defalarca tablo olusturup sildim. şöyle bir sonuç = ibtable+ibtransaction = bu hataya neden oluyor
ibdataset+ibtransaction = hata yok ama detaylandiramiyorum, bana master detay lazım.. (biliyorum dostum ibdataset ile detaylayabilirim ama masterin gridine tikladigimda detayda tckimlik fieldi ile listelenebilir, fakat bu hata neden oluşuyor çözmem lazım)
Transactionlara commit retaining dahil hepsini denedim., Cached updates false Zaten.
bu hatayı tahminimce ibdataset ibtable ibtransaction bilesenlerinden birinde hata olduğunu düşünüyorum.
memory leak gibi ama bu leak sanki transactionun bir nedenden ram üzerinde componentin içine dogru sanki componentin bir fonksiyonunu boolean false yapıyor gibi yani bilemiyorum.
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: insertle tableye kayıt açıyor fakat editle değişmiyor.

Mesaj gönderen ertank »

Merhaba,

Yeni bir projede aynı yapıyı kurarak aynı sorunu görüyor musunuz?

Evet ise bu yeni projenizi database dosyası ile birlikte paylaşabilir misiniz?
Cevapla