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();
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();




