Печать отчета без существующих таблиц в БД
Привет,
Я должен распечатать отчет в автономном режиме, где результат отчета не существует в БД.
Я добавил ссылку на CrystalDecisions.CrystalReports.Двигатель В2.0.50727 (версия 12.0.2000.0) на мой .Проект Net Framework версии 4.
Я запустил метод, который должен распечатать отчет и сохранить набор данных в XML-файл:
internal void PrintData(string reportFile, string printerName) { DataTable DT = CreateDataTable(); if (DT.Rows.Count > 0) { DataSet DS = new DataSet(); DS.DataSetName = "ReportDataset"; DS.Namespace = "ReportNamespace"; DS.Tables.Add(DT); DS.WriteXml(Environment.GetEnvironmentVariable("TEMP") + "\\ReportDataset.xml", XmlWriteMode.WriteSchema); if (false) { ReportDocument report = new ReportDocument(); report.Load(reportFile); report.SetDataSource(DS); PrintDialog pd = new PrintDialog(); pd.PrinterSettings.PrinterName = printerName; if (pd.ShowDialog() == DialogResult.OK) { report.PrintOptions.PrinterName = pd.PrinterSettings.PrinterName; report.PrintToPrinter(1, false, 0, 0); } } } }
Затем я создаю отчет с помощью Crystal Reports 2008 (v12.0.0.683). Я создаю соединение как XML-соединение с созданным мной XML-файлом.
Кажется, он бежит.
Я изменил
if (false)
в if (true)
чтобы увидеть результат.Заявление
report.SetDataSource(DS);вызовите необработанное исключение типа DataSourceException (неизвестная ошибка в соединителе базы данных).
Что я уже пробовал:
Я также попытался выполнить печать в режиме вытягивания, и она работает хорошо, но писать xml-файл неэлегантно, потому что Crystal Reports не выполняет метод SetDataSource. Что-то не так в версиях?
njammy
Почему вы поместили утверждение if (false)?
Menci Lucio
@kjammy, потому что у меня не было файла отчета. Я поставил if (false), создал XML, создал отчет, заменил if (false) на if (true)
njammy
Но вы не оцениваете boolean ни к чему. Лучше просто избавиться от if (true / false)
Боюсь, что у меня нет v12.0.0.683, чтобы проверить, смогу ли я воссоздать проблему, но я использовал 13.0.2000.0 с VS2015 и отлично работает. Попробуйте эту версию.
Menci Lucio
Как вы его установили? Где я могу его найти? Я не смог...
Я установил CRRuntime_12_3 много времени назад, и я нашел CristalDecision.CrystalReports.Двигатель.dll в C:\Program файлы (x86)\бизнес-объекты\общие\4.0\управляемые.
Теперь я только что установил CRforVS_redist_install_64bit_13_0_17 (скачано с http://scn.sap.com/docs/DOC-7824), disinstalled ed установил CRRuntime_64bit_13_0_12 из http://downloads.i-theses.com/index.php?option=com_downloads&Itemid=481&task=downloads&groupid=9&id=101), но в некоторых ситуациях я не мог найти кристального решения.CrystalReports.Двигатель.dll на моем диске, но v12. 0 у меня уже был.