Я новичок в 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;
}
}
}
}
Любая помощь будет очень признателен.
Обновление:
Спасибо за ваш быстрый ответ.К сожалению, это не помогло.Я все еще получаю ошибку.Я попытался сделать следующее:
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);
}
Информация о соединениях таблиц установлена, но я все равно получаю диалог входа в систему.