防止登录ODBC文本驱动程序的水晶报告为Visual Studio 2010

本文关键字:报告 Visual Studio 2010 水晶 登录 ODBC 文本 驱动程序 | 更新日期: 2023-09-27 18:08:24

我是新来的Crystal Report,我有一个问题我不明白。因为我到处都找不到答案,所以我用这种方法试了试。

我正在使用Crystal Report,它使用ODBC数据库和文本驱动程序作为数据源。

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

奇怪的是,在编辑器中可以通过"Browse Field data"来访问字段的数据。

我错过了什么吗?

namespace CrystalReportsApplication1
{
    public partial class Form1 : Form
    {
        private string reportPath;
        private ReportDocument repDoc = new ReportDocument();
        private FileInfo m_AssemblyCS;
        private DirectoryInfo m_SolutionRoot;
        public Form1()
        {
            InitializeComponent();
            m_AssemblyCS = new FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
            m_SolutionRoot = m_AssemblyCS.Directory.Parent.Parent.Parent;
            reportPath = string.Empty;
        }
        private void bOpenReport_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.InitialDirectory = m_SolutionRoot.FullName;
            openFileDialog1.Filter = "rpt files (*.rpt)|*.rpt|All files (*.*)|*.*";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            { 
                reportPath = openFileDialog1.FileName;
                tbReportPath.Text = reportPath;
                repDoc.Load(reportPath);
                crystalReportViewer.ReportSource = repDoc;
            }
        }
    }
}

更新

不幸的是,se没有帮助。我还是会得到错误。我试着如下:

private void bOpenReport_Click(object sender, EventArgs e)
{
  OpenFileDialog openFileDialog1 = new OpenFileDialog();
  openFileDialog1.InitialDirectory = m_SolutionRoot.FullName;
  openFileDialog1.Filter = "rpt files (*.rpt)|*.rpt|All files (*.*)|*.*";
  if (openFileDialog1.ShowDialog() == DialogResult.OK)
  { 
    reportPath = openFileDialog1.FileName;
    tbReportPath.Text = reportPath;
    repDoc.Load(reportPath);
    foreach(Table table in repDoc.Database.Tables)
      SetConnectionInfo(table.Name, "dds", "", "", "");
    crystalReportViewer.ReportSource = repDoc;
  }
}
private void SetConnectionInfo(string table, string server, string database, string user, string password)
{ 
  TableLogOnInfo logOnInfo = new TableLogOnInfo();
  logOnInfo = repDoc.Database.Tables[table].LogOnInfo;
  ConnectionInfo connectionInfo = new ConnectionInfo();
  connectionInfo = logOnInfo.ConnectionInfo;
  connectionInfo.DatabaseName = database;
  connectionInfo.ServerName = server;
  connectionInfo.Password = password;
  connectionInfo.UserID = user;
  repDoc.Database.Tables[table].ApplyLogOnInfo(logOnInfo);
}

设置了表的connectioninfo,但我仍然得到登录对话框。

防止登录ODBC文本驱动程序的水晶报告为Visual Studio 2010

看一下以下问题的答案:如何在运行时更改Crystal Report's ODBC数据库连接?

我们通常通过"Part2"提供连接凭据CrystalDecisions.Shared.ConnectionInfo对象。通常情况下,文本文件上没有用户名/密码,所以可能会提供空/空作品。

看起来还有另一个问题,这个家伙有同样的问题,并解决如下:visual studio嵌入式水晶报告一直提示数据库登录?