带有ODBC的VS2010 Crystal Report和自动DB登录 [英] VS2010 Crystal Report with ODBC with auto DB Logon
问题描述
我有一个旧的应用程序,我正在转换VB6&使用VB和SQL Server将Oracle转换为asp.net。我正在利用旧的Crystal Reports来转换时间。我有报告在VS2010中工作,但数据库登录除外。我一直试图通过后面的代码阻止数据库登录。 Crystal报表在我的开发机器上使用ODBC来访问数据库。
我粘贴了代码以供参考。单步执行代码,我将一直通过CrystalReportViewer1.ReportScource来呈现报表。它就像它看到ODBC一样。您可以通过我在每个setDatabaseLogon行上的注释看到当我有不同的值时会发生什么。当所有登录参数都正确时,我得到加载报告失败,或者当任何一个登录参数不正确时我得到登录提示。如果我在登录提示符下输入密码,它将呈现报告。
我已经尝试了很多不同的方法让网络搜索让自动登录工作到目前为止没有运气。任何帮助,将不胜感激。 ~~谢谢! Patty
Imports System.Data.Odbc
< span class =code-keyword> Imports System.Data.SqlClient
Imports CrystalDecisions
Imports CrystalDecisions.CrystalReports
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions。共享
Imports CrystalDecisions。共享 .ParameterField
Imports CrystalDecisions。 Shared .ParameterFields
公开 类 FundsXfer1
继承 System.Web.UI.Page
受保护的 Sub Page_Load( ByVal sender As Object , ByVal e As System.EventArgs)句柄 Me .Load
If Page.IsPostBack 然后
CrystalReportViewer1.Visible = True
其他
CrystalReportViewer1.Visible = 错误
结束 如果
结束 Sub
受保护的 Sub btnRpt_Click( ByVal sender 作为 对象, ByVal e As EventArgs)句柄 btnRpt.Click
Dim report As TransferHistoryReport = 新 TransferHistoryReport
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crConnectionInfo 作为 新 ConnectionInfo
Dim crtableLogoninfos 作为 新 TableLogOnInfos
Dim crtablelogoninfo As 新 TableLogOnInfo
Dim crTables 作为表
Dim crTable As 表
Dim user < span class =code-keyword> As String = gratis_admin
Dim pswd As 字符串 = admin $ 1
Dim crReportDocument 作为 新 ReportDocument()
crReportDocument.Load( c:\ myReports \TransferHistoryReport.rpt)
Dim paramfields As 新 ParameterFields
Dim pfFromDate As 新 ParameterField()
Dim pfToDate 作为 新 ParameterField()
Dim pfRac As New ParameterField()
Dim pfLocId 作为 新 ParameterField()
Dim dcFromDate 作为 新 ParameterDiscreteValue()
Dim dcToDate A s 新 ParameterDiscreteValue()
Dim dcRac 作为 新 ParameterDiscreteValue()
Dim dcLocId As 新 ParameterDiscreteValue()
pfRac.ParameterFieldName = racfid
dcRac.Value = txtRacfid.Text
pfRac.CurrentValues.Add(dcRac)
paramfields .Add(pfRac)
pfLocId.ParameterFieldName = locid
dcLocId.Value = txtLocID.Text
pfLocId.CurrentValues.Add(dcLocId)
paramfields.Add(pfLocId)
pfFromDate.ParameterFieldName = reportf rom_date
dcFromDate.Value = txtFromDate.Text
pfFromDate.CurrentValues.Add(dcFromDate)
paramfields.Add(pfFromDate)
pfToDate.ParameterFieldName = reportto_date
dcToDate.Value = txtToDate.Text
pfToDate.CurrentValues .Add(dcToDate)
paramfields.Add(pfToDate)
CrystalReportViewer1.ParameterFieldInfo = paramfields
crConnectionInfo.IntegratedSecurity = True
' crReportDocument.SetDatabaseLogon(用户ID,密码,ODBC名称,数据库名称)
' crReportDocument.SetDatabaseLogon(user,pswd,GratisSql,Gratis )'一切正确;加载报告失败
crReportDocument.SetDatabaseLogon(user,pswd, JACDBATEST02 , 免费)' 无法识别服务器名称
' crReportDocument.SetDatabaseLogon (user,pswd,testing,Gratis)'任何一个parm不正确 - 登录提示
CrystalReportViewer1.ReportSource = crReportDocument
结束 Sub
结束 类
1
< span class =code-keyword> Dim crReportDocument As 新 Repor tDocument()
crReportDocument.Load( c:\ myReports \TransferHistoryReport.rpt)
Dim paramfields As 新 ParameterFields
Dim pfFromDate 作为 新 ParameterField()
Dim pfToDate As 新 ParameterField()
Dim pfRac As 新 ParameterField()
Dim pfLocId As 新 ParameterField()
Dim dcFromDate 作为 新 ParameterDiscreteValue()
Dim dcToDate As 新 ParameterDiscreteValue()
Dim dcRac 作为 新 ParameterDiscreteValue()
Dim dcLocId As 新 ParameterDiscreteValue()
pfRac。 ParameterFieldName = racfid
dcRac.Value = txtRacfid.Text
pfRac。 CurrentValues.Add(dcRac)
paramfields.Add(pfRac)
pfLocId.ParameterFieldName = locid
dcLocId.Value = txtLocID.Text
pfLocId.Cu rrentValues.Add(dcLocId)
paramfields.Add(pfLocId)
pfFromDate.ParameterFieldName = reportfrom_date
dcFromDate.Value = txtFromDate.Text
pfFromDate.CurrentValues.Add(dcFromDate)
paramfields.Add(pfFromDate)
pfToDate.ParameterFieldName = reportto_date
dcToDate.Value = txtToDate.Text
pfToDate.CurrentValues.Add(dcToDate)
paramfields.Add(pfToDate)
CrystalReportViewer1.ParameterFieldInfo = paramfields
crConnectionInfo.IntegratedSecurity = True
' crReportDocument.SetDatabaseLogon(用户ID,密码, ODBC名称,数据库名称)
' crReportDocument.SetDatabaseLogon(user,pswd,GratisSql,Gratis)'一切正确;加载报告失败
crReportDocument.SetDatabaseLogon(user,pswd, JACDBATEST02 , 免费)' 无法识别服务器名称
' crReportDocument.SetDatabaseLogon (user,pswd,testing,Gratis)'任何一个parm不正确 - 登录提示
CrystalReportViewer1.ReportSource = crReportDocument
结束 Sub
结束 类跨度>
I have an old application I'm converting from VB6 & Oracle to asp.net with VB and SQL Server. I'm utilizing the old Crystal Reports for conversion time sake. I have the reports working within VS2010 with the exception of the database logon. I've been trying to prevent the db logon via the code behind. The Crystal report uses an ODBC on my development machine to get to the database.
I pasted the code behind for your reference. Stepping through the code I make it all the way through the CrystalReportViewer1.ReportScource where it renders the report. It acts like it sees the ODBC. You can see by the comments I put on each "setDatabaseLogon" line what happens when I have the different values. I either get "load report failed" when all the logon parameters are correct or I get the logon prompt when any one of them is incorrect. If I enter the password at the logon prompt, it renders the report.
I've tried many different ways to get the auto logon to work based on web searches with no luck so far. Any help would be appreciated. ~~ Thanks! Patty
Imports System.Data.Odbc
Imports System.Data.SqlClient
Imports CrystalDecisions
Imports CrystalDecisions.CrystalReports
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports CrystalDecisions.Shared.ParameterField
Imports CrystalDecisions.Shared.ParameterFields
Public Class FundsXfer1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
CrystalReportViewer1.Visible = True
Else
CrystalReportViewer1.Visible = False
End If
End Sub
Protected Sub btnRpt_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnRpt.Click
Dim report As TransferHistoryReport = New TransferHistoryReport
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crConnectionInfo As New ConnectionInfo
Dim crtableLogoninfos As New TableLogOnInfos
Dim crtablelogoninfo As New TableLogOnInfo
Dim crTables As Tables
Dim crTable As Table
Dim user As String = "gratis_admin"
Dim pswd As String = "admin$1"
Dim crReportDocument As New ReportDocument()
crReportDocument.Load("c:\myReports\TransferHistoryReport.rpt")
Dim paramfields As New ParameterFields
Dim pfFromDate As New ParameterField()
Dim pfToDate As New ParameterField()
Dim pfRac As New ParameterField()
Dim pfLocId As New ParameterField()
Dim dcFromDate As New ParameterDiscreteValue()
Dim dcToDate As New ParameterDiscreteValue()
Dim dcRac As New ParameterDiscreteValue()
Dim dcLocId As New ParameterDiscreteValue()
pfRac.ParameterFieldName = "racfid"
dcRac.Value = txtRacfid.Text
pfRac.CurrentValues.Add(dcRac)
paramfields.Add(pfRac)
pfLocId.ParameterFieldName = "locid"
dcLocId.Value = txtLocID.Text
pfLocId.CurrentValues.Add(dcLocId)
paramfields.Add(pfLocId)
pfFromDate.ParameterFieldName = "reportfrom_date"
dcFromDate.Value = txtFromDate.Text
pfFromDate.CurrentValues.Add(dcFromDate)
paramfields.Add(pfFromDate)
pfToDate.ParameterFieldName = "reportto_date"
dcToDate.Value = txtToDate.Text
pfToDate.CurrentValues.Add(dcToDate)
paramfields.Add(pfToDate)
CrystalReportViewer1.ParameterFieldInfo = paramfields
crConnectionInfo.IntegratedSecurity = True
' crReportDocument.SetDatabaseLogon(user id, password, ODBC name, database name)
' crReportDocument.SetDatabaseLogon(user, pswd, "GratisSql", "Gratis") 'everything correct; Load Report failed
crReportDocument.SetDatabaseLogon(user, pswd, "JACDBATEST02", "Gratis") 'doesn't recognize server name
'crReportDocument.SetDatabaseLogon(user, pswd, "testing", "Gratis") ' any one parm incorrect -- login prompt
CrystalReportViewer1.ReportSource = crReportDocument
End Sub
End Class
1" Dim crReportDocument As New ReportDocument() crReportDocument.Load("c:\myReports\TransferHistoryReport.rpt") Dim paramfields As New ParameterFields Dim pfFromDate As New ParameterField() Dim pfToDate As New ParameterField() Dim pfRac As New ParameterField() Dim pfLocId As New ParameterField() Dim dcFromDate As New ParameterDiscreteValue() Dim dcToDate As New ParameterDiscreteValue() Dim dcRac As New ParameterDiscreteValue() Dim dcLocId As New ParameterDiscreteValue() pfRac.ParameterFieldName = "racfid" dcRac.Value = txtRacfid.Text pfRac.CurrentValues.Add(dcRac) paramfields.Add(pfRac) pfLocId.ParameterFieldName = "locid" dcLocId.Value = txtLocID.Text pfLocId.CurrentValues.Add(dcLocId) paramfields.Add(pfLocId) pfFromDate.ParameterFieldName = "reportfrom_date" dcFromDate.Value = txtFromDate.Text pfFromDate.CurrentValues.Add(dcFromDate) paramfields.Add(pfFromDate) pfToDate.ParameterFieldName = "reportto_date" dcToDate.Value = txtToDate.Text pfToDate.CurrentValues.Add(dcToDate) paramfields.Add(pfToDate) CrystalReportViewer1.ParameterFieldInfo = paramfields crConnectionInfo.IntegratedSecurity = True ' crReportDocument.SetDatabaseLogon(user id, password, ODBC name, database name) ' crReportDocument.SetDatabaseLogon(user, pswd, "GratisSql", "Gratis") 'everything correct; Load Report failed crReportDocument.SetDatabaseLogon(user, pswd, "JACDBATEST02", "Gratis") 'doesn't recognize server name 'crReportDocument.SetDatabaseLogon(user, pswd, "testing", "Gratis") ' any one parm incorrect -- login prompt CrystalReportViewer1.ReportSource = crReportDocument End Sub End Class
这篇关于带有ODBC的VS2010 Crystal Report和自动DB登录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!