Virtual Table Alt Toplamlar

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Virtual Table Alt Toplamlar

Mesaj gönderen gaus »

Merhaba Arkadaşlar ve hocalarım;
Benim şimdi şöyle bir sorunum var algoritmasını kuramadığım;
Bir satış formum var ve ürünler buradaki bir virtual tablea aktarılıyor;
ve yapı şu şekilde;

1.Alan 2 Alan;
1 54
2 40
1 50
2 60
3 70
4 80
2 70
bundan sonr yapmak istediğim şu

1lerin Toplamı 104
2lerin Toplamı 170
3lerin toplamı 70
4lerin toplamı 80
bunu yaptırmak istiyorum
virtual tableda sql fonksiyonu yok
ve 1 2 3 4 değerlerim 5 6 7 yani çok daha fazla değişkenli de olabilir;
Nasıl bir yolizlemeliyim
şimdiden teşekkür ederim
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: Virtual Table Alt Toplamlar

Mesaj gönderen barisatalay »

Virtual table aktarmadan önce işlemini yap ondan sonra oraya kayıt et bence
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: Virtual Table Alt Toplamlar

Mesaj gönderen gaus »

barış kardeşim öyle olmuyor yani şöyle düşün virtualtableda her ürün gözükecek fakat aşağıda bir panelde her birim için toplamlar gözükecek;
Şöyle bir yol düşündüm ikinci bir virtual table yapayım;
oraya bir döngü ile aktarsın fakat ikinci virtual tablea aktarırken;
birinci virtual tabledaki alanları bir kere yazsın yani aktardığı yeni değerin aynısı ikinci memtableda varsa
miktar değerlerini toplayarak gitsin;
hangi fonksi,yonlar bunu yazabilirim
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: Virtual Table Alt Toplamlar

Mesaj gönderen barisatalay »

Dögnü ile yap ozaman 1.virturaldakileri saydır
aynı olanları if ile ayırt et ve bir değişkene at döngü bitince bu değişkenleride 2. virturala basabilirsin.
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: Virtual Table Alt Toplamlar

Mesaj gönderen gaus »

kolay gelsin takrardan tetiklenmiyor;

Kod: Tümünü seç

procedure Tfrm_ambalajsepet.alttoplamlar;

begin

    with   dm_.vt_ambalaj do
      begin
        first;
        while not eof  do
          begin
            dm_.vt_alttoplam.First;
            while not dm_.vt_alttoplam.eof do
              begin
                if FieldByName('AMBALAJBIRIM').AsString=dm_.vt_alttoplam.FieldByName('DEGER').AsString then
                  begin
                    dm_.vt_alttoplam.Edit;
                    dm_.vt_alttoplam.FieldByName('TOPLAM').AsFloat:=dm_.vt_alttoplam.FieldByName('TOPLAM').AsFloat+FieldByName('MIKTAR').AsFloat;
                    dm_.vt_alttoplam.Post;
                  end
                else
                 begin
                      dm_.vt_alttoplam.Insert;
                      dm_.vt_alttoplam.FieldByName('TOPLAM').AsFloat:=FieldByName('MIKTAR').AsFloat;
                      dm_.vt_alttoplam.FieldByName('DEGER').AsString:=FieldByName('AMBALAJBIRIM').AsString;
                       dm_.vt_alttoplam.Post;
                  end;
                NEXT;
              end;
              next;
            end;
        end;
  end;
avaba nerede hata yapıyorum
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: Virtual Table Alt Toplamlar

Mesaj gönderen gaus »

Kod: Tümünü seç

procedure Tfrm_ambalajsepet.alttoplamlar;
var
   i:integer;
begin

  with  dm_.vt_ambalaj do
   begin
    first;
    for  i:= 0 to recordcount-1 do
      begin
         if dm_.vt_alttoplam.Locate('DEGER',FieldByName('AMBALAJBIRIM').AsString,[]) then
           begin
                 dm_.vt_alttoplam.Edit;
                 dm_.vt_alttoplam.FieldByName('TOPLAM').AsFloat:=dm_.vt_alttoplam.FieldByName('TOPLAM').AsFloat+FieldByName('MIKTAR').AsFloat;
                 dm.dm_.vt_alttoplam.Post;
           end
           else
              begin
                 dm_.vt_alttoplam.Insert;
                 dm_.vt_alttoplam.FieldByName('DEGER').AsString:=FieldByName('AMBALAJBIRIM').AsString;
                 dm_.vt_alttoplam.FieldByName('TOPLAM').AsFloat:=FieldByName('MIKTAR').AsFloat;
                 dm_.vt_alttoplam.Post;
              end;
      end;
  end;
 end;
birde böyle birşey denedim ama çift çift topluyor toplamayı yaptığım satırda acaba ne hata var sizce?
Cevapla