Mysql Crystal Report 13在VS 2010中提示数据库登录

Mysql Crystal Report 13在VS 2010中提示数据库登录,mysql,vb.net,visual-studio-2010,crystal-reports,odbc,Mysql,Vb.net,Visual Studio 2010,Crystal Reports,Odbc,我目前在VB.Net(VS2010)应用程序中显示Crystal报表时遇到问题。我在谷歌上搜索了这个问题,发现了类似的问题,但他们的解决方案并没有解决我的问题 每次我从VB应用程序调用CR报告时,它总是提示登录数据库。我已输入数据库凭据,但失败。我通过ODBC连接器连接到MySQL5.1 在我的Crystal Report中,我创建了一个自定义命令,该命令接受我的应用程序中的两个参数,即dateFrom和dateTo,我使用它们在日期范围之间进行查询 我注意到,当我在设置Crystal Re

我目前在VB.Net(VS2010)应用程序中显示Crystal报表时遇到问题。我在谷歌上搜索了这个问题,发现了类似的问题,但他们的解决方案并没有解决我的问题

每次我从VB应用程序调用CR报告时,它总是提示登录数据库。我已输入数据库凭据,但失败。我通过ODBC连接器连接到MySQL5.1

在我的Crystal Report中,我创建了一个自定义命令,该命令接受我的应用程序中的两个参数,即dateFrom和dateTo,我使用它们在日期范围之间进行查询

我注意到,当我在设置Crystal Report参数值的地方删除代码时,数据库登录没有出现

以下是我的代码片段:

Dim appPath As String = Path.GetDirectoryName(Application.ExecutablePath)
Dim cryRpt As New ReportDocument
Dim CRTable As CrystalDecisions.CrystalReports.Engine.Table
Dim CRTLI As CrystalDecisions.Shared.TableLogOnInfo

cryRpt.Load(appPath & "\Reports\crDtrLogs.rpt")

frmReportViewer.crReportViewer.Refresh()
For Each CRTable In cryRpt.Database.Tables
   CRTLI = CRTable.LogOnInfo
   With CRTLI.ConnectionInfo
       .ServerName = "dtrsql"
       .UserID = "root"
       .Password = "root"
       .DatabaseName = "dtrsql"
   End With
   CRTable.ApplyLogOnInfo(CRTLI)
Next CRTable
当我取出这个时,即使不添加表连接信息,一切都正常

cryRpt.SetParameterValue("dtpFrom", dtpFrom.Value.Date.ToString("yyyy-MM-dd"))
cryRpt.SetParameterValue("dtpTo", dtpTo.Value.Date.ToString("yyyy-MM-dd"))

cryRpt.SetParameterValue("strDateRange", dtpFrom.Value.Date.ToString("MMMM dd, yyyy") & " - " & dtpTo.Value.Date.ToString("MMMM dd, yyyy"))

frmReportViewer.crReportViewer.ReportSource = cryRpt
frmReportViewer.Show()

一如既往,我们非常感谢您的帮助。

简单易行的解决方案。。。。 打开字段资源管理器-->数据库字段-->右键单击-->当前数据源-->报告连接-->报告-->属性-->将属性设置为---

数据源:。\Databasename.accdb

和查看器窗体上的代码加载为

Dim cryRpt作为新报告文档

  Dim Report1 As New rptItemWise

  Dim strServerName As String
  strServerName = Application.StartupPath
rptItemWise.SetDatabaseLogon(“admin”,strServerName,“dastabasename.accdb”,True)


同时更改与数据源相同的报表连接。我认为代码适合您。

检查此代码。我想你应该像这样访问数据库:

Dim appPath As String = Path.GetDirectoryName(Application.ExecutablePath)
Dim cryRpt As New ReportDocument

Dim crtableLogoninfos As New TableLogOnInfos
Dim crtableLogoninfo As New TableLogOnInfo
Dim crConnectionInfo As New ConnectionInfo
Dim CrTables As Tables

cryRpt.Load(appPath & "\Reports\crDtrLogs.rpt")

crConnectionInfo.ServerName = "YOUR SERVER NAME"
crConnectionInfo.DatabaseName = "YOUR DATABASE NAME"
crConnectionInfo.UserID = "YOUR DATABASE USERNAME"
crConnectionInfo.Password = "YOUR DATABASE PASSWORD"

CrTables = cryRpt.Database.Tables

For Each CrTable In CrTables
    crtableLogoninfo = CrTable.LogOnInfo
    crtableLogoninfo.ConnectionInfo = crConnectionInfo
    CrTable.ApplyLogOnInfo(crtableLogoninfo)
Next CrTable
Dim appPath As String = Path.GetDirectoryName(Application.ExecutablePath)
Dim cryRpt As New ReportDocument

Dim crtableLogoninfos As New TableLogOnInfos
Dim crtableLogoninfo As New TableLogOnInfo
Dim crConnectionInfo As New ConnectionInfo
Dim CrTables As Tables

cryRpt.Load(appPath & "\Reports\crDtrLogs.rpt")

crConnectionInfo.ServerName = "YOUR SERVER NAME"
crConnectionInfo.DatabaseName = "YOUR DATABASE NAME"
crConnectionInfo.UserID = "YOUR DATABASE USERNAME"
crConnectionInfo.Password = "YOUR DATABASE PASSWORD"

CrTables = cryRpt.Database.Tables

For Each CrTable In CrTables
    crtableLogoninfo = CrTable.LogOnInfo
    crtableLogoninfo.ConnectionInfo = crConnectionInfo
    CrTable.ApplyLogOnInfo(crtableLogoninfo)
Next CrTable