IBDataSet RefreshSQL Bölümü Nasil calismakda.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

IBDataSet RefreshSQL Bölümü Nasil calismakda.

Mesaj gönderen cempolat »

IBDataSet RefreshSQL Bölümü calisip çalismadigini test etmek istiyorum
birçok test yaptim ama tam olarak anlayamadim.
bilgisi olan arkadaslarin yardimlarini bekliyorum..
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Merhaba ,,,

sadece bir kayıt seçmek için kullanıldığını biliyorum..

örnek olarakta şöyle bir şey var yardım dosyasında

Kod: Tümünü seç

SELECT Country, Currency FROM Country WHERE Country = :Country
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

gerçek anlamda Tabloyu Refresh etmek DataSeti kapatıp açmak gerekiyor.
mesela bir ibDataSet musteri tablosuna bağlı diyelim ve dataset active durumda, musteri tablosunu başka bir yerden kayıt girildiğinde (örn. sql ile) tabloyu refresh etseniz bile son girilen kayıt gözükmez. IBDataSeti Kapatıp Açmak gerekir.
Daha Fazla Bilgi İçin ; :ara refresh ibdataset :ara
DeveloperToolKit

..::|YeşilMavi|::..
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Kapatıp açmasak da FetchAll yapsak ne olur ki? Yer mi acep bunu merak ettim şimdi.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Soruna yanıt yazmayı unutmuşum. :) Refresh metodunu çağırdığında, sadece üzerinde olduğun aktif satırı günceller. Bütün tabloyu değil. Bunun da ne şekilde güncelleneceğini RefreshSQL'de belirtirsin.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

coderlord yazdı:Kapatıp açmasak da FetchAll yapsak ne olur ki? Yer mi acep bunu merak ettim şimdi.
evt. Yer, hatta yemekle kalmaz belki bir daha kullanılamaz hale bile getirebilir.. :lol: :lol:
şaka bir yana tabi ki kullanılabilir, ben kendi Nalışkanlıklarımdan ötürü bu şekilde yazdım :idea:
DeveloperToolKit

..::|YeşilMavi|::..
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

Refresh.

Mesaj gönderen cempolat »

Arkdaslar.
örn:

2 adet tablomuz var.
1- stok_tb
2- stok_list_tb

ikiside ayni ekranda gridlere baglanmis.
stok_tb bir kayit ekliyorum.

stok_list_tb tablosunda bunu online görmek istiyorum.
NOT: stok_list_tb sunu kapatip açmadan - active true yapmadan.
REFRESHSQL ile yapmak istiyorum.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Sen yazılanları okumamışsın ki. Ne dedik üstte? Sadece aktif olan tek satırı güncelleştirir. Açıp kapatmanın mahsuru nedir?
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

Mesaj gönderen cempolat »

tessekurler yazini okudum ama

1- stok_tb 115 nolu kayit'da degisiklik yapilmis (aktif , Tek Kayit);


115 nolu kayit yapilan degisikligi stok_list_tb tablo 'sunda görmek istiyorum.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

RefreshSQL de hangi sql cumlesi yazıyorsa adı gecen alanlar %100 refresh edilir. bunun anlamı select id,ad,soyad from tablom where id=:id seklinde bir sorgu calıstırıp id parametresine o anki aktif kayıtın id sini vermekle esdeger

Önemli bir mevzu (bunu ben de bugun ogrendim) joinli ifadeler kullanıyorsanız, generatesql dediginizde ibdataset join edilen alanları refreshsql icine almıyor, bunun sonucu bir kayıt degistirilip post edildigi zaman join edilen alan bosalıyor. Aslında ibdataset sunu yapıyor,
bir kayıtı editlediginiz yada eklediginiz zaman gerekli update yada insert sql ini calıstırıyor, post ettiginiz zaman ise refreshsql i calıstırıyor.
Ben joinli ifadelerde yukarda bahsettigim durumla karsılasmamak icin dataseti kapatıp acıyor ve aynı kayıta konumlanıyordum
bu islem lan uzerinde hic sorun cıkarmaz iken, internet uzerinden cok yavas oluyor. eger kayıta konumlanma islemi (locate yada Bookmark yontemi ile, Bookmark ile benzer sorun olurmu onu test etmedim ama mantık aynı olmalı)
yapılmayacaksa o an icin bufera gridde gorunecek kadar kayıt atılmakta ve bu da pek problem cıkarmamakta.

Bu mevzu aslında daha fazla test edilerek irdelenmeli bence.
RefreshSQL lerimi duzeltip gereksiz tablo kapa/ac islemlerini programlarımdan cıkaracagım oncelikle.
ÜŞENME,ERTELEME,VAZGEÇME
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

Mesaj gönderen cempolat »

join edilen alan bosalıyor.

Bu konu ile ben bir çalisma yaptim ve sonuc olumlu oldu.

SELECTSQL inde bululan sorgunun tamamini
REFRESHSQL Gönderiyorum.
Bu durumda Join olan degerlerde Refresh oluyor.

Toplam Almada Su Anda Kullandigim yöntem procedure yazmak bu sorunsuz ve çok güvenilir ama biraz zahmetli ve gereksiz yere bir sürü toplam procedure oluyor.

Bir IBDATASET 'in içinde ister join olsun ister olmasin ister 1 kayit ister 100 kayit olsun hem listesini alip.HEMDE TEK 1 FIELD ALANINDA GENEL TOPLAM ALMA YANI -- SUM(KG) TOPLAM --- YAPMAK MÜMKÜN DEGILMIDIR.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

refreshsql e bu select sum(kg) from tablom cumlesini de eklerseniz bunu da gorebileceksiniz ama diger mesajınızda da yazdıgınız gibi bende bu durumu 40bin kayıtlık bir tabloda denedim ve sonuc berbat :cry:
buna nasıl bir cozum buluruz simdilik bilmiyorum ama cok da elzem degil ise
ibdatasetin dısında ayrı bir sql ile (bir ibquery) halledilebilir. her post isleminde de bu sorguyu yeniden calıstırabilirsiniz.
ÜŞENME,ERTELEME,VAZGEÇME
cempolat
Üye
Mesajlar: 31
Kayıt: 27 May 2005 12:56

Mesaj gönderen cempolat »

tesekkurler.
Cevapla