[英]Crystal Reports not loading data vb.net
在我的項目中,我有一個按鈕,當單擊該按鈕時,該按鈕應該從我的SQL Server數據庫中打印當前處於活動狀態的所有合同。 有數百個有效合同,但是現在,當我按下按鈕時,報告表單將被加載,但報告卻不會。
我將盡力使用圖像和代碼來演示這一點,但是有人能說明為什么會這樣嗎?
//打印按鈕的代碼
Private Sub btnPrintActive_Click(sender As Object, e As EventArgs) Handles btnPrintActive.Click
Try
Dim objlist As New ReportDocument
objlist.Load(readIni("REPORTS", directorypath & "connectionpaths.ini") & "\ContractList.rpt")
Dim info As CrystalDecisions.Shared.TableLogOnInfo
info = New CrystalDecisions.Shared.TableLogOnInfo()
info.ConnectionInfo.DatabaseName = ""
info.ConnectionInfo.ServerName = readIni("CONTRACTSTRING", directorypath & "connectionpaths.ini")
info.ConnectionInfo.Password = ""
info.ConnectionInfo.UserID = ""
objlist.Database.Tables(0).ApplyLogOnInfo(info)
objlist.RecordSelectionFormula = "{tblContracts.Agreement} = 'ACTIVE'"
Dim f As frmReports
f = New frmReports(con, acccon, "", 0, "", acccon, , objlist, , )
f.Show()
Catch ex As Exception
errorLog(ex.Message, ex.StackTrace)
MsgBox("Failed to retrieve contract information from 'database', refer to error log")
End Try
End Sub
//這是報告表格,但沒有報告
//證明有活動的報告
現在,此問題已解決。 問題是我在報表中使用了2個數據庫表,但只提供了1個的登錄信息,而第二個表未從服務器接收數據,因此為什么不顯示它。 我所做的另一件事是更改了它以空白值登錄的事實。 我的固定代碼現在是這個;
Private Sub btnPrintActive_Click(sender As Object, e As EventArgs) Handles btnPrintActive.Click
Try
Dim objlist As New ReportDocument
objlist.Load(readIni("REPORTS", directorypath & "connectionpaths.ini") & "\ContractList.rpt")
Dim info As CrystalDecisions.Shared.TableLogOnInfo
info = New CrystalDecisions.Shared.TableLogOnInfo()
Dim servername As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "servername"))
Dim database As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "database"))
Dim username As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "username"))
Dim password As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "password"))
Dim provider As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "provider"))
info.ConnectionInfo.DatabaseName = database
info.ConnectionInfo.ServerName = servername
info.ConnectionInfo.Password = password
info.ConnectionInfo.UserID = username
objlist.Database.Tables(0).ApplyLogOnInfo(info)
objlist.Database.Tables(1).ApplyLogOnInfo(info)
objlist.RecordSelectionFormula = "{tblContracts.Agreement} = 'ACTIVE'"
Dim f As frmReports
f = New frmReports(con, acccon, "", 0, "", acccon, , objlist, , )
f.Show()
Catch ex As Exception
errorLog(ex.Message, ex.StackTrace)
MsgBox("Failed to retrieve contract information from database, refer to error log")
End Try
End Sub
嘗試比較一下:
try
{
String APPPATH = String.Empty;
CRPT = new ReportDocument();
APPPATH = System.IO.Directory.GetCurrentDirectory() + "/CrystalReport/CrystalReport1.rpt";
//APPPATH = "~/Crystal_report/mosum.rpt";
CRPT.Load(APPPATH);
crViewer.RefreshReport();
CLASS_PROJECT.crystalReportcls rptcls = new CLASS_PROJECT.crystalReportcls();
ParameterFields paramFields = new ParameterFields();
ParameterField paramField = new ParameterField();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "sdate";
paramDiscreteValue.Value = "2016-07-01";
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
crViewer.ParameterFieldInfo = paramFields;
crViewer.ReportSource = CRPT;
MessageBox.Show("Crystal logged in.");
CRPT.SetDatabaseLogon("dbusername", "dbpassword");
rptcls.LogonCrystalReport(crViewer);
}
catch (Exception er)
{
MessageBox.Show(er.Message);
}
此結構適用於我的示例。 您要做的就是登錄Crystal報表和報表路徑本身。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.