Manoj Jagdale Ответов: 1

У меня возникла проблема при создании отчета


crystalReportViewer_purchase1.ReportSource = RptDocCrt показывает нулевое значение.

а потом при создании отчета я получил ошибку "ССЫЛКА на объект не установлена на экземпляр объекта."

Что я уже пробовал:

public Frm_Purchase_Report(DataSet ds, string p)
       {
           // TODO: Complete member initialization
           this.ds = ds;
           this.p = p;

           try
           {
               string s = ds.Tables[0].Rows.Count.ToString();
               if (s != "0")
               {
                   string AppPath = Application.StartupPath;
                   DataTable dt = new DataTable();
                   AppPath += "\\Report\\genrate_Purchase_Report1.rpt";
                   RptDocCrt.Load(@"" + AppPath);

                   dt = ds.Tables[0];
                   RptDocCrt.SetDataSource(dt);
                   crystalReportViewer_purchase1.ReportSource = RptDocCrt;
                   crystalReportViewer_purchase1.Refresh();

               }
               else
               {
                   MessageBox.Show("Record Not Found..!!!");
               }
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);
           }
       }

Richard MacCutchan

Вам нужно выяснить, почему это значение равно null, и исправить его.

1 Ответов

Рейтинг:
2

an0ther1

Проблема заключается в пути к файлу отчета. RptDocCrt.Load не может найти файл по указанному пути.

Приложение.StartUpPath зависит от того, как вы запускаете приложение.
Например, при отладке путь запуска будет следующим:;
<путь к проекту>\bin\<Debug or Release>\Executable

<Debug или Release> зависит от свойств конфигурации проекта.

Чтобы обеспечить доступ к файлу отчета, вам нужно будет скопировать файлы отчета в нужное место или поместить отчеты в другое место и жестко закодировать путь к файлам.

Примечание: если отчеты являются частью решения, вы можете настроить копирование файлов отчетов в выходное расположение

с уважением


Manoj Jagdale

Я пробовал, RptDocCrt.Load(@"F:\Newfolder\Hotel_Management\Hotel_Management\bin\Debug\ Доклад\genrate_Purchase_Report1.РПТ");

а также,
RptDocCrt.Load(@"F:\New папка\Hotel_Management\Hotel_Management\ genrate_Purchase_Report1.rpt");


но та же ошибка возникает и в crystalReportViewer_purchase1.ReportSource = RptDocCrt;
эта строка "ссылка на объект не устанавливается на экземпляр объекта."


crystalReportViewer_purchase1 <-- показывает нулевое значение..

an0ther1

Вы уверены, что путь правильный и у вас есть к нему доступ?
Например, что произойдет, если вы используете System.IO.File.Существует ("путь и имя файла")? Возможно, у вас возникли проблемы с разрешениями - попробуйте запустить Visual Studio от имени администратора..

Что произойдет, если переместить отчет в каталог, например C:\Temp\Report.rpt-что?

с уважением

Manoj Jagdale

Другие отчеты находятся на том же пути, что и запущенные, но проблема заключается только в этом.

Manoj Jagdale

данные также присутствуют в ds(dataset object).

an0ther1

Тогда проблема кроется в самом отчете.
Отчеты очень трудно устранить, когда вы предоставляете набор данных в качестве источника - вам нужно будет попробовать исключить вещи - удалить все формулы из отчета - просто закомментировать их - это хорошее начало-тогда выполняется ли отчет?
Если нет, начните смотреть на группировку

с уважением

Manoj Jagdale

Это простой отчет, не имеющий никакой функции и группировки. Я пытаюсь отобразить запись как в таблице,базе данных. И еще один отчет r из той же таблицы, база данных, которую они запускают. Есть ли проблема в наборе данных, используемом для отображения параметров в crystal report?, но я использую тот же способ для других отчетов, у которых нет проблем

an0ther1

Отладка программы - отчет будет ожидать определенных имен таблиц в наборе данных - присутствуют ли они?
Делает ли отчет подсчет записей? На какой стол он смотрит? Это все еще формула - так же, как и вытесненные секции, они полагаются на Формулы

с уважением