ağda problem

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
ibrahimkgul
Üye
Mesajlar: 26
Kayıt: 03 Nis 2007 12:49

ağda problem

Mesaj gönderen ibrahimkgul »

biraz garip bir olay olduğu için yeni konu açma ihtiyacı duydum

problemim şu var olan bir kaydı düzenlediğimde hiçbir sıkıntı yok fakat yeni bir kayıt eklediğimde bu kayıt terminal makinada görünmüyor .query'i kapatıp açtığımda geliyor fakat query'i kapatıp açmak istemiyorum çünkü bayağı bir kabarık veritabanım var. refresh'i denedim oda olmadı
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: ağda problem

Mesaj gönderen sabanakman »

Ado kullanıyorsan close-open kullanmadan requery metodu ile kayıt tazeleme işini çok süratli bir biçimde güncelleyebilirsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: ağda problem

Mesaj gönderen aslangeri »

s.a.
kaydın terminal makinede görünmesi için öncelikle ana makinede başlatılan transaction ın sonlanması lazım.
ikinciside client makinedeki transaction yeniden başlatılması lazım.(bu transaction ın ayarlarına göre değişebilir ama her halukarda tabloyu refresh etmen lazım(tabi tablo kullanıyorsan))
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ibrahimkgul
Üye
Mesajlar: 26
Kayıt: 03 Nis 2007 12:49

Re: ağda problem

Mesaj gönderen ibrahimkgul »

bu işin başka bir yolu yokmu yani illaki transaction ı commit mi edeceğiz
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: ağda problem

Mesaj gönderen unicorn64 »

transaction kullanıldığında commit edilmeyen işlemler aslında yapılmamış gibidir. işlemler geçici olarak yapılır ve veritabanına yansıtılmaz.
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
ibrahimkgul
Üye
Mesajlar: 26
Kayıt: 03 Nis 2007 12:49

Re: ağda problem

Mesaj gönderen ibrahimkgul »

commitreating ile yapma olanağım varmı query'i açıp kapa madan
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Re: ağda problem

Mesaj gönderen selimr »

aslangeri nin de dediği gibi transaction ayarlarını değiştirerek commit edilmemiş kayıtlarında diğer kullanıcılar tarafından görünmesini sağlayabilirsin.. ancak bunun içinde yine senin ordaki verileri kullanıcı makineye almak için query yi yenilemen veya tabloyu yenilemen lazım..

ancak transaction da ayarları yapıpda diğer kullanıcılarin henüz commit edilmemiş kayıtlarıda görmesi birsürü sakınca doğurur bence..

örnek olarak adam stoga bir kalem girecek ve henüz commit etmemiş.. kullanıcı o sırada bu kaydı var olarak görüp ona göre işlem yapıyor.. ama commit etmeyen diğer kullanıcı kayıttan vazgeçip rollback yaparsa ne olacak...

yani her halukarda ben commit edilmiş kayıtların görünmesinin daha doğru olacağını düşünüyorum...

biraz ozun mu oldu ne :)
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Re: ağda problem

Mesaj gönderen selimr »

bence senin problemin data yapısını uygun kurmaman.. yani sql kullanarak gerekli kayıtlarla işlem yaptığında close; open ; yapmak çok vakit alıcı olmayacaktır.. buralarda düzenleme yaparsan ve bunuda diğer kullanıcı makineler için eventle yakalarsan daha mantıklı olur bence..
ibrahimkgul
Üye
Mesajlar: 26
Kayıt: 03 Nis 2007 12:49

Re: ağda problem

Mesaj gönderen ibrahimkgul »

peki ben transaction da kayıtları commit etmeden görebilmem içinde nasıl bir ayar yapmalıyım
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: ağda problem

Mesaj gönderen rsimsek »

ibrahimkgul yazdı:peki ben transaction da kayıtları commit etmeden görebilmem içinde nasıl bir ayar yapmalıyım
Veri tabanı mantığına aykırı bir yaklaşım. Yukarıdaki yazılanlardan sonra böyle bir soru geliyorsa transaction konusunu tekrar araştırmanızda fayda var :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
ibrahimkgul
Üye
Mesajlar: 26
Kayıt: 03 Nis 2007 12:49

Re: ağda problem

Mesaj gönderen ibrahimkgul »

selimr yazdı:aslangeri nin de dediği gibi transaction ayarlarını değiştirerek commit edilmemiş kayıtlarında diğer kullanıcılar tarafından görünmesini sağlayabilirsin.. ancak bunun içinde yine senin ordaki verileri kullanıcı makineye almak için query yi yenilemen veya tabloyu yenilemen lazım..

ancak transaction da ayarları yapıpda diğer kullanıcılarin henüz commit edilmemiş kayıtlarıda görmesi birsürü sakınca doğurur bence..

örnek olarak adam stoga bir kalem girecek ve henüz commit etmemiş.. kullanıcı o sırada bu kaydı var olarak görüp ona göre işlem yapıyor.. ama commit etmeyen diğer kullanıcı kayıttan vazgeçip rollback yaparsa ne olacak...

yani her halukarda ben commit edilmiş kayıtların görünmesinin daha doğru olacağını düşünüyorum...

biraz ozun mu oldu ne :)
ben bu cevap üzerine o soruyu sordum
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Re: ağda problem

Mesaj gönderen selimr »

benim yazdığımdan ne anlayıpta o soruyu sorduğunu ben anlamadım :)

transaction yalıtım (isolation) ayarları aşağıdaki seçenekleri sunar.. Bunlardan birini işinize göre kullanabilirsiniz..

- tiDirtyRead = bu sevyede commit edilmemiş değişiklikleride görebilme imkanı vardır.
(fakat bu tavsiye edilen bir durum değil.. çünkü commit edilmemiş kayıtlar commit edilmemiş olduğu için herhangi bir anda rolback yapılabilir. ve diğer kullanıcılar için tutarlı bir bilgi değildir..)

- tiReadCommitted = varsayılan durum budur.. ancak commit edildikten sonra yani değişiklikler kalıcı hale geldikten sonra değer kullanıcılar görebilir..
(en tutarlı ve karışıklıklara neden olmayacak durum bu olduğu için zaten varsayılan ayardır)

- tiRepeatebleRead = veritabanın bir kez okuma yapılmasına izin veriyor.. sonuçta diğer hareketler tarafından yapılmış sonraki değişiklikler görünmez..
Cevapla