swapnilKumbhar Ответов: 9

Как указать путь для crystal report в c#


Хии,
Я создал приложение на языке c#.
Но когда я **перемещаю это приложение на другой диск,папку или компьютер.
Я получил ошибку в crystal report **path. и нужно менять путь каждый раз, когда приложение перемещается.
Как решить эту проблему.
означает, как добавить его в ресурсы c#, чтобы этот путь был исправлен.
например
cryRpt.Load(????);

заранее спасибо.
свапнил

9 Ответов

Рейтинг:
68

thatraja

Если это веб-приложение

report.Load(Server.MapPath("Report1.rpt"));//C#

report.Load(Server.MapPath("Report1.rpt"))'VB.NET

иначе если это приложение для windows
report.Load(Application.StartupPath + "Report1.rpt");//C#

report.Load(Application.StartupPath & "Report1.rpt")'VB.NET

Кстати для приложений windows вы можете использовать и другие пути например CommonAppDataPath, ExecutablePath, LocalUserAppDataPath, UserAppDataPath. Для получения дополнительной информации Дрессировка[^]

К вашему сведению, проверьте этот совет/трюк
Crystal Reports: Исправлена ошибка "Load report failed".[^]


swapnilKumbhar

спасибо, что ответили, ребята.
Но перед развертыванием приложения,если проект необходимо переместить на другой компьютер.
Как установить путь.
неужели я должен жестко закодировать его?

И еще 1
я использую файл .xml,поэтому в database expert to я должен установить путь к файлу .xml после развертывания.

Member 12961701

Я использую c# WPF, но не могу получить Application.startupPath
Есть идеи, как ее решить???

thatraja

Я никогда не работал над WPF, но это может вам помочь.
https://stackoverflow.com/questions/938421/getting-the-applications-directory-from-a-wpf-application
https://stackoverflow.com/questions/10926506/how-to-get-current-application-path-in-wpf

Рейтинг:
60

Prashant Srivastava LKO

ReportDocument rptdoc = new ReportDocument();
                rptdoc.Load(Server.MapPath("~\\Reports\\ProjectReport.rpt"));
                rptdoc.SetDataSource(dt);


Рейтинг:
52

Vijay Kr Sharma

храните отчет crystal report в той же папке, в которой находится ваш код, и не указывайте никакого пути, просто укажите имя файла crystal report в коде.
Повеселиться


Рейтинг:
28

RDBurmon

Вы имеете в виду динамический путь вместо жесткого кода? Если да, то сохраните файлы отчетов в каталоге приложений и вызовите их следующим способом.

Если это веб-приложение

report.Load(Server.MapPath("Report1.rpt"));


иначе это приложение для windows


report.Load(Application.StartupPath + "Report1.rpt");


P.L.Wijayarathna

report.Load(приложение.StartupPath + "Report1.rpt") это не работает

P.L.Wijayarathna

report.Load(приложение.StartupPath + "Report1.rpt"); не работает

Рейтинг:
2

ProEnggSoft

Application.StartupPath не включает символ \ в конце. Следовательно, \ должен быть префиксом к имени файла

report.Load(Application.StartupPath + "\\Report1.rpt") 


Jeremiah Maramba

это работает для меня большое спасибо :))

Рейтинг:
1

Altaf N Patel

В окне приложения вам не нужно указывать приложение.StartupPath. Вы можете напрямую указать относительный путь к файлу, но убедитесь, что Свойства из файла есть 'Копировать в выходной каталог"со значением "Копировать всегда'.


satpal rawat

относительный путь к файлу означает, что мы можем жестко закодировать palth следующим образом:

Документе cryRpt = новая документе();

cryRpt.Load(@"C:\Documents и настройки\администратор\Мои Документы\Visual Studio 2010\проекты\NewProjectdemo\NewProjectdemo\test.rpt");

Рейтинг:
1

George Tsiga

Попробовать это

report.Load(Application.StartupPath & "/Report1.rpt")


Это сработало для меня


Овации


CHill60

Причина моего понижения голоса = вы ничего не добавили к ответам, которые были опубликованы 2 года назад.

Manoj Jagdale

как установить путь для отчета crustal в приложении c# windows, когда он показывает ошибку
отчеты не загружаются

Рейтинг:
0

Member 13428510

Приложение не определяет путь запуска
cryRpt.Load(приложение.Current + "\\ItemWiseReports.rpt");


CHill60

Причина моего отрицательного голосования - вы ничего не добавили к другим решениям, которые были опубликованы 7 лет назад. Если вы собираетесь возродить старые сообщения, добавив решение, убедитесь, что вы вносите что-то новое в поток.