Alan Toplama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
w32dasm
Üye
Mesajlar: 15
Kayıt: 01 Eki 2007 09:01

Alan Toplama

Mesaj gönderen w32dasm »

Merhaba, Öncelikle herkese Hayırlı Bayramlar,

Sorunla ilgili olabilecek tüm konuları incelediğimi belirterek sorunumu yazıyorum :)
FireBird 4 Adet Tablom var,
1. Yıl
2. Dönem
3. Okullar
4. Öğrenciler şeklinde.

Öğrencileri xls dosyasından EMS import ile alıyorum. İmport tamamlanınca tüm öğrencilerin mesela Türkçe dersinin Toplamını almak ve Okullar tablosundaki ilgili okulun TürkçeOrtalama alanına göndermek istiyorum ve gönderiyorum, buraya kadar sorun yok .

Lakin import tamamlandıktan sonra başka bir okulu seçiyorum öğrenci ve ders notlarının bulunduğu xls dosyasını import ettiğimde önceki okulun toplamını alıyor. Denemediğim yöntem kalmadı query'yi, table'i herşeyi close, open ile refresh yapmama rağmen bir türlü çözemedim. Query'de Kullandığım kod

Kod: Tümünü seç

SELECT  OKULLAR.OKULADI, SUM(OGRENCILER.TURKCE),SUM(OGRENCILER.MATEMATIK),SUM(OGRENCILER.FENBILIMLERI),SUM(OGRENCILER.INKILAPTARIHI),SUM(OGRENCILER.INGILIZCE),SUM(OGRENCILER.DINKULTURU)  FROM OGRENCILER,OKULLAR,DONEM WHERE  DONEM.DONEM_ID=OKULLAR.DONEM_ID AND OKULLAR.OKUL_ID=OGRENCILER.OKUL_ID
GROUP BY OKULLAR.OKULADI,DONEM.DONEMADI


EmS import wizardın after importunda kullandığım kod.

Kod: Tümünü seç

var
s,t :integer;
begin
  IBQuery1.close; IBQuery1.open;
  Form2.TableOkul.edit;
i := (Sender as TQImport3).TotalRecCount;
Form2.TableOkul.FieldByName('OGRENCISAYISI').value := i;
Form2.TableOkul.Post;
Form2.IBTransaction1.CommitRetaining;
Label1.Visible := True;
Label1.Caption := Form2.TableOkul.FieldByName('OGRENCISAYISI').value;
s:= Form2.TableOkul.FieldByName('OGRENCISAYISI').value;
Form2.TableOkul.edit;
//  IBQuery1.Close; IBQuery1.open;
Form2.TableOkul.FieldByName('TURKDONEMTOPLAM').Value := IBQuery1sum.Asinteger; 

t := IBQuery1sum.Asinteger;
//M := IBQuery2MatToplam.Asinteger;
begin
Form2.TableOkul.Fieldbyname('TURKCE').value := T /s;

Form2.TableOkul.Post;
Form2.IBTransaction1.CommitRetaining;
IBQuery1.Close;IBQuery1.open;

QUERY'leri perişan ettim orada olmadı şurada , burada olmadı orada aç kapa denemediğim yer kalmadı. Table'ın after post da dahil.
query code da geçen diğer sum ları sonradan ekledim,şimdilik kullanmıyorum, 1nci dersi halledebilsem diğerlerini ekleyeceğim
Tamam bundan vazgeçeyim, kayıtlar import edildikten sonra hesaplamayı yapayım dedim.

Kod: Tümünü seç


 Form2.TableOkul.First;
    while not Form2.TableOkul.Eof  do
      begin
       Form2.TableOkul.edit;
    //   IBQuery2.Close; IBQuery2.open;
Form2.TableOkul.FieldByName('TURKDONEMTOPLAM').Value := ibquery2.FieldByName('SUM').Asinteger;
s:= Form2.TableOkul.FieldByName('OGRENCISAYISI').value;

T := ibquery2.FieldByName('SUM').Asinteger;}
//M := IBQuery2MatToplam.Asinteger;
Form2.TableOkul.Fieldbyname('TURKCE').value := T /s;
Form2.TableOkul.post;  Form2.TableOkul.Next;
//Form2.IBTransaction1.CommitRetaining;
//IBQuery2.Close; IBQuery2.open;


Buradan da bir yol alamadım.
Lütfen yardımlarınızı bekliyorum.
Konuyu yanlış yere açtım galiba. Buraya yenisini açıyorum.
w32dasm
Üye
Mesajlar: 15
Kayıt: 01 Eki 2007 09:01

Re: Alan Toplama

Mesaj gönderen w32dasm »

Otomatik hesaplatmaktan vazgeçip grid sütun toplamını bulup sonra tabloya kaydetme ile sorunu çözdüm.

Tek yönlü düşünmemek lazımmış :)
Cevapla