Data süzdürüp Excele aktarma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
r_korkmaz44
Üye
Mesajlar: 63
Kayıt: 11 Ara 2005 01:00

Data süzdürüp Excele aktarma

Mesaj gönderen r_korkmaz44 »

Selamun aleykum;
Arkadaşlar okulumuz pansiyonu için basit bir ambar programı oluşturacağım. Ürün adı,fiyat,miktar,tutar,ay ve sayı alanlarından oluşan bir tablo yaptım.Ürün adları 40 kalemden oluşmakta.(Dbase) Arkadaşlar kayıt ederken zaten bir sorumunuz yok.
Sorun şu: Örneğin domates ürününü Ocak Ayında çıktısını yapacağım. Günlerden 15(Yani Ocağın 15'i oluyor. Bunu Combobo2 de olan ayları items ile yazım. Ocak-Şubat diye) olduğu zaman Önce Ocağın kayıtlı olduğu Sayfa1 e gidecek ve excelde 15. satıra fiyat,tarih,tutar,miktar bilgilerini otomatik olarak girmesi gerekiyor.Yani bunu Ocağın 15.ine otomatik olarak bu bilgileri girmesi gerekiyor. Belki anlatamamış olabilirim.Exceldeki tabloyu şöyle alta yazarsam açıklayıcı olacaktır sanırım.

Sıra........... Tarih ...... Fiyat ...... Miktar ...... Tutar
1 ........... 01.09.2006...... 15 ...... 3 ...... 45
2 ........... 02.09.2006...... 15 ...... 20 ...... 300
.........................................
........................
........................................

15 ...... 15.09.2006 ...... 20 ...... 3 ...... 30
......
......
.....

31 ...... 31.09.2006 ...... 2 ...... 4 ...... 8

yani tarih otomatik olarak hangi günde ise sıra nosu olan yere denk gelecek.Ve bunu biz datadan nasıl yazdırabiliriz. Excel kodlarından örneğin ürünümüz "domates" olduğu zaman öncelikle bu domatesi süzdürüp sonra hangi günde girilmiş ise ona göre diğer bilgiler(fiyat,tutar...tarih..) girilecek.
Alanlar ise şöyle:
Ürün: Combobox1
Fiyat: Edit1
Miktar: Edit2
Tutar: Edit3
Ay : Combobox2
Gün: Combobox3



Yardımlarınız için şimdiden teşekkür ederim. SAYGILAR
Kullanıcı avatarı
r_korkmaz44
Üye
Mesajlar: 63
Kayıt: 11 Ara 2005 01:00

Mesaj gönderen r_korkmaz44 »

Cevap veren arkadaşımız yokmu? SAYGILAR.
ikut

Mesaj gönderen ikut »

r_korkmaz44 yazdı:Cevap veren arkadaşımız yokmu? SAYGILAR.
sorunuz gercekten çok kompleks ve delphi sadece 1.ci ayağı iyi düzeyde excel makroda bilmeniz gerek. tavsiyem deborah pa te in sayfalarını dfilan incelemeniz.
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

slm
ikut arkadışımızın dediği gibi bunu visual basic ile makro yazarak halletmeniz gerekiyor....
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Visual Basic Macro'su ? Neden ?

- Soruyu bir de benim anlayacağım şekilde şekile dönüştürebilirsek sevinirdim. Anladığım kadarıyla Delphi bunu çok rahat yapar, ama önce soruyu netleştirlerim kararımı sonraya saklıyorum.. :lol:

- Bir DBase veritabanımız var. Bu veritabanında STOK bilgisi tutulyor. Alanlarımız..

Kod: Tümünü seç

 Ürün adı  - fiyat  - miktar  - tutar  - ay - sayı
- Bir Excel dosyasında her ay için bir WorkSheet açılmış. Yani 12 tane WorkSheet (Çalışma Sayfası) mevcut.

- Her Çalışma sayfasında (WorkSheet), ilgili ayın her günü için tek tek belirlenmiş günlük fiyat bilgisi alanları var.

Kod: Tümünü seç

Sıra     Tarih    Fiyat   Miktar   Tutar
  1   01.09.2006    15      3        45
  2   02.09.2006    15     20       300
 ..
 ..
 15   15.09.2006    20      3        30
 ..
 ..
 31   31.09.2006     2      4         8
- Demek oluyor ki, veritabanındaki bilgileri Excel'de raporlama gereksinimi var. Basit bir OleAutomation demektir.

- Buraya kadar doğru anladıysam macro için bir sebep göremiyorum. Nereden bu sonuca vardığınızı inanın çok merak ediyorum. :o
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Örnek hazırladım gerisi sana kalmış...

Bu örnek, kapalı iken excel dosyasını açacaktır. Açık olan bir dosya ise, açık olana erişmek için CreateOleObject yerine

Kod: Tümünü seç

    xExcel := GetActiveOleObject('Excel.Application');
şeklinde ulaşabilirsin.

Kod: Tümünü seç

// Uses ComObj
procedure TForm1.Button1Click(Sender: TObject);
Var
  xExcel     : OleVariant;
  xWorkSheet : OleVariant;
  xlsFile    : string;
  AyNo       : Integer;
  GunNo      : Integer;
begin
  xlsFile := 'c:\rapor.xls'; // Rapor çıkacak Excel Dosyamız...
  AyNo    :=  1; // Ocak ayı için 1. sayfa demek olacak...
  GunNo   := 15; // ayın 15'i olsun

  xExcel  := CreateOleObject('Excel.Application');
  xExcel.Workbooks.Open(xlsFile);

  // Çalışma Alanı Seçimi
  xWorkSheet  := xExcel.Worksheets[ AyNo ]; // AyNo nolu sayfa açıldı.
  xWorkSheet.Cells[ GunNo, 3 ].Value := 'Ocak 15 Fiyatı';
  xExcel.Visible := True;
  xExcel     := Unassigned;
  xWorkSheet := Unassigned;
end;
// EK //
Excel kodlarından örneğin ürünümüz "domates" olduğu zaman öncelikle bu domatesi süzdürüp sonra hangi günde girilmiş ise ona göre diğer bilgiler(fiyat,tutar...tarih..) girilecek.
- Arayıp kelimesinin yerine süzdürüp kullanmışsınız. Sanırım arkadaşların "macro bilgisi lazım" demesine sebep sihirli kelime bu ? :lol:

- Verdiğim örnekten yola çıkarak, ürünler sütununda minik bir döngü ile 'domates'e ait satırları öğrenebileceğinizi söylememe gerek yok ama söyledim... :idea:
Resim
Resim ....Resim
canan35
Üye
Mesajlar: 11
Kayıt: 09 Ağu 2010 11:51

Re: Data süzdürüp Excele aktarma

Mesaj gönderen canan35 »

slm
Excel e aktarma konusunda bir çok siteden araştırma yaptım
ancak query sorgusunda aldığım sonucu tekrar sorgulayarak excel e gönderme ile ilgili sonuç bulamadım
veya ben ters bir mantıkta ilerliyorum
query sorgum
mus_kod cınsıyet durum toplam
101 ERKEK AKTİF 3
101 ERKEK PASİF 9
101 KADIN AKTİF 12
101 KADIN PASİF 2
102 ERKEK AKTİF 5
102 KADIN PASİF 6
....................................... devam eden sonuç
Bu sonuç içerisinden 101 kodlu ERKEK AKTİF olan TOPLAM sonucunu excel de a7 hücresine
101 kodlu ERKEK PASİF olan TOPLAM sonucunu excel de b12 gibi atama yapmak istiyorum.
yardımlarınız için şimdiden teşekkürler
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Data süzdürüp Excele aktarma

Mesaj gönderen conari »

Bir kaç örnekte Ben ekleyeyim.

Kod: Tümünü seç

   var
     Excel, Sayfa :variant;
    begin
          Excel := CreateOleObject('excel.application');
          Excel.workbooks.add;
   Excel.range['A1'].value:= CmbTablo.TEXT;
   Excel.range['B1'].value:='Satış Miktarı';
   Excel.range['c1'].value:='Euro Satış Tutarı';
   Excel.range['c1:c100'].NumberFormat := '#.##0,00';
   Excel.range['b1:b100'].NumberFormat := '#.##0';
   Excel.Range['b'+inttostr(z)+'',''+ 'c'+inttostr(z)+''].Formula := '=Sum(b'+inttostr(2)+':b'+inttostr(z-1)+')';
   Excel.range['A1:c1'].Font.Color      := CLRED;
   Excel.range['A1:c1'].Font.Bold:= True;
   Excel.Range['b'+inttostr(z)+'',''+ 'c'+inttostr(z)+''].Font.Color:= CLRED;
   Excel.Range['b'+inttostr(z)+'',''+ 'c'+inttostr(z)+''].Font.Bold := True;
   excel.range['A1','c100'].EntireColumn.AutoFit;
   excel.range['A2'].select;
   excel.ActiveWindow.FreezePanes      := True ;
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
canan35
Üye
Mesajlar: 11
Kayıt: 09 Ağu 2010 11:51

Re: Data süzdürüp Excele aktarma

Mesaj gönderen canan35 »

örnek için teşekkürler ama sorunuma çare olmadı
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Re: Data süzdürüp Excele aktarma

Mesaj gönderen yusuf »

Sen Önce Sorununu SQL Sorguyla çözmen gerekir dahasonra Excele gönderebilirsin.
canan35
Üye
Mesajlar: 11
Kayıt: 09 Ağu 2010 11:51

Re: Data süzdürüp Excele aktarma

Mesaj gönderen canan35 »

Select mus_kod, cınsıyet, durum count(mus_kod) as toplam from kisi
group by mus_kod, cınsıyet_durum

sorgum bu ve yukarıdaki sonucu alıyorum, bu sorgudan çıkan sonuçtan da
101 erkek aktif olanların toplamınıda excell A11 hücresine
101 erkek pasif olanların toplanını excell b11 hücresi gibi bunu nasıl yapacağım konusunda bir fikir.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Data süzdürüp Excele aktarma

Mesaj gönderen greenegitim »

EMS Advanced Data Export componentini kullanıyorum ben sorgulama yaptıktan sonra excel, word, pdf, sql v.s v.s. istediğim alanları seçip ona göre aktar diyorum.
Mücadele güzelleştirir!
Cevapla