|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
Поясню немного. У меня запущена моя программа просмотра отчетов и редактор отчетов crystal reports. Я редактирую отчет в crystal reports и хочу чтобы его можно было обновить не выходя из программы просмотра и чтобы при этом не запрашивались параметры, передаваемые в хранимую процедуру. Нашла у просмотрщика отчетов метод REFRESHex() написала вот такой код .obj.olecontrol1.refreshex(.f.), в таком виде не запрашиваются параметры, но и не обновляется отчет, а если так .obj.olecontrol1.refreshex(.T.),то параметры запрашиваются, а отчет не обновляется. Как быть? WITH _screen.ActiveForm IF type('.obj')=='O' .and. !ISNULL(.obj) .obj.olecontrol1.refreshex(.f.) ENDIF .refresh() ENDWITH ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 08:16 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
НадеждаМ Как быть? Сохранить параметры в некие переменные, закрыть отчет. Открыть отчет с сохраненными параметрами. Хитро, конечно, но файл измененного отчета нужно перезагрузить. Refresh - это явно не перезагрузка файла... Но вообще, при отладке можно сделать программулину, которая будет подставлять отладочные параметры, а не выдавать каждый раз форму с просьбой ввести параметры. Либо в самом генераторе отчетов отлаживатся - указывать значения параметров по умолчанию. Я так всегда делал в любых генераторах отчетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 08:47 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
MAYAKOV_SV, Вот я никак не пойму как закрыть отчет. Нашла у ActiveX, который мой отчет отображает, свойства closeview, viewclosed, но не знаю как их применить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 13:22 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
НадеждаМ, У вас Crystal ActiveX Report Viewer Library? Может быть так: obj.olecontrol1.closeview(i) где i - номер вида. А отлаживатся в редакторе отчетов не получается? Зачем таки сложности? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 13:42 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
MAYAKOV_SVНадеждаМ, У вас Crystal ActiveX Report Viewer Library? Может быть так: obj.olecontrol1.closeview(i) где i - номер вида. А отлаживатся в редакторе отчетов не получается? Зачем таки сложности? Я только начала изучать Crystal reports. Вот возникла такая задача. Попробовала .obj.olecontrol1.closeview(1) , так как у меня один отчет отображается на форме. Поясните мне пожалуйста как в редакторе отлаживаться? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 14:04 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
На форме у меня компонент Crystal ActiveX Report Viewer Control 11.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 14:10 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
НадеждаМ Поясните мне пожалуйста как в редакторе отлаживаться? Честно сказать не знаю, что у вас за редактор... У меня среда Visual Studio - там можно все. НадеждаМ Попробовала .obj.olecontrol1.closeview(1) , так как у меня один отчет отображается на форме. А результат? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 14:11 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
НадеждаМMAYAKOV_SVНадеждаМ, У вас Crystal ActiveX Report Viewer Library? Может быть так: obj.olecontrol1.closeview(i) где i - номер вида. А отлаживатся в редакторе отчетов не получается? Зачем таки сложности? Я только начала изучать Crystal reports. Вот возникла такая задача. Попробовала .obj.olecontrol1.closeview(1) , так как у меня один отчет отображается на форме. Поясните мне пожалуйста как в редакторе отлаживаться? Ругается вот на эту строку .obj.olecontrol1.closeview(1) Дата и время: 15.11.2010 14:10:00;Номер ошибки: 0;Сообщение: OLE IDispatch exception code 0 from CrystalReports115.ActiveXReportViewer.1: Индекс выходит за пределы диапазона...;Строка с ошибкой: .obj.olecontrol1.closeview(1);Номер строки с ошибкой: 9;Название программы с ошибкой: LP_FMSTART.OBJ.OLECONTROL1.VIEWCLOSED ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 14:12 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
НадеждаМИндекс выходит за пределы диапазона... Попробуйте obj.olecontrol1.closeview( 0 ) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 14:13 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
MAYAKOV_SV, Пробовала. Та же самая ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 14:26 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
НадеждаМ, В принципе, не важно с этим View. Напишите, пожалуйста код, как вы отчет открываете в этом ActiveX, если можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 14:28 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
У меня не Visuall Studio, просто отдельно CR Developer version 12.0.0.549 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 14:29 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
PUBLIC oCR, oRpt **************печать отчета crystal reports***************** oCR=CREATEOBJECT("CrystalRuntime.application.11") oRpt=oCR.OpenReport(report_name + '.rpt') DO CASE CASE .chkSum.VALUE = 0 && ***получаем параметры дла передачи их в отчет FOR i=1 TO reports.kol IF reports_parameter.parout DO CASE CASE reports_parameter.TYPE = 'N' par(i)= IIF(cur1, par(i), 0) CASE reports_parameter.TYPE = 'D' par(i)= IIF(cur1, par(i), CTOD('')) CASE reports_parameter.TYPE = 'C' par(i)= IIF(cur1, par(i), '') ENDCASE endif ****присваиваеи i-му полу отчета значение i-го параметра oRpt.ParameterFields(i).SetCurrentValue(par(i)) ENDFOR ****типа печать итогов CASE .chkSum.VALUE = 1 && DO CASE *** перебрать areas уже загруженного отчета и подавить нужную FOR EACH loObj IN orpt.areas IF loObj.Name == "DetailArea1" loObj.Suppress = .T. ENDIF ENDFOR WITH lp_fmstart.obj .olecontrol1.reportsource=oRpt .olecontrol1.Viewreport() ENDWITH ENDCASE ENDCASE Для вывода на экран отчета я в главную форму добавляю компонент - просмотрщик (obj) IF this.Parent.chkPrinter.value=0 *******вывод на экран просмотрщика отчетов crystal reports + отчеты WITH lp_fmstart *SET STEP ON .AddObject("obj", "mn_printform") .obj.visible=.t. .obj.WIDTH = .WIDTH .obj.HEIGHT =.HEIGHT this.Parent.visible=.f. .obj.olecontrol1.reportsource=oRpt .obj.olecontrol1.Viewreport() .obj.olecontrol1.setfocus() ENDWITH ELSE ****печать без вывода на экран oRpt.PrintOut() exit endif ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 14:41 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
reports и reports_parameters - у нас это таблицы, хранящие всю информацию о параметрах, передаваемых в отчет: количество, имена отчетов, имена процедур, имена самих параметорв. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 14:52 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
Забыла пояснить что таблицы на MSSQL server 2005 находятся и программа на foxpro 9.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 15:00 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
НадеждаМ, Могу ошибатся, но примерно так рассуждаю: автор хочу чтобы его можно было обновить не выходя из программы просмотра и чтобы при этом не запрашивались параметры Для этого нужно написать такой код в процедуру: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Для загрузки и обновления: WITH lp_fmstart LoadReport(report_name) .obj.olecontrol1.reportsource=oRpt .obj.olecontrol1.Viewreport() .obj.olecontrol1.setfocus() ENDWITH Могу и ошибатся. Главное смысл поймите - для перезагрузки отредактированного нужно заново загрузить отчет и подставить параметры, затем указать reportsource. Ведь это логично - файл поменялся его нужно перезагрузить. Вы пробовали еще метод olecontrol1.Refresh()? Может он поможет перезагрузить отчет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 15:04 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
MAYAKOV_SV, Refresh я пробовала, но при его использовании выходит ошибка и запрашиваются параметры. См. во вложениях. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 15:12 |
|
Обновить отчет crystal reports не обновляя в нем данные
|
|||
---|---|---|---|
#18+
НадеждаМ, Я соорудил испытательный стенд, он правда на Visual Basic был сделан, но это не важно. В общем, refresh не помогает. Просто вам нужно сделать кнопочку на форме просмотра отчета для обновления. На этой кнопке вам нужно повторить операции: oRpt=oCR.OpenReport(repname + '.rpt') ... WITH lp_fmstart.obj .olecontrol1.reportsource=oRpt .olecontrol1.Viewreport() ENDWITH В результате у вас заново загрузится отчет в oRpt, подставятся параметры и отобразится на ActiveX. Лучше вывести это в процедуру, чтобы код не повторять в разных местах. У меня все получилось, очередь за Вами :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 15:32 |
|
|
start [/forum/topic.php?fid=41&fpage=86&tid=1584802]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 284ms |
total: | 420ms |
0 / 0 |