master-detail ortalama alma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

master-detail ortalama alma

Mesaj gönderen must_sargin »

iyi çalışmalar,
iki tabloyu fisno ile bağladım

ana tablo:
islemno +
fisno n
aracno i
soforno i
litre n
tutar $

detail tablo:
islemno +
fisno i
yukno i
sefersay n
tonaj n

yapmak istediğim detail tabloda kayıt bitince ana tablodaki litreyi detail tablodaki sefersayısının toplamına bölmesi ve ortalama yükü bulması. acaba sql in birini ana tabloya, diğerini detail tabloya bağlayıp detail tablonun datasourcesini anatabalonun sqldatasourceye bağlarsam nasıl bir yol izlemem gerekir.
yardım ederseniz sevinirim.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Eğer sadece iki alan arasındaki bir matematiksel işlem ve sonucu bir alana atayacaksan; detail tablonun beforepost unda yapabilirsin.

Kod: Tümünü seç

Detail_Tablo.FieldByName(yukno).AsInteger :=
     trunc(Ana_Tablo.FieldByName(litre).AsInteger / Detail_Tablo.FieldByName(sefersay).AsInteger);
burada yukno alanı tamsayı olduğundan trunc ile işlemin tamsayı kısmını aldık.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

Mesaj gönderen must_sargin »

bu işlemi sql de yapıp geçici bir alan üzerine dbtext oluşturup kullanıcının alttabloyu kaydettiğinde bu değeri görmesini sağlayabilir miyiz acaba?
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

sql de geçici alan olmaz. kullandığın veri tabanını (belirtmemişsin!) destekliyorsa compute field (hesaplanmış alan) olayı ile çözebilirsin. onun yerine Table nesnesine calculate field ekleyip yapabilirsin.
yukno alanını calculate field yaparsan tabloda da belirtmene ve yer tutmasına gerek kalmaz :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

Mesaj gönderen must_sargin »

detail tabloda yukno yu yük tablosundaki yukno ile bağlayıp kullanıyorum.o zaman detail tabloda ortyakit diye bir calc. alan oluşturup dediğiniz kodları koyup deneyeceğim.
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

Mesaj gönderen must_sargin »

iyi çalismalar
Detail_Tablo.FieldByName(yukno).AsInteger :=
trunc(Ana_Tablo.FieldByName(litre).AsInteger / Detail_Tablo.FieldByName(sefersay).AsInteger);
yalniz yapmak istedigim litreyi toplam sefersayisina bölmek
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Yukarıdaki işlemde de dediğin olay yapılıyor. Sadece küsüratlı sonuçlar tamsayı alana atayamıyacağımız için trunc kullanmak gerekiyor. Burada büyük değerler için küsürat ihmal edilebilir fakat mesela 10 dan küçük değerler için küsürat kısmı da önem arz edebilir. O zaman da yukno'yu double / float tanımlamak gerekir.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla