استفاده از یک عکس در گزارشی دیگر با SubReport

حال که نمایش عکس در یک گزارش کریستال ریپورت را فرا گرفتیم. شاید با این مشکل واجه شویم که چگونه از این عکس به همراه اطلاعات دیگر استفاده کنیم؟

راه حل:

1- اگر اطلاعاتمان در حد چند فیلد است بهتر است این چند فیلد را به صورت پارامتر به گزارش ارسال کنیم(به زودی درباره پارامتر ها صحبت می کنیم)

2- اگر اطلاعات بیشتر از چند فیلد است بهتر است این اطلاعات را در یک گزارش مستقل قرار داده و عکس را در گزارشی دیگر و از SubReport برای نمایش گزارش حاوی عکس استفاده کنیم.

پس از آماده کردن گزارش حاوی عکس برای استفاده از آن به عنوان SubReport به صورت زیر عمل می کنیم:

1- در جایی از گزارش حاوی اطلاعات که می خواهید عکس را نمایش دهید رات کلیک کرده و از منوی insert گزینهSubReport را انتخاب کنید

 

 

 

 

 

 

 

 

 

 

 

 

پنجره Insert SubReport باز می شود در این پنجره گزینه اول یعنی Choose Crystal Report In Project به طور پیش فرض در حالت انتخاب قرار دارد. در مقابل ReportName لیستی از تمام گزارش هایی که ایجاد کرده اید و در پروژه موجود هستند نمایش داده می شود که شما بایستی گزارشی را که حاوی عکس است انتخاب کنید

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 ممکنه عکس شما با توجه به تغییر سایزی که باید در اینجا بدید درست نمایش داده نشه که در این صورت می تونید روی subreport راست کلیک کنید و EditSubreport رو بزنید و عکس رو در گزارش در جای مناسبی قرار بدید

 

 

 

 

 

 

 

 

 

همانطور که قبلا توضیح داده شده توسط کدهایی مانند زیر شما می تونید اطلاعات را در گزارش اصلی Load کنید(در اینجا IdCart نام گزارش حاوی اطلاعات من است)این کدها رو دوباره در اینجا می نویسم

 

Dim IdCartrpt As New IDCartRpt

Dim sqltext As String = "select * from tblmembers where memberid='" + memberId + "'"

Dim con2 As New SqlClient.SqlConnection(yourConnectionString)

Dim dset2 As New DataSet

dset2.Dispose()

dset2 = New DataSet

Dim dap2 As New SqlClient.SqlDataAdapter(sqltext, con2)

dset2.Clear()

con2.Open()

dap2.Fill(dset2, "tblmembers")

IdCartrpt.SetDataSource(dset2)

con2.Close()

 

 

توسط کدهایی که در بخش "عکس و کریستال ریپورت" گفته شده عکس را در گزارش نمایش دهید و دقیقا مانند یک گزارش مستقل DataSource را برای آن گزارش تعیین کنید مانند زیر

 

 

Dim imagereport As New ImgReport

imagereport.SetDataSource(dsImgRpt)

 

که ImgReport نام گزارش حاوی عکس است و dsImgRpt همان DataSet است که با عکس پر شده است

شی ای به نام SubRep تعریف و ایجاد می کنیم و آنرا با تمامی SubReportهای گزارش اصلی (در اینجا IdCartRpt) پر می کنیم به صورت زیر

 

Dim subrep As CrystalDecisions.CrystalReports.Engine.Subreports

subrep = IdCartrpt.Subreports

 

 

با این کار ما به تمامی SubReportهایی که در Report اصلی insert کردیم دسترسی داریم

با یک خط کد زیر subReport حاوی عکس را انتخاب و پر می کنیم

 subrep.Item("Report.rpt").SetDataSource(dsImgRpt)

 

 

 

 

دقت کنید که Report.rpt نام فایل گزارش حاوی عکس است که آنرا به عنوان subReport به گزارش اضافه کردیم اگر آنرا به خاطر ندارید!! بر روی SubReport کلیک راست کرده و Format Object را انتخاب کنید کادر زیر که Format Editor می باشد باز می شود در برگه SubReport در مقابل SubReportName نام subReport که باید به جای Report.rpt در دستور بالا جایگزین کنید نوشته شده است

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

کار تمام است نتیجه را می توانید در تصویری مانند زیر ببینید

 

 

 

گزارش تخلف
بعدی