DBGRID Toplama İşlemi Hakkında

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: DBGRID Toplama İşlemi Hakkında

Mesaj gönderen ertank »

Aşağıdaki bilgileri paylaşabilir misiniz?
- Birden fazla kayıt olan sipariş tablo kayıt listesi (tüm kolonlar olacak şekilde)
- Birden fazla kayıt olan kasa tablo kayıt listesi (tüm kolonlar olacak şekilde)
bestofhoke
Üye
Mesajlar: 30
Kayıt: 14 Mar 2017 04:01

Re: DBGRID Toplama İşlemi Hakkında

Mesaj gönderen bestofhoke »

ertank yazdı:Aşağıdaki bilgileri paylaşabilir misiniz?
- Birden fazla kayıt olan sipariş tablo kayıt listesi (tüm kolonlar olacak şekilde)
- Birden fazla kayıt olan kasa tablo kayıt listesi (tüm kolonlar olacak şekilde)
Hocam ekran görüntülerini aldım aşağıdaki linklerde...

1. http://i.hizliresim.com/5gzG9q.jpg

2. http://i.hizliresim.com/W0RGWL.jpg


Tablolar ve alanlar, sadece siparis veritabanı bu veritabanı hem kasa hemde siparis form'unda kullanıyorum kasa için ayrı bir veritabanı yok.
Siparis tablosuna verileri de urun ve musteri adlı veritabanlarından çekiyorum...Siparis form'unda ki dbeditlere aktarıyorum oradan da grid'e yazdırıyorum.
Şu şekilde;
procedure Tmusteriislemleri.DBGrid1DblClick(Sender: TObject);
begin
siparisislemleri.Query1.Open;
siparisislemleri.Query1.Append;
siparisislemleri.Query1['Musteri_Adi'].AsString:=Table1['Musteri_Adi'].AsString;
siparisislemleri.Query1['Musteri_Soyadi'].AsString:=Table1['Musteri_Soyadi'].AsString;
siparisislemleri.Query1['Gsm_Telefon'].AsString:=Table1['Gsm_Telefon'].AsString;
siparisislemleri.Query1['E-Posta'].AsString:=Table1['E-Posta'].AsString;
siparisislemleri.Query1['Dogum_Tarihi'].AsString:=Table1['Dogum_Tarihi'].AsString;
siparisislemleri.Query1['Adres_Bilgisi'].AsString:=Table1['Adres_Bilgisi'].AsString;

end;

procedure Tmusteriislemleri.DBGrid1ColEnter(Sender: TObject);
begin
siparisislemleri.DBEdit2.Text:=DBGrid1.Fields[1].Text;
siparisislemleri.DBEdit3.Text:=DBGrid1.Fields[2].Text;
siparisislemleri.DBEdit4.Text:=DBGrid1.Fields[3].Text;
siparisislemleri.DBEdit5.Text:=DBGrid1.Fields[4].Text;
siparisislemleri.DBEdit6.Text:=DBGrid1.Fields[5].Text;
siparisislemleri.DBEdit7.Text:=DBGrid1.Fields[6].Text;
end;

ama bununla bir alakası yok yinede yazdım.
bestofhoke
Üye
Mesajlar: 30
Kayıt: 14 Mar 2017 04:01

Re: DBGRID Toplama İşlemi Hakkında

Mesaj gönderen bestofhoke »

Hocam ben halen yapabilmiş değilim :)
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: DBGRID Toplama İşlemi Hakkında

Mesaj gönderen ertank »

Hesaplama yapacağınız forma yeni bir TQuery bileşeni ekleyin. Object Inspector içinde SQL özelliği içine aşağıdaki ifadeleri yazın.

Kod: Tümünü seç

select sum(urun_adeti * urun_birim_alis) as AlisToplam, sum(urun_adeti * urun_birim_satis) as SatisToplam
from siparis
where urun_kodu = :kod
Hesaplama kısmını şöyle bir kod kullanarak yapmanız mümkün olabilir.

Kod: Tümünü seç

begin
  Query1.Close();
  Query1.Params[0].AsString := <İncelenecek Stok Kodu>;
  Query1.Open();
  kasaislemleri.Edit1.Text := Query1.FieldByName('AlisToplam').AsFloat;
  kasaislemleri.Edit2.Text := Query1.FieldByName('SatisToplam').AsFloat;
  kasaislemleri.Edit3.Text := Query1.FieldByName('SatisToplam').AsFloat - Query1.FieldByName('AlisToplam').AsFloat;
  Query1.Close();
end;
Burada <İncelenecek Stok Kodu> olarak gözüken ifadeyi hesaplamak istediğiniz stok kodu değerini içeren bir değişken ile değiştirmeniz gerekecektir.

Yukarıdaki SQL komutunun eski BDE tarafından çalışacağını umut ederek gönderiyorum. Çalışmaz ise başka manuel işlemler gerekecektir ki performans olarak çok daha yavaş çalışır.
bestofhoke
Üye
Mesajlar: 30
Kayıt: 14 Mar 2017 04:01

Re: DBGRID Toplama İşlemi Hakkında

Mesaj gönderen bestofhoke »

Eyvallah hocam, tablolarda biraz da düzenleme yaparak hallettim Allah razı olsun bir kaç sorum daha olacak yapmak istediğim ancak öncesinde biraz üzerinde uğraşmak istiorum forumda da bulamazsam sizlerden tekrar yardım isteyebilirim :)
Cevapla