Data süzdürüp Excele aktarma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- r_korkmaz44
- Üye
- Mesajlar: 63
- Kayıt: 11 Ara 2005 01:00
Data süzdürüp Excele aktarma
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
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
- r_korkmaz44
- Üye
- Mesajlar: 63
- Kayıt: 11 Ara 2005 01:00
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
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..
- Bir DBase veritabanımız var. Bu veritabanında STOK bilgisi tutulyor. Alanlarımız..
- 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.
- 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.
- 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..

- 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ı
- 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
- Buraya kadar doğru anladıysam macro için bir sebep göremiyorum. Nereden bu sonuca vardığınızı inanın çok merak ediyorum.

- Ö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
şeklinde ulaşabilirsin.
// EK //
- 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...
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');
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;
- 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 ?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.

- 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...

Re: Data süzdürüp Excele aktarma
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
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
Re: Data süzdürüp Excele aktarma
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..



Re: Data süzdürüp Excele aktarma
örnek için teşekkürler ama sorunuma çare olmadı
Re: Data süzdürüp Excele aktarma
Sen Önce Sorununu SQL Sorguyla çözmen gerekir dahasonra Excele gönderebilirsin.
Re: Data süzdürüp Excele aktarma
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.
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.
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Data süzdürüp Excele aktarma
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!