0

我使用Visual Studio在VB.net中創建了一個程序,某些表單使用Crystal Reports來顯示PDF報告,但是我遇到了數據庫連接問題。 VB.net代碼可以毫無問題地訪問數據庫,但是當表單顯示報告時,它會詢問我輸入用戶名和密碼,如果我編寫它們,則無法連接。應用程序和報告共享相同的數據庫,並使用相同的數據進行連接,但Crystal Reports失敗。你可以幫我嗎?Crystal Report無法連接到數據庫

+0

你能顯示爲您所使用的代碼創建並打開Crys tal報告? – Nianios

+0

我沒有使用任何代碼來創建報告,我已經使用視覺工作室設計師完成了一切。首先我創建了報告,然後我創建了一個CrystalReportViewer與創建的報告鏈接的表單。還有另一件奇怪的事情,如果我在Visual Studio中嘗試報告,它的工作原理是,只有當我運行應用程序 – mck89

+0

mmm時,纔會出現問題,我對設計師沒有那麼有經驗。 – Nianios

回答

0

雖然你說你正在使用的設計師,我會發布一些代碼,該代碼爲我工作,也許它會幫助你:

 Dim cryRpt As New ReportDocument 
     Dim strReportPath As String = 'The Path of the rpt file 
     cryRpt.Load(strReportPath) 
     cryRpt.SetDataSource(Me.crData) 'crData is a datatable with data for the report 

     crvReport.ReportSource = cryRpt 'crvReport is the CrystalReportViewer in my form 
+0

謝謝,但我無法使用一個數據表,我需要它直接連接到數據庫 – mck89

1

這裏有一個片段,我有工作(在C# ,但應該給你我是如何做的一個想法):

CrystalReportSource CrystalReportSource1 = new CrystalReportSource(); 
    CrystalReportViewer CrystalReportViewer1 = new CrystalReportViewer(); 

    CrystalReportViewer1.ReportSource = CrystalReportSource1; 
    CrystalReportViewer1.EnableParameterPrompt = false; 
    CrystalReportSource1.Report.FileName = "Report3.rpt"; 
    CrystalReportSource1.EnableCaching = false; 

    CrystalReportSource1.ReportDocument.SetParameterValue(0, ponumber); 
    CrystalReportSource1.ReportDocument.SetParameterValue(1, receiptno); 



    TableLogOnInfo logOnInfo = new TableLogOnInfo(); 

    logOnInfo.ConnectionInfo.ServerName = ConfigurationManager.AppSettings["WarehouseReportServerName"]; 
    logOnInfo.ConnectionInfo.DatabaseName = ConfigurationManager.AppSettings["WarehouseReportDatabaseName"]; 
    logOnInfo.ConnectionInfo.UserID = ConfigurationManager.AppSettings["WarehouseReportUserID"]; 
    logOnInfo.ConnectionInfo.Password = ConfigurationManager.AppSettings["WarehouseReportPassword"]; 

    TableLogOnInfos infos = new TableLogOnInfos(); 
    infos.Add(logOnInfo); 
    CrystalReportViewer1.LogOnInfo = infos; 

    maindiv.Controls.Add(CrystalReportSource1); 
    maindiv.Controls.Add(CrystalReportViewer1); 


    CrystalReportViewer1.DataBind(); 
0

檢查數據存在的所有領域,當你在「的setDataSource」設置