zeosta refresh işlemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ahmet_sinav
Üye
Mesajlar: 263
Kayıt: 17 Nis 2004 07:44
Konum: İzmir Yeşilyurt Ulu Cami
İletişim:

zeosta refresh işlemi

Mesaj gönderen ahmet_sinav »

iyi çalışmalar;
delphi 2006+postgres 8.2 + zeos 6.6.1 DBO kullanarak bir uygulama üzerinde çalışmaktayım. Yazdığım bir trigger ile tabloda bazı alanlara yeni değerlerini update ile setliyorum. yazdığım trigger row before insert şeklinde çalışmakta. trigger ile setlediğim değerleri delphi içerisinde görmek için refresh, close-open, bookmark gibi olayları denememe rağmen henüz sonuç elde edemedim. ZeosConnection için bir ayarlama mı yapılmalı veya query için bir ayarlama mı yapılmalı trigger eventını after olarak değiştirdim yine aynı sonuç. Trigger ile setlediğim yeni değerleri delphi içerisinde nasıl görebilirim.
Saygılar;
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

table'ı open/close yaptığınızda görmeniz gerekir. veri tabanı tarafında bir hata olmasın?
Kullanıcı avatarı
ahmet_sinav
Üye
Mesajlar: 263
Kayıt: 17 Nis 2004 07:44
Konum: İzmir Yeşilyurt Ulu Cami
İletişim:

Mesaj gönderen ahmet_sinav »

İyi çalışmalar;
Evet close open da bir işe yaramadı. Problemi hala çözemedim. Eğer query'e bağlı bir dbbound component varsa refresh ile görünüyor fakat dbbound olmayan nesnelerde veriyi çekemiyorum.

Kod: Tümünü seç

 edt1.text:=zquery1.fieldbyname('alan').AsString;
şeklinde. bu sadece dediğim trigger ile setlediğim alanda çalışmıyor. diğer alanlara veriyi çekerken yukarıdaki code satırında olduğu gibi veriyi çekiyorum problemsiz bir şekilde getiriyor fakat triggerla setlediğim alan hala problemli. trigger çalışmıyor değil gayet güzel bir şekilde istediğim sonucu üretiyor. sıkıntı oluşan değeri delphi tarafına almak.
Saygılar;
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

query ile ubdate komutunu kullandıkdan sonra execsql;komutunu kullandıkdan sonra
query tekrar close
open yapmalısın.

örnek:
query1.close;
query1.sql.clear;
query1.sql.add('update tablo adı set where ID = :OLD_ID');
query1.execsql;

query1.close;
query1.sql.clear;
query1.sql.add('select* from tablo adı where ID = :OLD_ID');
query1.open;
gibi
Kullanıcı avatarı
ahmet_sinav
Üye
Mesajlar: 263
Kayıt: 17 Nis 2004 07:44
Konum: İzmir Yeşilyurt Ulu Cami
İletişim:

Mesaj gönderen ahmet_sinav »

iyi çalışmalar.
Anlaşılan zeosun bu versiyonu için update sql'de olmayan refresh olayını manual yapmamız gerekecek. Cevap için teşekkürler;
Saygılar;
Kullanıcı avatarı
ahmet_sinav
Üye
Mesajlar: 263
Kayıt: 17 Nis 2004 07:44
Konum: İzmir Yeşilyurt Ulu Cami
İletişim:

Mesaj gönderen ahmet_sinav »

İyi çalışmalar;
Triggerın update ettiği alanlar için şöyle bir proc yazdım işimi gördü.

Kod: Tümünü seç

procedure GetTriggerValues(SqlText:String;VarObj:Array Of TObject);
var
intI:Integer;
begin
  qryTmp:=TZQuery.Create(Nil);
  qryTmp.Connection:=frmData.PgConn;
  qryTmp.SQL.Text:=SqlText;
  qryTmp.Open;
  if qryTmp.IsEmpty then
  begin
    showmessage('Veri Bulunamadı');
    exit;
  end;
  for intI:=low(VarObj) to high(VarObj) do
  begin
    if VarObj[intI] is TEdit then
    begin
      (VarObj[intI] as TEdit).Text:=qryTmp.Fields[intI].AsString;
    end
   // else if diğer dbbound olmayan nesneler 
  end; 
end;
Saygılar;
Cevapla