我的asp.net代码不是从生产环境中的sql数据库获取数据集。代码不返回任何记录,但相同的代码在开发环境中正常工作。我必须从获取的数据集中提供水晶报告。
这是我的代码:
Private Sub GenerateReport1(sql1 As String)
Dim crReportDocument = New CrystalDecisions.CrystalReports.Engine.ReportDocument()
Try
Dim ReportName As String = "KPIEstOverallReport.rpt"
Dim ds As New DataSet()
ds = GetDataSet(sql1)
'ds = DataAccessHelper.DataAccess.ExecuteDataSet(DataAccessHelper.DataAccess.ConnectionString, "Usp_BMS_KPI_Estimation_Performance_Report ", CommandType.StoredProcedure, param)
Session("dsCrstalReport") = ds
crReportDocument.FileName = Server.MapPath("~//KPIEstOverallReport.rpt")
crReportDocument.SetDataSource(ds)
Session("ReportDoc") = crReportDocument
If ds IsNot Nothing AndAlso ds.Tables(0).Rows.Count > 0 Then
ScriptManager.RegisterStartupScript(Me, GetType(String), "ShowReport", "window.open('CrystalReportViewer.aspx?','_blank','');", True)
Else
lblMsg.Text = "No records found..!"
'ScriptManager.RegisterStartupScript(Me, GetType(String), "No records Found.", "alert('No records found.');", True)
End If
Catch ex As Exception
lblMsg.Text = ex.Message
End Try
End Sub
答案 0 :(得分:0)
您的代码无法提供有关该问题的足够信息。
如果您简化代码,您将获得
Dim ds As New DataSet()
ds = GetDataSet(sql1)
If (ds IsNot Nothing AndAlso ds.Tables(0).Rows.Count > 0) Is False Then
lblMsg.Text = "No records found..!"
End If
你得到"没有找到记录..!"因为ds是Nothing或者Tables(0)没有recods。
只有当sql1没有返回任何记录或者GetDataSet方法中有一个可能返回Nothing的错误时,才会发生这种情况。
要进行故障排除,您需要调试GetDataSet()并查看其功能。