Makale Özeti

Eğer uygulamanız sırasında bilgileri fiziksel olarak bir tabloda tutmak istemiyorsanız ve bir tablodan bilgi okuma performansına ihtiyacınız varsa temp (geçici) tablolar bu anlamda işimize yarayacaktır. Normalde pivot bir tablo yaratıp, içini manuel olarak doldurup – boşaltarak aynı işlevi görebilir ancak böyle bir amaç için geçici tabloları kullanmak daha rahat bir çözüm sağlayacaktır. Ancak yaptığım çalışmalar sonucunda birşeyi önermek istiyorum. Eğer tmp tablo üzerinde çok fazla kayıt tutacaksanız kullanmanızı tavsiye etmiyorum. Çünkü geçici tabloların her kayıdı hafızada container bazlı tutulduğu için geçici tablo içinde çok fazla kayıt bulundurulması bellekte taşma sorununa neden olabilir.

Makale

AXAPTA – 13

TEMP TABLE VE REPORT İÇİNDE KULLANIMI

Eğer uygulamanız sırasında bilgileri fiziksel olarak bir tabloda tutmak istemiyorsanız ve bir tablodan bilgi okuma performansına ihtiyacınız varsa temp (geçici) tablolar bu anlamda işimize yarayacaktır. Normalde pivot bir tablo yaratıp, içini manuel olarak doldurup – boşaltarak aynı işlevi görebilir ancak böyle bir amaç için geçici tabloları kullanmak daha rahat bir çözüm sağlayacaktır. Ancak yaptığım çalışmalar sonucunda birşeyi önermek istiyorum. Eğer tmp tablo üzerinde çok fazla kayıt tutacaksanız kullanmanızı tavsiye etmiyorum. Çünkü geçici tabloların her kayıdı hafızada container bazlı tutulduğu için geçici tablo içinde çok fazla kayıt bulundurulması bellekte taşma sorununa neden olabilir.

Geçici tabloları oluşturdukdan sonra form veya report içinde kullanabiliriz.

Sistem üzerinde de sistem işleri için tanımlanmış geçici tablolar bulunmaktadır. Bu tablolar tmp ifadesi ile başlamaktadır. Aynı zamanda isterseniz işinize uygun gelen sistemin bu geçici tablolarınıda kullanabilirsiniz.

Eğer geçici tabloyu bir form içinde kullanacaksanız, formun veri kaynağına (data source) bu geçici tabloyu eklemek zorundasınız.

Geçici tablolar hangi katmanda kullanılacaksa orada yaratılmalıdır.

Yeni bir geçici tablo oluşturmak için öncelikle AOT’de Yeni Tablo diyerek klasik bir tablo oluşturması gibi işlemi gerçekleştirmeniz gerekecektir. Bir tablonun geçici olabilmesi için niteliklerinden, Temporary özelliğini Yes olarak değiştirmeniz gerekmektedir. Varsayılan olarak bu değer No olarak gelir. Bunun dışındaki tüm işlemler normal bir tablo yaratmada olduğu gibidir. Önceki makalelerimde tablolar üzerinde geniş bilgi vermiştim.

Geçici tablo üzerinde de aynı şekilde istediğimiz tipde, istediğimiz kadar saha açabiliriz.

Her geçici tablonunda, sistem üzerinde bir kimlik bilgisi yani TableId sahası mevcuttur. İçine eklenen her kayıt içinde bir kimlik bilgisi yani RecId vermektedir. Ancak daha öncede anlattığım DataAreaId sahası yani hangi şirkete ait bilgi olduğunu belirten sahayı tutmamakdatır. DataAreaId olarak eğer bir geçici tablo ise dat vermektedir.

Ayrıca geçici tabloları Axapta’nın QueryBuildRange objesine bilgi çekme amacı ile atayamıyoruz. Geçici tablolar üzerinde sadece select ile kayıt listeleme yapabiliriz.

Bir rapor içerisinde geçici tablo kullanımı:

Geçici tabloyu rapor içinde bir yerde tanımlamamız gerekmektedir. Örneğin init bunun için uygun olabilir.

Rapor içinde kullanımı:

         Örneğin init metodu içinde tanıtımları yapacaksak;

                   public void init() {

                            tempTabloDenemesi   _tempTabloDenemesi;

                            ;

         select firstonly _tempTabloDenemesi;

                            _tempTabloDenemesi.setTmpData(_tempTabloDenemesi);

                   super();

}       

Geçici tabloyu bu şekilde tanımladıkdan sonra, üzerinde kayıt ekleme, silme, güncelleme ve listeleme gibi birçok işlemi gerçekleştirebiliriz.

Örnek olarak tablonun içini bilgi ile dolduralım ve tablo içindeki kayıtlara göre ekrana gönderme yapalım:

         _tempTabloDenemesi.Ad         = "Yeliz";

         _tempTabloDenemesi.Soyad    = "Korkmaz";

         _tempTabloDenemesi.insert();

         while select _tempTabloDenemesi {

                   element.send(Body);

         }

Yeliz Korkmaz, MVP

yelizkorkmaz@tnn.net