ورود

View Full Version : مخفی نمودن subreport های خالی در cr.net



hosseinali
چهارشنبه 06 اردیبهشت 1385, 12:07 عصر
با سلام خدمت همه دوستان

من یک ریپورت اصلی دارم که درون آن یک subreport لود می شود ، برای بعضی از رکوردهای ریپورت اصلی subreport هیچ رکوردی ندارد ، پس نباید subreport نمایش داده شود .

من چگونه می توانم این مشکل را حل کنم.

زبان برنامه نویسی vb.net,cr.net 10

h_tasbihi@yahoo.com
با تشکر

Maryam80
چهارشنبه 13 اردیبهشت 1385, 16:58 عصر
با سلام
شما برای انجام این کار باید در MainReport یک پارامتر مثلا با نام Empty از نوع String تعریف کنید ، سپس در برنامه برای جدولی ایکه قرار است اطلاعات آن در SubReport نمایش داده شود کد زیر را بنویسید:



Dim rpt As New CrystalReport2
Dim sql As String

'Table which is bind to main report

sql = CMPATM.ADO_TblProvince.SelectCommand.CommandText
DSATM.Tbl_Province.Rows.Clear()
CMPATM.ADO_TblProvince.SelectCommand.CommandText = sql & " WHERE Province_Code = " & TextBox1.Text
CMPATM.ADO_TblProvince.Fill(DSATM, "Tbl_Province")
CMPATM.ADO_TblProvince.SelectCommand.CommandText = sql

'Table which is bind to Sub report

sql = CMPATM.ADO_TblState.SelectCommand.CommandText
DSATM.Tbl_State.Rows.Clear()
CMPATM.ADO_TblState.SelectCommand.CommandText = sql & " WHERE ProvCode = " & TextBox1.Text
CMPATM.ADO_TblState.Fill(DSATM, "Tbl_state")
CMPATM.ADO_TblState.SelectCommand.CommandText = sql

If DSATM.Tbl_State.Rows.Count = 0 Then
rpt.SetParameterValue("Empty", "True")
Else
rpt.SetParameterValue("Empty", "False")
End If

rpt.SetDataSource(DSATM)
CrystalReportViewer1.ReportSource = rpt



سپس بر روی فرم کریستال در قسمت MainReport بر روی Section ایکه SubReport درون آن قرار گرفته است Right click کرده و Format Section را انتخاب نمایید .
گزینه Suppress را تیک زده و کد زیر را درون آن (در قسمت Formula Editor )بنویسید:


if {?Empty}="true" then true


با انجام مراحل فوق در صورتیکه بخش Subreport رکوردی نداشته باشد Suppress و در غیر این صورت اطلاعات را نمایش می دهد

موفق باشید.