C# 防止在Crystal Report for Visual Studio 2010中登录ODBC文本驱动程序

C# 防止在Crystal Report for Visual Studio 2010中登录ODBC文本驱动程序,c#,crystal-reports,odbc,C#,Crystal Reports,Odbc,我刚接触Crystal Report,我有一个无法解决的问题。 因为我在任何地方都找不到答案,所以我试着这样做 我使用的是Crystal报表,它使用ODBC数据库和文本驱动程序作为数据源。 这个报告在用独立的晶体报告席X.打开时工作得很好。 当通过VS2010通过一个基本的c#程序打开它时,我总是被提示输入这个数据库的用户名和密码,尽管没有这些。 因此,我无法访问数据 奇怪的是,可以通过编辑器中的“浏览字段数据”访问字段数据 我有什么遗漏吗? 命名空间CrystalReportsApplica

我刚接触Crystal Report,我有一个无法解决的问题。 因为我在任何地方都找不到答案,所以我试着这样做

我使用的是Crystal报表,它使用ODBC数据库和文本驱动程序作为数据源。 这个报告在用独立的晶体报告席X.

打开时工作得很好。 当通过VS2010通过一个基本的c#程序打开它时,我总是被提示输入这个数据库的用户名和密码,尽管没有这些。 因此,我无法访问数据

奇怪的是,可以通过编辑器中的“浏览字段数据”访问字段数据

我有什么遗漏吗?

命名空间CrystalReportsApplication1
{
公共部分类Form1:Form
{
私有字符串报告路径;
private ReportDocument repDoc=新的ReportDocument();
私有文件信息m_AssemblyCS;
私有目录信息m_SolutionRoot;
公共表格1()
{
初始化组件();
m_AssemblyCS=新文件信息(System.Reflection.Assembly.GetExecutionGassembly().Location);
m_SolutionRoot=m_AssemblyCS.Directory.Parent.Parent.Parent;
reportPath=string.Empty;
}
私有void bOpenReport_Click(对象发送者,事件参数e)
{
OpenFileDialog openFileDialog1=新建OpenFileDialog();
openFileDialog1.InitialDirectory=m_SolutionRoot.FullName;
openFileDialog1.Filter=“rpt文件(*.rpt)|*.rpt |所有文件(*.*)|*.*”;
如果(openFileDialog1.ShowDialog()==DialogResult.OK)
{ 
reportPath=openFileDialog1.FileName;
tbReportPath.Text=reportPath;
repDoc.Load(reportPath);
crystalReportViewer.ReportSource=repDoc;
}
}
}
}
更新 不幸的是,se没有起到任何作用。我仍然得到错误。我试图做到以下几点:

private void bOpenReport\u单击(对象发送者,事件参数e)
{
OpenFileDialog openFileDialog1=新建OpenFileDialog();
openFileDialog1.InitialDirectory=m_SolutionRoot.FullName;
openFileDialog1.Filter=“rpt文件(*.rpt)|*.rpt |所有文件(*.*)|*.*”;
如果(openFileDialog1.ShowDialog()==DialogResult.OK)
{ 
reportPath=openFileDialog1.FileName;
tbReportPath.Text=reportPath;
repDoc.Load(reportPath);
foreach(repDoc.Database.Tables中的表)
SetConnectionInfo(table.Name,“dds”,““”,“”,“”,“”);
crystalReportViewer.ReportSource=repDoc;
}
}
私有void SetConnectionInfo(字符串表、字符串服务器、字符串数据库、字符串用户、字符串密码)
{ 
TableLogOnInfo logOnInfo=新的TableLogOnInfo();
logOnInfo=repDoc.Database.Tables[table].logOnInfo;
ConnectionInfo ConnectionInfo=新的ConnectionInfo();
connectionInfo=logOnInfo.connectionInfo;
connectionInfo.DatabaseName=数据库;
connectionInfo.ServerName=server;
connectionInfo.Password=密码;
connectionInfo.UserID=用户;
repDoc.Database.Tables[table].ApplyLogOnInfo(logOnInfo);
}

表的连接信息已设置,但我仍然可以看到登录对话框。

查看以下问题的答案:

我们通常通过此处提到的“Part2”提供连接凭据,使用 CrystalDecisions.Shared.ConnectionInfo对象。 通常,文本文件上没有用户/密码,因此可能提供空/空作品

看起来还有另一个问题,那家伙也有同样的问题,并解决了如下问题:

看看以下问题的答案:

我们通常通过此处提到的“Part2”提供连接凭据,使用 CrystalDecisions.Shared.ConnectionInfo对象。 通常,文本文件上没有用户/密码,因此可能提供空/空作品

看起来还有另一个问题,那家伙也有同样的问题,并解决了如下问题:

您的上一个链接有帮助。Crystal Report似乎需要一个名为SetBaseLogon的用户名和密码的伪值。因此,在加载报告之后,类似于“repDoc.SetDatabaseLogon(“UserName”、“UserPW”);”这样的东西可以起到作用。谢谢你的帮助!你的最后一个链接起了作用。Crystal Report似乎需要一个名为SetBaseLogon的用户名和密码的伪值。因此,在加载报告之后,类似于“repDoc.SetDatabaseLogon(“UserName”、“UserPW”);”这样的东西可以起到作用。谢谢你的帮助!