2009-11-24 64 views
0

我使用Crystal Reports 8.5(report1)製作了一個新的報表,它使用存儲過程作爲其數據源。存儲過程有2個輸入參數(@ p1和@ p2),當我在Crystal報告IDE中爲@ p1和@ p2輸入一些測試數據時,每件事情都是正確的。然後,我在visual basic 6.0 IDE中添加了report1,並在form1上添加了一個新窗體(form1)和一個Crystal報表查看器控件。現在請幫助我:我想展示報告1。我應該寫什麼代碼才能顯示它?發送數據用戶如何通過應用程序輸入存儲過程參數? 我也得到這個錯誤訊息話題:服務器尚未開啓」在crystal報表8.5中使用存儲過程?

什麼是錯

+0

我認爲賞金會吸引更多的人回答它迫切... – Eimantas 2009-11-24 10:46:35

+0

如何賞金? – odiseh 2009-11-24 11:02:50

+0

你不能開始一個在過去48小時內沒有被問到的問題的賞金... – romaintaz 2009-11-24 11:35:05

回答

0

Specifying a report

假設該示例報告已添加到您的.NET項目:

Dim parameter1 As CrystalDecisions.Shared.ParameterField 
Dim parameter2 As CrystalDecisions.Shared.ParameterField 

With SampleReport 
    .SetDatabaseLogon("user", "password", "server", "database") 
    'locate first parameter in report 
    parameter1 = .ParameterFields.Find("@p1", "") 
    'locate second parameter in report 
    parameter2 = .ParameterFields.Find("@p2", "") 
End With 

'create a new discrete-parameter value 
Dim stringValue As New CrystalDecisions.Shared.ParameterDiscreteValue() 
stringValue.Value = "USA" 

'assign it to the parameter's current values collection 
parameter1.CurrentValues.Add(stringValue) 

'create a new discrete-parameter value 
Dim numberValue As New CrystalDecisions.Shared.ParameterDiscreteValue() 
numberValue.Value = 100 

'assign it to the parameter's current values collection 
parameter2.CurrentValues.Add(numberValue) 

With Me.CrystalReportViewer1 
    .ReportSource = SampleReport 
End With 
+0

Craig, 正如我所說我已經將報告添加到VB6項目,並做了你所說的(上面3行),但仍然無法顯示它。現在我有3個問題: 1 - 我是否需要在運行時填充記錄集作爲報告的數據源? 2 - 如何將參數發送到存儲過程以顯示報告? 3-消息如何:「服務器尚未打開」? – odiseh 2009-11-25 06:33:07

+0

1.如果將存儲過程作爲「表」添加到報告中,則CR將完成所有工作。您可以在代碼中動態分配記錄集,但這比將其添加到設計器中的報表更復雜。 2.我會將存儲過程作爲唯一的'表'添加到報表中。您可以在Crystal Reports |中執行此操作數據庫|數據庫專家。該報告將識別SP的參數。運行報告時,您可以在代碼中設置參數的值,或者只需讓報告提示用戶。 – craig 2009-11-25 12:57:00

+0

哦,終於找到了.... :) 1-正如你所說的那樣,在設計時向報告添加一個SP之後,不需要填寫記錄集。 2 - 如果每個循環使用一個select語句,我們選擇每個參數並賦值。 3 - 我們需要使用SetLogOnInfo方法 Craig,非常感謝 3 - – odiseh 2009-11-26 08:50:04

相關問題