powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновить отчет crystal reports не обновляя в нем данные
19 сообщений из 19, страница 1 из 1
Обновить отчет crystal reports не обновляя в нем данные
    #36956128
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясню немного. У меня запущена моя программа просмотра отчетов и редактор отчетов 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
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36956147
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМ
Как быть?

Сохранить параметры в некие переменные, закрыть отчет.
Открыть отчет с сохраненными параметрами.
Хитро, конечно, но файл измененного отчета нужно перезагрузить. Refresh - это явно не перезагрузка файла...
Но вообще, при отладке можно сделать программулину, которая будет подставлять отладочные параметры, а не выдавать каждый раз форму с просьбой ввести параметры. Либо в самом генераторе отчетов отлаживатся - указывать значения параметров по умолчанию.
Я так всегда делал в любых генераторах отчетов.
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36956856
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAYAKOV_SV,

Вот я никак не пойму как закрыть отчет. Нашла у ActiveX, который мой отчет отображает, свойства closeview, viewclosed, но не знаю как их применить.
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36956928
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМ,

У вас Crystal ActiveX Report Viewer Library?
Может быть так:
obj.olecontrol1.closeview(i)

где i - номер вида.

А отлаживатся в редакторе отчетов не получается?
Зачем таки сложности?
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957005
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAYAKOV_SVНадеждаМ,

У вас Crystal ActiveX Report Viewer Library?
Может быть так:
obj.olecontrol1.closeview(i)

где i - номер вида.

А отлаживатся в редакторе отчетов не получается?
Зачем таки сложности?


Я только начала изучать Crystal reports. Вот возникла такая задача.
Попробовала .obj.olecontrol1.closeview(1) , так как у меня один отчет отображается на форме. Поясните мне пожалуйста как в редакторе отлаживаться?
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957021
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На форме у меня компонент Crystal ActiveX Report Viewer Control 11.5
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957024
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМ
Поясните мне пожалуйста как в редакторе отлаживаться?
Честно сказать не знаю, что у вас за редактор... У меня среда Visual Studio - там можно все.
НадеждаМ
Попробовала .obj.olecontrol1.closeview(1) , так как у меня один отчет отображается на форме.

А результат?
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957026
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМ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
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957031
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМИндекс выходит за пределы диапазона...
Попробуйте
obj.olecontrol1.closeview( 0 )
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957069
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAYAKOV_SV,

Пробовала. Та же самая ошибка.
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957076
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМ,

В принципе, не важно с этим View.
Напишите, пожалуйста код, как вы отчет открываете в этом ActiveX, если можно.
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957081
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня не Visuall Studio, просто отдельно CR Developer version 12.0.0.549
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957124
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957194
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reports и reports_parameters - у нас это таблицы, хранящие всю информацию о параметрах, передаваемых в отчет: количество, имена отчетов, имена процедур, имена самих параметорв.
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957232
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыла пояснить что таблицы на MSSQL server 2005 находятся и программа на foxpro 9.0
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957253
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМ,

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

Для этого нужно написать такой код в процедуру:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
PROCEDURE LoadReport
 PARAMETERS repname
oRpt=oCR.OpenReport(repname + '.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
ENDPROC
И в своем коде вызывать:

Для загрузки и обновления:
WITH lp_fmstart
LoadReport(report_name)
.obj.olecontrol1.reportsource=oRpt
.obj.olecontrol1.Viewreport()
.obj.olecontrol1.setfocus()
ENDWITH

Могу и ошибатся. Главное смысл поймите - для перезагрузки отредактированного нужно заново загрузить отчет и подставить параметры, затем указать reportsource. Ведь это логично - файл поменялся его нужно перезагрузить.

Вы пробовали еще метод olecontrol1.Refresh()?
Может он поможет перезагрузить отчет.
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957297
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAYAKOV_SV,

Refresh я пробовала, но при его использовании выходит ошибка и запрашиваются параметры. См. во вложениях.
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957389
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМ,

Я соорудил испытательный стенд, он правда на Visual Basic был сделан, но это не важно.
В общем, refresh не помогает.

Просто вам нужно сделать кнопочку на форме просмотра отчета для обновления.
На этой кнопке вам нужно повторить операции:
oRpt=oCR.OpenReport(repname + '.rpt')
...
WITH lp_fmstart.obj
.olecontrol1.reportsource=oRpt
.olecontrol1.Viewreport()
ENDWITH

В результате у вас заново загрузится отчет в oRpt, подставятся параметры и отобразится на ActiveX. Лучше вывести это в процедуру, чтобы код не повторять в разных местах.

У меня все получилось, очередь за Вами :))
...
Рейтинг: 0 / 0
Обновить отчет crystal reports не обновляя в нем данные
    #36957395
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAYAKOV_SV,

Как раз это сейчас пытаюсь сделать )
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновить отчет crystal reports не обновляя в нем данные
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]