26 Aralık 2017 Salı

Parametreli Rapor Oluşturma (FastReport)

Raporlama işlemlerinde bazı durumlarda parametre kullanmak gerebiliyor(id'ye göre ya da belirli bir sutuna göre veri getireceksek). Bu durumlarda fastreportta paremetre kullanımının nasıl olacağı anlatılacaktır.

Fastreportta normal bir raporun nasıl tasarlanağı önceki yazımda belirtmiştim. Sorgu sihirbazından sorgu oluştururken bu sefer where ifadesinden sonra hangi paremetreye göre düzenleme yapacaksak onu belirtiyoruz. Örnekte ogrenciID'ye göre sorgulama yapılmıştır.


Bir sonraki adımda parametrelerimizi belirleyeceğimiz pencere açılacaktır. Bu pencerede alanları şekildeki gibi doldurmalıyız. 


Bundan sonraki adımlar normal rapor tasarlamayla aynıdır. Raporun kodundaki görünüm şu şekilde olmalıdır. Burada sorgumuzu ve ogrenciId isimli paremetremizi görebiliyoruz.



  <MsSqlDataConnection Name="Connection" ConnectionString="rijcmlq+rW0RkboK+/8CKGGYUID3ctBV8q9SvKYxl3iiE7vBnh7Tgou0+4WFf3NfmPSvHVFXQXAfsTr/dRRdNAqxQpM/oTEI/2kQMOdiK8+QLPN4CnjmnBHFqhlpALlSNrvKzLmFPIQPbnjQDXWE47A4sszcSmcdCb7AVnUdeQeklQgeOvDJv1owtTl8hxQj5f7awO/">
      <TableDataSource Name="Table" Alias="Deneme" DataType="System.Int32" Enabled="true" SelectCommand="SELECT O.ogrenciAd, O.ogrenciSoyad&#13;&#10;FROM &quot;Ogrenci&quot; O where O.ogrenciID=@ogrenciAd&#13;&#10;">
        <Column Name="ogrenciAd" DataType="System.String"/>
        <Column Name="ogrenciSoyad" DataType="System.String"/>
        <CommandParameter Name="@ogrenciId" DataType="22" Expression="[Parameter]"/>
      </TableDataSource>
    </MsSqlDataConnection>


Rapor için kullanılan kod parçacığı ise şu şekildedir.



public partial class deneme : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            int ogrenciId = 1;
            object[,] icerik = { { "@ogrenciId", ogrenciId } };
            //icerik ile store pr. üzerinden datatable'ımızı dolduruyoruz. 
            DataTable odemePlani = Erdi.SP.tablo_getir(icerik, "deneme");
            using (var r = new Report())
            {
                r.SetReport(r);
                r.Load(Server.MapPath("~/Content/Dosyalar/Cikti/isimsiz.frx"));
                r.RegisterData(odemePlani, "Deneme");
                r.Prepare();

                FastReport.Export.Pdf.PDFExport pdf = new FastReport.Export.Pdf.PDFExport();

                using (MemoryStream m = new MemoryStream())
                {
                    r.Export(pdf, m);

                    Response.ClearContent();
                    Response.ClearHeaders();
                    Response.Buffer = true;
                    Response.ContentType = "Application/PDF";
                    Response.AddHeader("content-disposition", "inline; filename=" + " - Deneme.pdf");

                    m.Position = 0;
                    m.WriteTo(Response.OutputStream);
                    Response.End();
                }
            }
           
        }
    }



Bu örnekte FastReport ile veritabanımızdaki id'si 1 olan kullanıcıların listelenmesi sağlanmıştır. Dışarıdan gelen bir parametreye göre fastreportta veri aktarımı gerçekleştirilmiştir.
Paylaş:

1 yorum:

OzanCem dedi ki...

Bilgilendirme için teşekkürler

Yorum Gönder