excel'e gönderiyorum ancak!!!

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
platipinna

excel'e gönderiyorum ancak!!!

Mesaj gönderen platipinna »

Sevgili Arkadaşlar,
aşağıdaki kodla;

procedure TForm1.dxButton8Click(Sender: TObject);
var
v,sayfa:variant;
i,d:integer;
r:variant;
begin
v:=createoleobject('excel.application');
v.workbooks.add;
sayfa:=v.workbooks[1].worksheets[1];
r:=v.activeworkbook.worksheets[1].cells[1];
i:=0;
d:=0;
while Not DBISAMTable1.eof do
begin
i:=i+1;
d:=d+1;
r.cells[1+d,i]:=DBISAMTable1.FieldByName('sicil').AsString;
r.cells[1+d,i+1]:=DBISAMTable1.FieldByName('memur soyadi').AsString;
r.cells[1+d,i+2]:=DBISAMTable1.FieldByName('gorevi').AsString;
DBISAMTable1.Next;
i:=0;
end;
v.visible:=true;//Exceli acip verileri
end;

bu kodlarla sicil,memur soyadi ve gorevi kayıtlarını sorunsuz olarak excel'e gönderiyorum ancak aynı şahısa ait birden fazla kayıt varsa bunlarıda excele yazıyor yani aynı isimden ve sicilden 20 kayıt varsa 20 sini de alt alta yazıyor, sizden ricam bunları eleyip her kişiden ne kadar kayıt olursa olsun bir satıra sadece bir isim yazsın...

500 ali memur
750 hasan hizmetli
815 ayşe memur
(hepsinden 10-15 kayıt var ancak 1 er isim gözükmesini istiyorum)

şeklinde yazması..bilmem anlatabildimmi? bunun bir yolu yöntemi varmı veya daha değişik kolay bir şekilde nasıl halledebilirim, değerli arkadaşlarımın ve uzman hocalarımın yardımına ihtiyacım var. (grid olarakda RXDBgrid kullanıyorum). Herkezin Kurban Bayramını Kutlar saygılar sunarım....
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Tablonun tamanını degil de bir Query calistirip bunun sonucunu Excel'e atma isi yaparsaniz kolayca hollolur. Calistirmaniz gereken Query'nin SQL'i de kabaca su sekilde olmali..

Kod: Tümünü seç

Select SICIL, MEMUR_SOYADI, GOREVI, Count(*) as ADET
from TABLO
group by SICIL, MEMUR_SOYADI, GOREVI
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Ad ve Soyad'a if ile koşul koy döngü arasına Aynı kayıt varsa o kayıtı atlasın.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Merhaba;

platipinna Özel Mesajında

sayın hocam çok özür diliyorum, dediğiniz şekilde yaptım ama galiba beceremedim. mümkünse benim gönderdiğim koda göre if then koşuluna göre düzenleyim bana göndermeniz mümkünmü? yardımınız için şimdiden çok teşekkür ederim..
Öncelikle şunu belirtmek istiyorum Arkadaşlar Delphi ile konuları lütfen özel mesaj çekmeyiniz. Bu konu için forum kurallarına uymanızı rica ediyorum. 1 kişinin okuyup cevap yazması ile 850 kişinin okuyup cevap yazması çok farklı.

Her neyse sorunuza gelelim.

Kod: Tümünü seç

procedure TForm1.dxButton8Click(Sender: TObject); 
var 
    v,sayfa:variant; 
    i,d:integer; 
    r:variant; 
    Str:String;
begin 
    v:=createoleobject('excel.application'); 
    v.workbooks.add; 
    sayfa:=v.workbooks[1].worksheets[1]; 
     r:=v.activeworkbook.worksheets[1].cells[1]; 
     i:=0; 
     d:=0; 
     Str:='';
while Not DBISAMTable1.eof do 
begin 
     i:=i+1; 
    d:=d+1; 
    
    if Str <> DBISAMTable1.FieldByName('sicil').AsString  Then
    Begin 
         Str := DBISAMTable1.FieldByName('sicil').AsString;
         r.cells[1+d,i]:=DBISAMTable1.FieldByName('sicil').AsString; 
         r.cells[1+d,i+1]:=DBISAMTable1.FieldByName('memur soyadi').AsString; 
          r.cells[1+d,i+2]:=DBISAMTable1.FieldByName('gorevi').AsString; 
          DBISAMTable1.Next; 
          i:=0; 
    End
    Else
        DBISAMTable1.Next; 
end; 

v.visible:=true;//Exceli acip verileri 
end; 
Kodlama Bu şekilde olması lazım kontrol etmedim ama mantık bu.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

platipinna, özel mesajla soru olayı bir daha gerçekleşirse, özel mesaj hizmetiniz kapatılacaktır :twisted:

Lütfen Forum Kurallarını okuyunuz!

İyi günler.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

arkadaş isyan etmiş ancak bu konuda haksız olduğunu sebepleriyle kendisine de yazdım. Burda da sebeplerini size de izah etmenin uygun olacağı kanaatine vardım.

1. Forum Kurallarını lütfen okuyun. Bunlar sadece şunu yapacaksın, bunu yapacaksın şeklinde kural manzumesi değil. 5 sene boyunca oluşan bir rehber. Bunu okumadım, bilmiyordum bahanesini de kabul etmiyorum. Bir 5 dakikanızı ayırıp okuyun.

2. Arkadaşın sorusundan tam 13 dk. sonra Fahrettin abi mesaj yazmış, hemen 2 dk. sonra Hüseyin hocam mesaj yazmış. Bu kadar kısa sürede cevap verilmiş. Arkadaş derdini foruma yazsa, yine eminim ki kısa sürede ayrıntılı cevap gelecek ve de gelmiş bile.

Özel mesajla ilgili hassasiyetimizin sebebini birçok defa izah ettim. Bir daha anlatmaya gerek duymuyorum.

3. Daha önce çok daha toleranslı davranırken, sertleşmemin bir nedeni de kuralların çok sayıda kişi tarafından ihlal edilmesi. Kusura bakmayın arkadaşlar ama biz size yardımcı olmak için saatlerimizi harcarken, siz de bir seferliğine 5 dakikanızı ayırın. Mesaj yazarken iki dakikanızı ayırıp, biraz özen gösterin.

İnanın şirketteki bilgisayarın B'sini yeni öğrenen insanlar bile artık hatayı not etmeden bizi aramıyorlar. Biraz daha dikkat!

İyi günler.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam.

- Özel mesaj konusunda aynı fikirleri paylaştığımı bildiriyor, @husonet'in verdiği örnekte bir detay eklemek istiyorum.

- DBISAMTable1'inizin sıralama kriteri sicil'e göre olmalı. Eğer bu alan dışında bir sıralama (isim, soyad vs.) sözkonusu olursa yazılan procedure doğru çalışmama ihtimali doğacaktır. :!:

- Diğer yandan @fahrettin'in söylediklerini deneyin derim. Bu sayede sonuçlarınızı çabucak elde edersiniz.
Resim
Resim ....Resim
Cevapla