adoquery sadece aktif satır refresh olsun?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
yazicih
Üye
Mesajlar: 92
Kayıt: 11 Şub 2005 02:10
Konum: Antalya

adoquery sadece aktif satır refresh olsun?

Mesaj gönderen yazicih »

Merhaba
adoquery ile herhangi bir kayıdı değiştirdiğimde ya da yeni bir kayıt eklediğimde sadece değişiklik yaptığım satırı nasıl yenileyebilirim.

Bir kayıdı güncellediğimde yada eklediğimde bütün satırları refresh etmek istemiyorum.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Grid üzerinde yapmak istiyorsanız, refresh yanında update diye bir özelliği var onu deneyin. Satır bazında çalışıp çalışmadığına emin değilim :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
yazicih
Üye
Mesajlar: 92
Kayıt: 11 Şub 2005 02:10
Konum: Antalya

Mesaj gönderen yazicih »

Hayır grid üzerinde yapmıyorum eklemeyi
ama eklediğim yada düzelttiğim kayıdı sonuçta gridde gösteriyorum. ve birden fazla tablodan değer alıp tek tabloda güncelleme işlemi yaptığım için sorgum şu şekilde oluor

Kod: Tümünü seç

SELECT K.*,
(SELECT M.MALZEMEAD FROM 
MALZEME M WHERE K.MALZEMENO=M.MALZEMENO ) MALZEMEAD,
(SELECT G.GRUPAD FROM 
MALZEME M,GRUP G  WHERE K.MALZEMENO=M.MALZEMENO
AND M.MALZEMEGRUP=G.GRUPKOD ) GRUP

 FROM STOKKART K WHERE K.DEPONO=:DEPO
burda örneğin yeni kayıt eklediğimde queryi tekrar çalıştırmadığımdan malzemead ve grup kısmım boş geliyor query de ama queryi refresh edersem dolu geliyor. ama ben satır bazında refresh etmek istiyorum. yani sadece güncellediğim ya da yeni eklediğim satırı. çünkü ileride kayıtlar artcak.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

ADO'nun DataSet bileşenlerini Requery ile güncelliyorum ve çok yüksek miktarlardaki kayıtlarda bile çok sorun olmuyor. Sadece bu işlemden önce bulunduğunuz kaydı hafızaya almanız ve işlemden sonra o satıra konumlanmanız gerekmektedir.

Kod: Tümünü seç

procedure ADORefresh(const ADO:TCustomADODataSet);
var KayitYeri:TBookMarkStr;
begin
  if ADO.Active then try
    ADO.DisableControls;
    KayitYeri:=ADO.Bookmark;
    ADO.Requery;
    ADO.Bookmark:=KayitYeri;
  finally
    ADO.EnableControls;
  end;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
yazicih
Üye
Mesajlar: 92
Kayıt: 11 Şub 2005 02:10
Konum: Antalya

Mesaj gönderen yazicih »

ben de şu anda zaten requery yöntemiyle yapıyorum ama requery ile bütün kayıtları yeniliyor diye biliyorum
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

disablecontrols metodunu kullandığında tablo arka planda yenilenirken değerler nesnelere aktarılmadığı için. performans oldukça yükseliyor. ve arkadaşın da dediği gibi çok yüksek sayıda kayıtlarda bile prpblem olmuyor.
işin bittiğinde tekrar enablecontrols ile tabloya bağlı nesneler veritabanına erişebiliyor.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

ADO bağlantılarımda SQL Server kullanıyorum ve bu metotla hayatımdan memnunum. Ağ terminallerinde bile yüksek miktarlardaki kayıtlarda gayet hızlı çalışmaktayım.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
yazicih
Üye
Mesajlar: 92
Kayıt: 11 Şub 2005 02:10
Konum: Antalya

Mesaj gönderen yazicih »

Ben henüz çok fazla kayıtta test edemediğim için kafama takılıyordu. şimdilik bu şekilde devam edeyim. bilgileriniz için teşekkürler
Cevapla