Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 3/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
İki DB deki tutarların %sini alma
#1
Merhaba benim 2 tane database'im var. 2 sinde de bulunan Toplam Tutar adlı alanlarımı bir grid üzerinde gösteriyorum. İkisinde de farklı tutarlar var ve yeni bir alanda bu ikisinin arasındaki % sel farkını bulmak istiyorum. Nasıl bir yöntem uygulamalıyım? 
Teşekkürler.

MemTable kullanmak işimi gördü, normalde alanlar boş geliyordu ama memtable kullanmak işimi yeterince gördü yardımlarınız için teşekkürler
Don't fear the try!
WWW
Cevapla
#2
Grid üzerinde iki tabloyu view gibi bir yöntemle mi gösteriyorsun MemoryTable tarzı geçici bir veritabanı ile mi gösteriyorsun. Ona göre çözüm olur. View ise sql kodu ile hesaplatırsın Memorytable ise ekleme anında ikisini farkını hesaplar satıra yazarsın.
Cevapla
#3
Merhaba,

database MSSQL mi?
değilse nedir?
Cevapla
#4
Merhaba,
Bu işlem için MemTable kullanabilirsiniz.
Forma bir adet TFDMemTable yerleştirin.
Her iki veri tabanından gelen veriler için iki adet Field oluşturun.
Aynı TFDMemTable üzerinde otomatik hesap alanları (CalcFields) oluşturun. Örneğin, DB1Yuzde, DB2Yuzde ve YuzdeFarki olsun.
TFDMemTable'ın OnCalcFields olayında ise gerekli hesaplamaları yapın.
TFDMemTable'a bir DataSource bağlayın ve DataSource'ü de db Grid'e bağlayın. (yada DataSource kullanmadan LiveBinding Designer ile TFDMemTable'ı doğrudan Grid'e bağlayın)
Böylece siz yalnızca her iki db' den gelen veriyi TFDMemTable'a set ettiğinizde, diğer alanlar da otomatik olarak hesaplanacaktır.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
Fesih Bey eğer kayıt sayısı çok fazla ve eğer zorunlu değil ise (veritabanı mimarisi buna müsade ediyorsa) ise olarak memorytable ağır çalışmaz mı
Cevapla
#6
(30-05-2017, Saat: 21:20)CaglarCoskun Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlFesih Bey eğer kayıt sayısı çok fazla ve eğer zorunlu değil ise (veritabanı mimarisi buna müsade ediyorsa) ise olarak memorytable ağır çalışmaz mı

Sizinle bir noktada aynı fikirdeyim. Olması gereken hesaplamanın sunucuya (veri tabanına) bırakılmasıdır. Bu durum işlem hızını arttıracaktır.
Fakat, arkadaşımız İki farklı veri tabanından bahsediyor. Veri tabanları tek bir Schema üzerinde değilse ve kullandığı veri tabanları DataBase Link mimarisini desteklemiyorsa; hesaplamanın veri tabanı tarafında olması imkansızdır.
Bu nedenle (alternatif bir yol olmadığından ve her iki veri tabanı yapısı konusunda bilgi sahibi olmadığımızdan) MemTable önerdim.
Günümüz bilgisayarlarında, MemTable performansları çok yüksektir. Hatta çok kullanıcılı uygulamalarda bu tip işlerin sunucudan ziyade, client bilgisayarlara bırakılması daha makul olacaktır. Neden derseniz; RDBMS yapılı veri tabanlarında, client istekleri, işlem görmek üzere kuyruğa alınırlar.
Kuyrukta bekleme süresi = Sorgu kompleksliği + fonksiyonel istekler (hesaplamalar, en fonksiyonları vb..) + Eş zamanlı istek sayıları + fiziksel sunucu konfigürasyonu + DB obje yapası (tablo, view yapıları ve indeksleme) + Network bağlantı hızı vb...
Çok kullanıcılı, 200-300 eş zamanlı bir sistemde (Oracle veri tabanı hariç), tabiri caiz ise uygulama felç (yanıt verememe) olacaktır.
Kurmuş olduğum bu senaryo, belki ekstrem bir örnek olmuştur. Fakat işin arka planını bilmek ve bu doğrultuda temeli sağlam kurmak bizim (yazılım geliştiricinin) işimizdir.
Peki yukarıdaki senaryoda, hesaplamalar client bilgisayara bırakılsa ne olacaktı? İş yükü lokalde kalacak ve sunucu daha performanslı çalışacaktı.
Tabi tüm işlemlerin client tarafına bırakılması da uygun olmayacaktır.
Aslında daha uygulamanın analiz aşamasında, sunucu ve veri tabanı performansına bağlı olarak, hangi işlerin client tarafında, hangi işlerin sunucu tarafında olması gerektiğini belirlenmelidir.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#7
Aslında sorulan soruya bakarsanız aynı anda 5 kişinin dahi kullandığı bir sistem olduğunu sanmıyorum amacım veritabanı yönetimini daha geliştirmek pratik yollardan çok mühendisliği arttırmak
Cevapla
#8
bencede bir memtable kullanmak işi çözecektir kbmmemtable bileşeni ve kbmemsql ile memory table da sql komutları da kullanabiliyorsunuz gayet de hızlı çalışıyor.

“Do. Or do not. There is no try.”
Cevapla
#9
(30-05-2017, Saat: 21:10)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
Bu işlem için MemTable kullanabilirsiniz.
Forma bir adet TFDMemTable yerleştirin.
Her iki veri tabanından gelen veriler için iki adet Field oluşturun.
Aynı TFDMemTable üzerinde otomatik hesap alanları (CalcFields) oluşturun. Örneğin, DB1Yuzde, DB2Yuzde ve YuzdeFarki olsun.
TFDMemTable'ın OnCalcFields olayında ise gerekli hesaplamaları yapın.
TFDMemTable'a bir DataSource bağlayın ve DataSource'ü de db Grid'e bağlayın. (yada DataSource kullanmadan LiveBinding Designer ile TFDMemTable'ı doğrudan Grid'e bağlayın)
Böylece siz yalnızca her iki db' den gelen veriyi TFDMemTable'a set ettiğinizde, diğer alanlar da otomatik olarak hesaplanacaktır.

Yardımınız için teşekkür ederim. MemTable kullanıyordum fakat OnCalcFields alanına yazmıyordum kodları buton içerisine yazıyordum. Bu event'a yazdığımda alanda % sel değerleri göstermeyi başarabildim. Şuan yanlış rakamlar geliyor oda yapacağım matematik işlemi ile düzeleceğini umuyorum. Teşekkürler ^^

(31-05-2017, Saat: 10:06)masteryoda Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olbencede bir memtable kullanmak işi çözecektir kbmmemtable bileşeni ve kbmemsql ile memory table da sql komutları da kullanabiliyorsunuz gayet de hızlı çalışıyor.

MemTable kullanıyordum fakat oncalc eventa yazmıyordum kodları, şimdi olacak gibi
Don't fear the try!
WWW
Cevapla
#10
(31-05-2017, Saat: 10:06)masteryoda Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olbencede bir memtable kullanmak işi çözecektir kbmmemtable bileşeni ve kbmemsql ile memory table da sql komutları da kullanabiliyorsunuz gayet de hızlı çalışıyor.

Evet memtable kullandıktan sonra işimi gördü teşekkür ederim yardımınız için ^^
Don't fear the try!
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  DLL içersinde EXE'deki prosedürü çağırma turkverisoft 3 126 26-12-2017, Saat: 14:32
Son Yorum: SimaWB
  Ip cameradan goruntulerini alma klavye 8 150 21-12-2017, Saat: 08:05
Son Yorum: Fesih ARSLAN
  Media player hızlı ileri alma Lord_Ares 2 133 29-11-2017, Saat: 01:26
Son Yorum: Lord_Ares
  Programda kullanılan bilesenlerin listesini alma klavye 2 153 14-09-2017, Saat: 15:17
Son Yorum: klavye
  function parametre vermeden sonuçu alma cinarbil 6 327 10-08-2017, Saat: 11:00
Son Yorum: esistem



Konuyu Okuyanlar: 1 Ziyaretçi