10 Nisan 2009 Cuma

Crystal Report İçerisinde Dinamik Veri

Evet, ihtiyaç duyduğum birşeydi bu... Yeni keşfettim, çok işime yarayacak gibi, umarım sizin de işinize yarar.

Özellikle verilerin çok değişken olduğu günümüzde olabildiğince statik yazılımlar geliştirmekten kaçınmalıyız.
Birçok uygulamada olduğu gibi, Crystal Report içerisinde de veritabanı bağlantısı veritabanı sürücüleri (DB Drivers) tarafından yapılmaktadır. Bu veritabanı sürücüleri belli bir veritabanı tipini veya veri erişim metodunu tutmak için tasarlanmıştır.

CrystalReport ile veri erişimi 2 şekilde gerçekleştirilir. Bunlar Pull ve Push olarak bilinen metodlardır.

PULL Modeli

Bu modelde sürücü direkt db'ye bağlanır ve tasarım aşamasında ona verilen parametreleri kullanır.

Bu modelde herşey rapor tarafından gerçekleştirilir: veritabanına bağlantı sağlamak ve SQL sorgularını çalıştırmak; Yazılımcının hiçbir kod müdahalesi bulunmasına gerek yoktur.

Bu Crystal Reports içerisindeki default metodtur.

PUSH Modeli

Bu model yazılımcının müdahalesini gerektirir.

Crystal Report parametre olarak bir DataSet nesnesini alır (içerisinde belirtilen alanlar olma koşuluyla).
Bu da yazılımcnın DataSet'i hazırlaması gerektiği anlamına gelir.
Yani raporu çağırdığımız yerden istenilen veritabanına kod üzerinden bağlantıyı kurmak, SQL sorgularını çalıştırmak ve verileri DataSet'e yüklemek anlamına geliyor. Daha sonra da bu nesne Crystal Report'a gönderilerek uygun şekilde gösterilir.

Bu model sayesinde crystal report içerisindeki dinamikliği sağlamış oluyoruz, çünkü ona gönderilen DataSet'i kod üzerinden dinamik olarak hazırlayıp ona sunuyoruz.


Örnek:

İlk önce ReportDocument tipinde bir değişken tanımlıyoruz.

CrystalDecisions.CrystalReports.Engine.ReportDocument myReportDocument;
myReportDocument = new CrystalDecisions.CrystalReports.Engine.ReportDocument();


Daha sonra hazırlamış olduğumuz raporu ReportDocument değişkenimize atıyoruz.

myReportDocument.Load(@"C:\Documents and Settings\nurten\Desktop\Article776\CrystalTest\CrystalReport.rpt");

Alttaki işlemde ise DataSet nesnemizi rapora gönderiyoruz.

myReportDocument.Database.Tables["preview"].SetDataSource(myDS);

Son olarak da Report Document nesnemizin görüntülenmesini sağlıyoruz.

CrystalReportViewer1.ReportSource = myReportDocument;
CrystalReportViewer1.DataBind();

26 Mart 2009 Perşembe

Sevimli kirpi yavrusu :)

Bu kadar sevimli bişey olabilir mi yaa :)

Şimdi bunun yazılım çözümüyle ne alakası var diyeceksiniz ama n'apiim, çok şirin, moral için bu :)



21 Mart 2009 Cumartesi

Mobile 6 Uygulamalarında Breakpoint ile Debug Hatası

Windows Mobile 6 ile proje geliştirmek isteyenler bilgisayarlarında CF2 (Compact Framework 2) ve onun SP2 (Service Pack 2) kurmaları gerekiyor, çünkü projeyi çalıştırdığınızda programın gidişatını adım adım izlemek isteyenler breakpoint koyduklarında breakpoint'in yanında bir ünlem işareti görecektir, uyarısı ise (The breakpoint will not currently be hit, the specified module can not be loaded).

SP2'yi buradaki adresten indirebilirsiniz: http://www.microsoft.com/downloads/details.aspx?FamilyID=7befd787-9b5e-40c6-8d10-d3a43e5856b2&DisplayLang=en