带有ODBC的VS2010 Crystal Report和自动DB登录 [英] VS2010 Crystal Report with ODBC with auto DB Logon

查看:78
本文介绍了带有ODBC的VS2010 Crystal Report和自动DB登录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个旧的应用程序,我正在转换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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆