Tabloları toplama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Tabloları toplama

Mesaj gönderen erdogan_ozkaya »

arkadaşlar;

2 tablom var 1 tabloda firmalar 2 tabloda kesilen faturalar var
istediğim adoquery oncalc olayına bir kod yazmalıyıkim 1 tablo 2 tabloyu fitreleyerek o firmaya kesilen faturaların toplamını çıkarmalı 1 tabloda ToplamBorc diye bir sutun oluşturdum oraya toplamalı bilgisi olan arkadaşların cevaplarını bekliyorum

önceden böyle bir kod hazırlanmıştı ama işe yaramıyor

Kod: Tümünü seç

ADOQuery1.sql.Text:=' select * from Cari_Kart where Firma_id='''+ADOQuery2Cari_Kart_Ref.Value+'''';
 ADOQuery1.Open;
 if   ADOQuery2.RecordCount=1 then begin
 ADOQuery1ToplamBorc.Value:='1';
 ADOQuery1.close;
 end;
teşekkürler..
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: Tabloları toplama

Mesaj gönderen erdogan_ozkaya »

bu kodu deniyorum ama çıkamadım işin içinden :)

Kod: Tümünü seç

procedure TForm3.ADOQuery1CalcFields(DataSet: TDataSet);
var
Bookmark : TBookmark;
toplamBorc : Real;
begin
ADOQuery2.Open;
Bookmark := ADOQuery2.GetBookmark;
ADOQuery2.DisableControls;
toplamBorc := 0;
try
ADOQuery2.First;
while not ADOQuery1.EOF do begin
ADOQuery1.Close;
 ADOQuery1.sql.Text:=' select * from Cari_Kart where Firma_id='''+ADOQuery2Cari_Kart_Ref.Value+'''';
 ADOQuery1.Open;

toplamBorc := toplamBorc + ADOQuery1ToplamBorc.Value;
ADOQuery1.Next;


end;
finally
ADOQuery2.GotoBookmark(Bookmark);
ADOQuery2.FreeBookmark(Bookmark);
ADOQuery2.EnableControls;
end;
end;
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Tabloları toplama

Mesaj gönderen conari »

Kod: Tümünü seç

procedure TForm3.ADOQuery1CalcFields(DataSet: TDataSet);
var
toplamBorc : Real;
begin
try
ADOQuery1.Close;
ADOQuery1.sql.Text:=' select SUM(FATURATUTARI ) AS TOPLAM FROM FATURALARINOLDUĞUTABLO where Firma_id='''+ADOQuery2Cari_Kart_Ref.Value+'''';
ADOQuery1.Open;
TOPLAMBORC:= ADOQuery1.fielbyname('TOPLAM').value;
ADOQuery1.close;

end;
işini görür.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: Tabloları toplama

Mesaj gönderen erdogan_ozkaya »

cevabın için çok teşekkür ederim;

TOPLAMBORC:= ADOQuery1.fielbyname('TOPLAM').value;

bu satırda hata veriyor ne yapmalıyım acaba ? (fielbyname)
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: Tabloları toplama

Mesaj gönderen erdogan_ozkaya »

sanırım biraz oldu gibi fakat haala çalışmıyor eksik (Firma_id parametresinin varsayılan değeri yok)
diye bir hata veriyor

Kod: Tümünü seç

procedure TForm36.ADOQuery1CalcFields(DataSet: TDataSet);
var
toplamBorc : Real;
begin
try

ADOQuery1.Close;
ADOQuery1.sql.Text:=' select SUM (Fatura_Toplam) AS TOPLAM FROM CIKISFATURARAPOR where Firma_id='''+ADOQuery2Cari_Kart_Ref.Value+'''';
ADOQuery1.Open;
TOPLAMBORC:= ADOQuery1.fieldbyname('TOPLAM').value;
ADOQuery1.close;
finally
end;
end;
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: Tabloları toplama

Mesaj gönderen erdogan_ozkaya »

2 gündür yazıyorum en son denediğim ama olmadı :(

Kod: Tümünü seç

procedure TBakiye_Rapor.ADOQuery1CalcFields(DataSet: TDataSet);
var
Toplam:real;
begin
   ADOQuery2.close;
while not ADOQuery2.eof do
begin
  if  ADOQuery2Cari_Kart_Ref.Text=ADOQuery1Refenrans_No.Text then
  begin
  Toplam:=Toplam+ADOQuery2Fatura_Toplam.Value;
  ADOQuery2.next;
 end
  else
     begin
        ADOQuery2.next;
     end;
ADOQuery2.open;
ADOQuery1TOPLAMM.Value:=Toplam;
end;

end;
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: Tabloları toplama

Mesaj gönderen erdogan_ozkaya »

hocam bir türlü çözemedim ya mümkün ise ekte dosya olarak attım bakabilirmisiniz acaba ?
Dosya ekleri
ornek.rar
Örnek
(18.16 KiB) 60 kere indirildi
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: Tabloları toplama

Mesaj gönderen erdogan_ozkaya »

Hocam Çözdüm .çok teşekkür ederim yinede

Kod: Tümünü seç

var
        B : TBookmark;
        FaturaToplam : double ;
      begin
        AdoQueryCariKart.first;   
        while not AdoQueryCariKart.eof do
        begin
        FaturaToplam := 0;
        try
          B :=AdoQueryCariKart.getbookmark;                 
          ADOTablegirisfatura.first;                           
          while not ADOTablegirisfatura.eof do               
          begin                                            
            FaturaToplam := FaturaToplam + ADOTablegirisfatura.FieldByName('Fatura_Toplam').value ;  //baştan aşşa
            ADOTablegirisfatura.next;                          
          end;
        finally
          AdoQueryCariKart.gotobookmark(B);                   
          AdoQueryCariKart.edit;                             
          AdoQueryCariKartGiris_Fatura.value := FaturaToplam ;
          AdoQueryCariKart.post;
          AdoQueryCariKart.freebookmark(B);
        end;
        AdoQueryCariKart.next;   
      end;
end;
Kaynak : druella
Cevapla