Создание отчета Crystal с динамическими таблицами во время выполнения - PullRequest
0 голосов
/ 27 декабря 2011

Здравствуйте. Я планирую приложение, которое в основном является интерфейсом отчетности для базы данных (проприетарный Pervasive SQL) с использованием строки подключения ODBC без DSN.

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

Вот кикер ...

Имена таблиц, из которых я хочу читать, имеют префиксс уникальным именем файла (на самом деле то же имя, которое я упоминал выше).Мне нужен кристалл, чтобы повторно сопоставить имена таблиц во время выполнения.Просто префиксы имен таблиц действительно.Поля и имена полей не изменятся.

Есть идеи, где мне искать этот блок?Я использую VS2010 & C #, если это помогает.Я думаю, у вас должны быть какие-то файлы классов, которые поставляются с Crystal, которые могут сделать некоторое отражение во время выполнения, чтобы получить / установить имена таблиц?

Любые мысли приветствуются и приветствуются.Роб

Редактировать: Я нашел несколько документов ссылка , которые имеют API документы и другую поддержку.Я буду изучать их.Все они представляют собой файлы .chm (файлы справки Windows), поэтому нет «онлайновых» документов для поиска.

1 Ответ

0 голосов
/ 28 декабря 2011
  • Добавьте Crystal ReportViewer, измените имя на objReport
  • , добавьте открытую функцию ShowReport ()

    public void ShowReport(ReportDocument objReport)
    {
        Cursor.Current = Cursors.WaitCursor;
        objReport.SetDatabaseLogon("", "dbpassword");
        cRep.ReportSource = objReport;
        this.Show();
        Cursor.Current = Cursors.Default;
    }
    

и вызовите еев любом месте вашего приложения

ds = GetDataInDataSet();//fILL DataSet with your data
rptPSummary objRpt = new rptPSummary();
objRpt.SummaryInfo.ReportComments = "Have a nice day";
objRpt.SummaryInfo.ReportTitle = "Purchase Summary Report from " + sDate.ToString("dd/MM/yyyy") + " to " + eDate.ToString("dd/MM/yyyy");
objRpt.SetDataSource(ds);

frmReportView frmRpt = new frmReportView();
frmRpt.Text = objRpt.SummaryInfo.ReportTitle;
frmRpt.MdiParent = this;
frmRpt.ShowReport(objRpt);
...