İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

quickreportda ay'a göre rapor

A

Anonymous

Misafir
quick reportda ay bazında fatura toplamlarını raporluycam
bunu için quickreportu bir querye bağladım
querye şunu yazdım:

SELECT sum(toptutar),sum(kdvtutar),sum(geneltop) FROM fatura
where tarih>:tarih1 and tarih<:tarih2

tarihleri paramsda date olarak tanımladım.sonra başka bir forma bir combobox koyup içine ay isimlerini yazdım.comboboxın yanına koyduğum butonun clickine de şunu yazdım:

ayfatrapor.query1.close;
ayfatrapor.query1.sql.clear;
if cb1.Items[cb1.ItemIndex]='Ocak' then
begin
ayfatrapor.query1.ParamByName('Tarih1').Value:='01.01.2002';
ayfatrapor.query1.ParamByName('Tarih2').Value:='31.01.2002';
end
else if cb1.Items[cb1.ItemIndex]='Şubat' then
begin
ayfatrapor.query1.ParamByName('Tarih1').Value:='01.02.2002';
ayfatrapor.query1.ParamByName('Tarih2').Value:='28.02.2002';
end
vs. vs her ay için
ayfatrapor.query1.prepare;
ayfatrapor.query1.open;
ayfatrapor.QuickRep1.Preview;


burada 2002 tarihi yerine system yılı yazıcam,birde bu kod çalışınca ilktarih yok diyor.ne yapmalıyım?
Quickreportla ilgili yardımları için tüm arkadaşlara çok teşekkürler:)
 
A

Anonymous

Misafir
Selamlar,

Query.SQL içine yazdığın kodlara bakıldığı zaman iki tarih arasındaki fatura toplamını alır. Ve bu bir tek kaydı ve sonucu ifade eder. Eğer yanlış anlamadıysam, her ay fatura toplamları bir satırda olacak şekilde bir rapor içinde görmek istiyorsan bu kodlar ve uyguladığın yöntemle sonuca ulaşılamayacaktır. Eğer yapmak istediğin bu ise :

Bir Table oluştur, içinde sadece 1,2,3,4,...12 değerlerinin olacağı bir numeric ayno ve her kayıtda aydaki max gün sayısını içerecek bir gunno değeri ve ay isimlerini içerecek bir ayadi değeri içersin. her ay değerini bir kayıt olarak sabitle. Bu dosya böylesi QR raporlar alabilmek için senin sabit kütüphanenin bir parçası olsun ve her uygulamada bu mantığı ve dosyayı uygulayabilirsin.
.
.

function Subat29(Yil:Word): Boolean; (* Şubat ayının 29 çektiği yılı bulmak... *)
Var
Y:Word;
begin
Result := (Y mod 4 = 0)
and ((Y mod 100 <> 0)
or (Y mod 400 = 0));
end;

Var
Y,A,G:Word;
Begin

// QR Dataset ini bu belirlediğin ay ve ayın son günlerini içeren table olarak belirle...
// oluşturduğun detailband içine ayguntableAyadi değerini, Qtoptut, Qkdvtut, Qgeneltop değerlerini fatquery den alacak qrdbtext comp.ları yerleştir...

DecodeDate(Now,Y,A,G);
if AygunTable.Active=True Then AygunTable.Open;
AygunTable.Locate('AYNO','02',[LoPartialKey]); // Şubat ayı ne çeker...28-29...
AygunTable.Edit;
if Subat29(Y)=True Then
AygunTablegunno.asinteger:=29 Else AygunTablegunno.asinteger:=28;
AygunTable.Post;
AygunTable.First;


Fatquery.SQL.Clear; // fatura = fatura.dbf - Ft ise Global SQL tablename variable...
Fatquery.SQL.Add('Select ');
Fatquery.SQL.Add('Select SUM(Ft.Fattut) As QToptut, SUM(Ft.kdvtut) as QKdvtut, Sum(Ft.geneltop) As QGeneltop From Fatura Ft');
Fatquery.SQL.Add('Where (EXTRACT(MONTH FROM Ft.Tarih)=:Ayno)');
Fatquery.SQL.Add('Group By Ft.Tarih');

// Fatquery field listi içinde Q ile başlayan değişkenler görünecektir....

QuickRep1.Preview;

// NOT : QR içinde, Detailband.event içinde beforeprint aksiyonu içine aşağıdaki kodları yerleştir..

Fatquery.Prepare;

// Özet olarak QR, Ay numaraları table kayıtlarını her alışında, Fatquery o ay numarasına ait kayıtların toplam değerlerini alacaktır...

Eğer yapmak istediğini yanlış anladıysam daha açık yazarsan cevap vermeye çalışırım...

Kolay Gelsin, Saygılarımla.

QuickPink
 
A

Anonymous

Misafir
yardımın için çok teşekkür ederim.başlangıçta yazdığım kod çalışıyor fakat sadece şubat 29 da sorun var.o biraz daha basit olduğu için şimdilik onunla idare edicem.tekrar teşekkür ederim.yeni sorularım olacak,bir kaç gündür sorduğum ve kimseden cevap alamadığım.onlara da yardım edebilirsen sevinirim.
 
A

Anonymous

Misafir
Merhaba site Uyesi degerli programcı Arkadaslar,
Ben bu siteye yeni kayit oldum ve yaklasik 4 ay gibi bir suredir DELPHI ile calısmaya basladim amacim iyi bir programci olmak fakat yeterli bir egitimci bulamadigim icin programcilik kurslarinda ust seviye bilgi alma sansim olmadi Bu anlamda sizlerden yardim bekliyorum Delphi de en iyi kaynak Kimlerin ve hangi yazarlarin kitaplaridir ?? ve Delphi' ye nasil baslamaliyim su andaki bilgilerim daginik oldugu icin bocalamaktayim bana Dongu mantiklariyla ilgili olarak ornekler gonderirseniz sevinirim ve kolay yoldan mantik olusturmak icin nasil bir yol takip etmeliyim simdiden tesekkurler ediyor va islerinizde basarilar diliyorum
Bahattin POLAT
 
A

Anonymous

Misafir
Selam Bahattin arkadaşım,

Önce girdiğin bu yolda sana başarılar dilerim.
En kolay mantık oluşturmanın tarif edilebilir bir tanımı olduğunu düşünmüyorum. Zor olduğundan değil, kolay mantığın subjektif bir kavram oluşundan kaynaklanması. Bunu 15 yıldan bu vakte kadar profesyonel olarak programcılıkla uğraşmama ve 5 yıllık programcılık öğretmenliğime dayanarak söyleyebiliyorum. Yinede kolay mantığı sonuca giden en basit yol tercihi olarak bir tanım içine koyabiliriz. Seçilen bu yolun kestirme oluşu, dolambaçlı oluşu, çetrefilli veya zor oluşu..vs işte bütün bunların hepsi sonuca gidişte karşılaşılanlar ve tercih edilen yoldaki aşamalardır. Siz hangi yolu tercih etmişseniz o yolun getirdikleri ve sizin karşılaştığınız soru/sorunları algılama ve çözme yöntemleriniz..vs işte kolay mantık bu..yani sonuca gidişdeki her aşamada verilen kararlar..Fakat doğru mantık kurgulamanız en kolay mantığı kurgulamanızdan çok daha önemli ve hayatidir. Kolay mantığı tercih etmeye çalışırken doğru sonuca ulaşmayı geciktirmek, zorlaştırmak veya karışıklığa sebep vermemek gerekir...
Delphi'de en iyi kaynak delphi nin kendi içindeki yardımı, örnekleri ve kitaplarıdır..
Döngüler :

FOR Vardeğişken:=ilkdeğer TO sondeğer DO
BEGIN
.
. düngü içi işlemler.. ilkdeğerden başlayarak son değere kadar bu işlemler tekrar edilir.
.
END;

WHILE şart DO
BEGIN
.
. verilen şart sağlandığı sürece döngü çalışır.şart ortadan kalkdığında döngüden çıkılır. Dikkat edillmesi gereken en önemli şey döngü içine girmeden önce, şartın sağlanıyor olup/olmadığı.WHILE döngüsü ilk çalıştığı zaman döngü içi işlemleri yapmadan önce şartın uygunluğunu kontrol eder...
.
END;

REPEAT
.
. UNTIL ile verilen şart sağlandığı sürece döngü içi işlemler çalışır. Burada WHILE döngüsünün (LOOP) aksine şarta bakılmaksızın döngü çalıştırılır, işlemler en az bir defa yapılır ve UNTIL ile şart sağlanırsa işlemler tekrar edilir, şartın sağlanmadığı an döngü terk edilir..
.
UNTIL şart

GOTO = ilkel döngü/sapma...(Yüksek seviyeli dillerde ilkeldir...Delphi, C/C++..vs)

Bunun için Var, Const gibi tanımlama bölümlerinde LABEL paragrafadı1, paragrafadı2...vs gibi bir tanım yapılmalıdır.

Sapma Kullanımı :
BEGIN
işlemler..
if a=b Then goto eşitlik_var Else
if a>b Then goto abuyukb Else
if a<b Then akucukb;
Goto CIKIS;

eşitlik_var: showmessage('a=b sonucu bulundu...');
Goto CIKIS;
abuyukb: showmessage('a>b sonucu bulundu...');
Goto CIKIS;
akucukb: showmessage('a<b sonucu bulundu...');

CIKIS:
Exit;

End;

Dikkat edilecek olursa goto ile program akışına sapma verilemektedir..Program akışının GOTO ile yönlendirilmesi durumlarında akış yönlendirilen satırlardan sonra devam eder..(kullanımını tavsiye etmiyorum..Profesyonel olmadığı ve programları yavaşlattığı bilinen gerçeklerdir..Bu mantığı (döngü olarak kullanılabilmektedir..) Kolay mantık olarak görenler vardır..Fakat ben döngü mantığının öğretilmesi haricinde kullanılmasının doğru olmadığını düşünüyorum..

Döngü için kullanım:

i:=0; {i 0 ile başlayacak }
Tekrar :
inc(i); {i değeri bir arttırıldı..}
if i>30 Goto dongucik;
Showmessage('I='+inttostr(i),' değeri aldı..');
Goto Tekrar;
dongucik:
{ i döngüsünden çıkıldı... i enson 31 oldu}

{ For kullanımı :


FOR I:=1 TO 30 do
Showmessage('I='+inttostr(i),' değeri aldı..');

{i döngüsünden çıkıldı...}

FOR i:=30 DOWNTO 1 DO { Burada 30 dan geriye doğru döngü kurulmuştur..}

Umarım yardımcı olmuşumdur...

Kolay gelsin..Saygılarımla..

QuickPink
 
A

Anonymous

Misafir
Merhaba

Marco Cantu'nun kitapları oldukça iyidir. Bir inceleyin büyük ihtimalle alırsınız (fiyatı biraz tuzlu ama değer.)
 
A

Anonymous

Misafir
Marco Cantu dahil çoğu kitabı e-book olarak bedava edinmek mümkün.
PDF leri var ve yeterinde iyi.

p2p programları deneyebilirsin (bearshare gibi)
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst