Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Программный доступ к внутренним данным файлов .rpt
|
|||
|---|---|---|---|
|
#18+
Есть куча rpt-шек (Crystal Reports 8.5). Подскажите, plz, как осуществить сабж. Необходимо извлечь данные, желательно SQL-запросами. Примеры на любом языке приветствуются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 06:21 |
|
||
|
Программный доступ к внутренним данным файлов .rpt
|
|||
|---|---|---|---|
|
#18+
Используя технологии, доступные для CR 8.5: API - CRPE API или COM - RDC, загружаешь в приложение отчет с сохраненными данными (или создаешь объект отчета, если СОМ), а затем выполняешь экспорт в XML, csv или в Access через ODBC. Примеров в сети и книгах достаточно. Да и в поставке CR 8.5 Developer идут примеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 15:25 |
|
||
|
Программный доступ к внутренним данным файлов .rpt
|
|||
|---|---|---|---|
|
#18+
А можно пример примера? :) Гуглю второй день по той же теме. Нашел несколько книжек и примеров, но там показано как создавать отчеты, используя различные источники данных. Мне не нужно создавать отчеты, нужно вытащить данные из 250 штук rpt. Вариант с конвертацией неплох. Вопрос как _конкретно_ это сделать программно автоматически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2008, 09:00 |
|
||
|
Программный доступ к внутренним данным файлов .rpt
|
|||
|---|---|---|---|
|
#18+
Примеры для RDC можно, например, посмотреть здесь: KB014: Integrating Crystal Reports with Visual FoxPro и здесь: Exporting Using the Report Designer Component ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2008, 14:08 |
|
||
|
Программный доступ к внутренним данным файлов .rpt
|
|||
|---|---|---|---|
|
#18+
Alexander Bor.Примеры для RDC можно, например, посмотреть здесь: KB014: Integrating Crystal Reports with Visual FoxPro и здесь: Exporting Using the Report Designer Component А RDC появилось в 8.5 или в 9? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2008, 14:42 |
|
||
|
Программный доступ к внутренним данным файлов .rpt
|
|||
|---|---|---|---|
|
#18+
RDC появились в 6-й версии CR. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2008, 15:25 |
|
||
|
Программный доступ к внутренним данным файлов .rpt
|
|||
|---|---|---|---|
|
#18+
Вот этот код взят со страницы первой ссылки (спасибо Alex) и он работает. Работает на Visual FoxPro 7.0. На VFP6 наотрез отказался подключаться компонент, также как и в VB6. LOCAL oCR AS CRAXDRT.Application LOCAL oRpt AS CRAXDRT.Report LOCAL oExp AS CRAXDRT.ExportOptions oCR = CREATEOBJECT("CrystalRuntime.Application") oRpt = oCR.OpenReport("C:\rpts\0001.rpt") oExp = oRpt.ExportOptions() oExp.DestinationType = 1 && disk oExp.FormatType = 5 && CSV oExp.DiskFileName = "C:\rpts\0001.txt" oRpt.Export(.F.) Экспортируется без ошибок. Проблема заключается в том, что некоторые текстовые поля отчета 0001.rpt зачем-то помещены в контейнер, и значения этих полей при экспорте в CSV не переносятся. При попытке экспорта в другие форматы, например в XML, возникает ошибка. OLE IDispatch exception code 0 from Crystal Reports ActiveX Designer: File not found. Непонятно, о каком файле идет речь. oExp = oRpt.ExportOptions() oExp.DestinationType = 1 && 1 works oExp.FormatType = 36 && crEFTXML oExp.DiskFileName = "C:\rpts\3.xml" oRpt.Export(.F.) При экспорте отчетов вручную в CR8.5 Dev (File->Print->Export->Adobe PDF), появляется окно "Exporting Records" и следом за ним окно с заголовком "Select Data Source", где просят указать файл *.ttx или создать новый. Я создал такой файл специальным скриптом. Не помогло. Тоже самое с другими форматами, с XML, HTML и даже с Text. Может можно как-то на ходу вытащить данные без экспорта? LOCAL oCR AS CRAXDRT.Application LOCAL oRpt AS CRAXDRT.Report LOCAL oDB AS CRAXDRT.Database LOCAL ocDBT AS CRAXDRT.DatabaseTables LOCAL oDBT AS CRAXDRT.DatabaseTable LOCAL ocParm AS CRAXDRT.ParameterFieldDefinitions LOCAL oParm AS CRAXDRT.ParameterFieldDefinition oCR = CREATEOBJECT("CrystalRuntime.Application") oRpt = oCR.OpenReport("C:\rpts\0001.rpt") * Create the Database object oDB = oRpt.Database() * Get a references to the DatabaseTables collection ocDBT = oDB.Tables() * Get a reference to the DatabaseTable object for table 1 oDBT = ocDBT.Item(1) Вот на этом этапе, когда получили ссылку на таблицу, можно вытащить данные из этой таблицы?2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2008, 13:26 |
|
||
|
Программный доступ к внутренним данным файлов .rpt
|
|||
|---|---|---|---|
|
#18+
Guset...Работает на Visual FoxPro 7.0. На VFP6 наотрез отказался подключаться компонент, также как и в VB6. Не могу сейчас сказать, какие версии VFP, VB поддерживают CR SDK 8.5. Нужно смотреть док-ю. Возможно, в этом дело. В любом случае, как я уже писал, в поставке CR Dev. 8.5 разворачиваются примеры экспорта именно для VB. Нужно их смотреть. Guset...При попытке экспорта в другие форматы, например в XML, возникает ошибка. OLE IDispatch exception code 0 from Crystal Reports ActiveX Designer: File not found. Непонятно, о каком файле идет речь. ...При экспорте отчетов вручную в CR8.5 Dev (File->Print->Export->Adobe PDF), появляется окно "Exporting Records" и следом за ним окно с заголовком "Select Data Source", где просят указать файл *.ttx или создать новый. Я создал такой файл специальным скриптом. Не помогло. Тоже самое с другими форматами, с XML, HTML и даже с Text. Отчеты, судя по всему, были созданы на ttx-файле. А в приложении им динамически подсовывались данные. Однако исходный ttx-файл отчет будет запрашивать только в том случае, когда данных в отчете нет. Т.е. снята опция "Save Data with Report" (или когда запустить обновление данных вручную). Посмотри в дизайнере - стоит ли эта опция у проблемного отчета. Иначе, если не стоит, то и вытаскивать из отчета нечего. Guset...Может можно как-то на ходу вытащить данные без экспорта? Экспортировать проще. Однако, по идее, можно и динамически: перебрать все поля отчета и подотчетов. Я не пробовал. Опять же, если данные там есть. Guset...Вот на этом этапе, когда получили ссылку на таблицу, можно вытащить данные из этой таблицы? Этот объект таблицы представляет собой представление в отчете объекта внешнего источника данных. Т.е. это метаданные, не данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2008, 16:09 |
|
||
|
Программный доступ к внутренним данным файлов .rpt
|
|||
|---|---|---|---|
|
#18+
Удалось подключить компонент в VB6. Оказалось, необходимо было указать на компонент в меню Project -> References... А в Project -> Components (как сказано в документации) ничего делать не надо. Данные, которые необходимо перенести, оказались в подотчете. С помощью кода ниже я пытаюсь экспортировать нужный подотчет в CSV. Private Sub Form_Load() Dim Report As CRAXDRT.Report Dim SubReport As CRAXDRT.Report Dim App As CRAXDRT.Application Dim Sections As CRAXDRT.Sections Dim Section As CRAXDRT.Section Dim RepObjs As CRAXDRT.ReportObjects Dim SubReportObj As CRAXDRT.SubreportObject Dim n As Integer Dim i As Integer Dim j As Integer Dim ExportOptions As CRAXDRT.ExportOptions Set App = New CRAXDRT.Application Set Report = App.OpenReport("C:\rpts\659.rpt") ' Set ExportOptions = Report.ExportOptions ' ExportOptions.DestinationType = crEDTDiskFile ' ExportOptions.DiskFileName = "C:\rpts\359.txt" ' ExportOptions.FormatType = crEFTCommaSeparatedValues ' Report.Export False Set Sections = Report.Sections For n = 1 To Sections.Count Set Section = Sections.Item(n) Set RepObjs = Section.ReportObjects For i = 1 To RepObjs.Count If RepObjs.Item(i).Kind = crSubreportObject Then Set SubReportObj = RepObjs.Item(i) 'MsgBox SubReportObj.SubreportName 'If SubReportObj.SubreportName = "pd4new.rpt" Then If SubReportObj.SubreportName = "pd4new.rpt" Then Set SubReport = SubReportObj.OpenSubreport Set ExportOptions = SubReport.ExportOptions ExportOptions.DestinationType = crEDTDiskFile ExportOptions.DiskFileName = "C:\rpts\359.txt" ExportOptions.FormatType = crEFTCommaSeparatedValues SubReport.Export False End If End If Next i Next n 'MsgBox "done" End Sub Программа прерывается окном Run-time '-2147192185 (80047287)' "SQL Server Error" Действительно, отчет был создан на основе выборки данных из MS SQL Server программой с закрытым исходным кодом. Что она еще делала помимо запросов к SQL неизвестно. Флажок "Save data with report" установлен. В IDE CR8.5Dev отчет открывается, все данные всех подотчетов прекрасно отображаются. Один из подотчетов, где данные заданы статически, экспортируется без ошибок. Данные внутри отчета точно есть. Даже когда я отключил все сетевые соединения, в IDE CR8.5Dev отчет отобразился корректно. А при записи его без флажка "Save data with report" он похудел с 1.2 метра до 700 кило. Кто-нибудь знает, формат бинарников .rpt документирован? Ситуация такая, что хоть обратно реверсь. Чертова проприетарщина! >:( Свои же данные не могу вернуть назад. Alexander Bor.Однако, по идее, можно и динамически: перебрать все поля отчета и подотчетов... Как бы это реализовать... Может у кого-то есть опыт, советы, идеи? Любая помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2008, 08:21 |
|
||
|
Программный доступ к внутренним данным файлов .rpt
|
|||
|---|---|---|---|
|
#18+
К счастью эти отчеты прекрасно распечатываются. Скриптиком направил кучу rpt-шек в виртуальный принтер печатающий в pdf. Остальное дело техники и времени. Проблема решена. Судя по количеству просмотров, эта тема многим интересна. Так что, спасибо всем за внимание тоже. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 13:59 |
|
||
|
|

start [/forum/topic.php?fid=31&fpage=96&tid=1536559]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 382ms |

| 0 / 0 |
