簡體   English   中英

防止在 Visual Studio 2010 的 Crystal Report 中登錄 ODBC 文本驅動程序

[英]Prevent login of ODBC Text driver in Crystal Report for Visual Studio 2010

我是 Crystal Report 的新手,我遇到了一個無法解決的問題。 因為我無法在任何地方以這種方式嘗試找到答案。

我正在使用 Crystal Report,它使用帶有文本驅動程序的 ODBC 數據庫作為數據源。 使用獨立的 Crystal Report XI 打開此報告時,它可以完美運行。

當通過 VS2010 通過基本的 c# 程序打開它時,我總是提示輸入此數據庫的用戶名和密碼,盡管沒有這些。 因此,我無法訪問數據。

奇怪的是,可以通過編輯器中的“瀏覽字段數據”訪問字段數據。

有什么我想念的嗎?

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);
}

表的 connectionInfos 已設置,但我仍然收到登錄對話框。

看看以下問題的答案: 如何在運行時更改 Crystal Report 的 ODBC 數據庫連接?

我們通常使用 CrystalDecisions.Shared.ConnectionInfo 對象通過那里提到的“Part2”提供連接憑據。 通常,您在文本文件上沒有用戶名/密碼,因此可能會提供空/空作品。

看起來還有另一個問題,那個家伙有同樣的問題並解決了如下: visusal studio Embedded Crystal Report 一直提示數據庫登錄?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM