Farklı databaselerdeki ortak alana göre genel toplam almak..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Ok. Hocam dediğiniz gibi syntacx hatası varmış. Orada sorun halloldu şimdi ise database'i değiştirerek şirketlerin bilgilerini aktarmaya yine aşağıdaki kodu kullanıyorum ama yine sonsuz döngü. :( Nedir bu benim sonsuz döngülerle çektiğim. :( Şirketlerin database isimleri "stable"'da tutulduğu için direk oradan alıyorum.

Kod: Tümünü seç

    stable.First;
    While Not stable.Eof Do
      Begin
        anafrm.Database1.Close;
        anafrm.Database1.Params[2] := 'ODBC DSN='+stableadress.AsString;
        anafrm.Database1.Open;

        ltable.close;
        ltable.SQL.Clear;
        ltable.SQL.Add('Select * From makbuz where id1=:id');
        ltable.Params[0].AsInteger := dtableid.AsInteger;
        ltable.Active := True;
        ltable.First;

        rxm.Open;
        while not ltable.Eof Do
          Begin
            rxm.Append;
            rxmunvan.AsString := ltableunvan.AsString;
            rxm.Post;
        ltable.Next;
          End;
      End;
    stable.Next;
  End;
İlgilendiğiniz için çok tşk ediyorum arkadaşlar...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

Mesaj gönderen kara_kule06 »

Kardeş yine sonsuz syntax hatası var.
stable.First;
While Not stable.Eof Do
Begin
anafrm.Database1.Close;
anafrm.Database1.Params[2] := 'ODBC DSN='+stableadress.AsString;
anafrm.Database1.Open;

ltable.close;
ltable.SQL.Clear;
ltable.SQL.Add('Select * From makbuz where id1=:id');
ltable.Params[0].AsInteger := dtableid.AsInteger;
ltable.Active := True;
ltable.First;

rxm.Open;
while not ltable.Eof Do
Begin
rxm.Append;
rxmunvan.AsString := ltableunvan.AsString;
rxm.Post;
ltable.Next;
End;
stable.Next;
End;

End;
Böyle Yap sonsuz döngü oluşmaz.

Senin yaptığında ise devamlı olarak Stable nin birinci kaydında işlemi tekrarlıyor.
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Evet arkadaşlar sonunda sorun çözüldü istediğim gibi tüm databaseleri ekleyebiliyorum. Yalnız Bir kaç mesaj önce serkan hocam pagefooter yada groupfother ile şirket bazında ayırarak ayrı ayrı ve genel toplamları alabilirsin demişti. Şu andaki durumda ben bunları temp tabloya eklediğim zaman hepsini tüm genel toplamı alabiliyorum. peki şirket bazında toplamları nasıl alabilirim acaba.

Bu arada problemimi çözmek için yardım eden tüm arkdaşlara ayrı ayrı tşk ediyorum...

Allah hepinizden razı olsun...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

Hocam kayıtları tmptabloya yazarken o anki aktif şirketide aktarmalısın..

yani tablon aşağıdaki gibi olmalı...
[img]
http://www.tekkalem.com.tr/images/tablo.jpg
[/img]

Rapor aracı ne kullanıyorsun.Burda raporu şirket alanına göre gruplandırırsan..Dediğin iş olur.[/img]
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Sonsuz döngülere takılmanın en önemli nedeni kodlama standardı kullanmaman.Bloklar halinde yazsan böyle bir problemle çok nadir karşılaşırsın o kadarı da gözden kaçar normaldir...

Kolay gele..
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Serkan hocam aktardığım şirketlerin isimlerini de yazarım o sorun değil de şimdi sizin de görüntüsünü verdiğiniz şirket1, şirket2 gibi olan alanların kendi altlarında da toplamları olması gerekiyor. Yani şirket1'in altında Borç ve alacağ'ı toplanmalı ondan sonra şirket2'nin borç ve alacağı toplanmalı en son olarak ta en altta tüm şirketlerin genel toplamları olması gerekmektedir.

Yapmak istediğim olay bu umarım tam olarak açık bir şekilde anlatabilmişimdir... :(
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

Anladım hocam gayette iyi anladım..

sen hala hangi rapor bileşenini kullandığını söylemedin ama rave report değildir umarım.onu bilmiyorum çünkü.bu arada sen o şirket bilgilerinide yazdır.Rapor bileşeninide söylersen olur biter.
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Hocam kusura bakmayın yazmayı unutmuşum qreport ile fastreport kullanıyorum. Şirket bilgilerini de ekledim olaya hocam.

Raporlama bileşeninde sizce hangisi daha sağlıklı olur?
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

tabiki fast report daha iyidir..

fast reporta reporttitle(Rapor Başlığı) bandından sonra bir tane groupheader(Grup Başlığı) bantı koyup üzerine çift tıkla ifade bölümüne

<frxdataset1."SIRKET_ADI">

Yaz.(Frxdataset tmpTablona bağlı olsun)

sonra masterdata(Asıl Veri) bandı koyup carikodu,ünvanı,bakiye gibi gösterielcek alanları koy.
masterdata bandın altına groupfooter(Grup Sonu) bandı koyup.üzerine birtane memo koyup içeriğine

[SUM(<frxdataset1."BAKIYE">,MasterData1)]

Yaz.BAKIYE toplamı alınacak alan olsun.Böylece her şirketin bitişinde o şirketteki carilerin bakiye toplamını verir.

en sonada ReportFooter(Rapor Özeti) koyup onada aynı şekilde bir memo koyup içeriğini aşağıdaki gibi yaz.

[SUM(<frxdataset1."BAKIYE">,MasterData1)]

buda şirket bilgisine bakmadan tüm carilerin toplam bakiyesini verir.

Ben Fastreport 3.20 için yazdım.Sen uyarlarsın kendi versiyonuna.
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Ok. Hocam çok tşk ediyorum ilgi ve alakanız için. Hemen çalışmalara başlıyorum. Takıldığım yerde yine yazarım. Çok saolasınız...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Cevapla