Sizce Ne Yapılmalı ? Doğru Mu ???

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Sizce Ne Yapılmalı ? Doğru Mu ???

Mesaj gönderen hi_selamlar »

S.A. Arkadaşlar..

F-i-r-e-B-i-r-d- -2-.-0-
c-x-G-r-i-d

Ben Ana-Detay ile ilgili basit bir deneme yaptım.

CachedUpdate IBDatasetlerde =FALSE

Karşılaştığım Sorunlar ve Çözümler
S1:IBDataset leri aynı Transaction a bağlanmadığı takdirde master ID alınamıyor ve doğal olarak detay kayıt girilemiyor.
C1:IBDatasetleri aynı Transaction a bağladım sorun çözüldü.


S2: Örnek olması için basit bir program geliştirdim. bir ana form. üzerinde grid var. kullanıcı kayıt düzelt diyor. yeni bir form çıkıyor ve verileri ekleyip siliyor. iptal diyince (yaptığı değişiklikleri kayıt etmeyecek.)
aşağıdaki işlem yapılıyor.

Kod: Tümünü seç

Transaction.RollbackRetaining;
IBDataset.Refresh;
işlemi yapılıyor. ve form kapatılıyor.

ana forma baktığımda iptal edilen kayıt görünüyor.
fakat formu kapatıp tekrar açtığımda ise o kayıt gözükmüyor.

ama CachedUpdate = TRUE yapılınca grid üzerinde formu kapatıp açmadan değişen bilgi görünüyor.

C2 Yardım ?

• C1 İşlemi sizce doğrumu ?
• Veri tabanlarını kapatıp açmadan verileri refresh etmek nasıl olur?
• Verileri nasıl yapmalıyız ki rollback veya commit edilince veriler anında güncellensin.
• cachedUpdate in bir avantaj veya dezavantajı nedir?


bu konu ile ilgili forumda çok açıklama yaptım fakat
ya bende biraz kıtlık var :lol: (ki kesin vardır eminim!) yada bu konu ile ilgili KESİN SONUÇ YOK !


lütfen bu konu hakkında üstadlardan yarım bekliyoruz.


S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

S.A.

arkadaşlar bu konu hakkında kimsenin bilgisi yok mu?

• Her güncelleme işleminde dataset leri open - close yapmak sistemi yormazmı?
• datasetleri open-close yapmak client-server larda ne kadar hızlı olabilir.
• datasetleri open-close yerine filtered=True / false yapmak mı daha hızlı olur sizce...

lütfen bu konu hakkında lütfen bilgilerinizi ve tecrübelerinizi bekliyorum.

deneme program yaptım.(fatura master-detail) cxgrid ve firebird 2.0 kullanıyorum.
dataset leri rollback ettiğimde bilgiler halen cxgird üzerinde görünüyor.
fakat formu kapatıp açtığımda veriler tazelenmiş olarak geldiğinden rollback kaydı görünmüyor.

siz bu durumda nasıl bir yol izliyorsunuz.

yukarı da anlattıklarım sizce ne kadar doğru.

S.A.
Herkes cahildir, bazi konularda.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

Tam olarak firebird kullanamdım ama diğer veri tabanlarını kullandım. Sizde madem sabırsızsınız fikirlerimi yazayım.
1. soru için cevabanız doğru. zaten başka yoluda yok. ya manuel olarak kodlarla master detail yapacaksınız yada master ve detaili aynı transaction içinde kullanacaksınız. Bundan daha doğalı olamaz.

2. sorunuza gelince mecburen tabloları açıp kapamanız gerekir. Cachedupdates kullanabilirsiniz. Bir sıkıntı olmaz. Tüm kayıtarı veri tabanından çekmediğinize göre 5-10 kayıtlık bir tabloyu tekrar açmak sisteme fazla yüklenmez. Eğer büyük bir proje ise cached updates tavsiye ederim. Aynı zaman cached updates şu işlerede yarar. Mesala kulanıcının kayıtları girme yetkisi var ama değiştirme yetkisi yok. Kayıtları bir grid üzerinden giriyor olsun. Normalde kullanıcı satır değiştirdiğinde veriler post edilir ve düzeltilemez. Ama cached updated kullanırsanız kullanıcı satıra geri dönüp değiştirebilir taki siz applyupdates diyene kadar.
Umarım başlangıç açısından yeterli bir cevap olmuştur.
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

mkysoft yazdı: Umarım başlangıç açısından yeterli bir cevap olmuştur.
S.A.

çok teşekkür ederim. :roll:

ama bunun bir yöntemi olmalı. yani datasetleri neden her defasında open-close yapalım ki ! bu olay canımı çok sıktı. peki firbird ile geliştirlen bütün uyulamalar bu tarz mı illiyor ki !

peki filtered=TRUE ve FALSE desek bu işlemde dataset open-close ile aynı işlemi gerçekleştiriyor. sizce bumu yoksa open-close mu?

peki neden refresh yapmaz ki !
bunun kesin mantıklı bir açıklaması vardır. ama ne? :?:

master-detail (fatura mantığı) örnek programımda bilgileri giriyorum.
Rollbackretaining yapınca detail kayıtların iptal edildiğini anında görüyorum fakat ana tabloda ki kayıt duruyor. taki formu kapatıp açana kadar. acaba Resfresh SQl de neden işlem yapmıyor ki !

bu olay gerçekten canımı çok sıkıyor. habire datasetleri open-close yapmak bana biraz tuhaf geliyor .. :oops: belkide mantığı tam kavrayamadığımdan dır.

ne yapılmalı !

siz ne tarz yöntem kullanıyorsunuz. ?

LÜtfen bu konu hakkında kimsenin bir fikri yok mu acaba ?


S.A. teşekkürler.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

S.A. arkadaşlar.

bu konu hakkında lütfen üstatlar bir cevap verin. :!:

teşekkür ederim.


S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

merhaba

C1 doğru master detail yapılarda aynıtransaction kullanmalısın..

C2 pos edilmiş kayıtların Rollback yapılması durumunda güncellemenin close open ile yapılıp, kapatmadan önce cursorun bulunduğu kaydın id sini değişkene alıp, open işleminde ilgili kayda konumlanıman gerekiyor. ben konumlanmayı locate ile yapıyorum. where şartı ile de sadece ilgili kaydı getirebilirsin.
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

S.A.

Teşekkürler.

hocalarımız son bir soru

Kod: Tümünü seç

dataset            = open - close mu?
dataset filtered = True - False mi?
sizce hangisi daha hızlı dır. ?

S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

dataset = open - close mu?
dataset filtered = True - False mi?
ikisi farklı şeyler...
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

kadirkurtoglu yazdı:
dataset = open - close mu?
dataset filtered = True - False mi?
ikisi farklı şeyler...
S.A.

hocam tamam farklı şeyler peki farkı nedir?

sonuçta amacımız güncellenen kaydın anında görünmesi ve
netice olarak her ikisde aynı işlemi yapıyor.

veriyi anında güncelliyor.

:?:

S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

dataset filtered = True - False mi?
ben ibx ibdataset'in filtered özelliğini bulamadım. kullandığınız bileşen nedir...
Ottoman

Mesaj gönderen Ottoman »

Yanlış anlamadıysam ;"Filtered;Bu özellik DataSette vardır,DataSet'in ,Sorgulamalarda,Listelemelerde kullandığı bir özelliktir.",IBDataSet'in üstündeyken,Objectİnspector'de DataBase sırasındadır, ve"True" olarak seçiniz?
dataset = open - close mu?
bunuda anlıyamadım....ama Tabloyu ilk açarken kullanıcaksanız?Form'un "OnCreate olayında;

Kod: Tümünü seç

IBDataSet1.Open;
olarak kullanılır.
Cevapla