powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / ireport подзапросы
10 сообщений из 10, страница 1 из 1
ireport подзапросы
    #37748925
izver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здрасте, возник вопрос.
Есть база на postgresql.
Есть программа на java "Прием заказов".
Нужно сделать такой отчет:
Название фирм выдуманы.

-------------------------------------------------------
| Отчет № 1 |
-------------------------------------------------------
клиент | сумма заявки | тонаж |
-------------------------------------------------------
"Солнечные дни" | 2000.00 | 150 |
-------------------------------------------------------
"Шоколадный рай" | 1000.00 | 60 |
-------------------------------------------------------
.....................................................................
.....................................................................
-------------------------------------------------------
"Ананас" | 5000.00 | 20 |
-------------------------------------------------------

Пользователь нажимает на "Шоколадный рай" и ему высвечивается другой отчет, который отображает какую продукцию заказал данный потребитель.

Такое вообще реально сделать?
...
Рейтинг: 0 / 0
ireport подзапросы
    #37749017
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izver,

Реально. Сам давно хочу, руки никак не дойдут. Бешеный год какой-то, проекты как грибы растут.
Ну вот, поплакался и легче стало :) Дальше в борозду :)

Посмотри например:
http://jasperforge.org/plugins/espforum/view.php?group_id=83&forumid=101&topicid=95177

И вообще там если поискать куча инфы по этому поводу, правда в основном кажется для JasperServer, котороый я не юзаю
...
Рейтинг: 0 / 0
ireport подзапросы
    #37761981
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez,

Появилось чуть времени и оп-ля! Оно оказывается работает без jasperserver. Я конечно наверно сделал какие-то вещи криво, но это не суть важно. Главное я сам увидел, что это в возможно. Хотя почему-то мне кажется что из встроенного в iReport preview это не заработает. А может и не прав.

Сделано на скорую руку и больше для своего удовольствия чем собстно для дела, так что не обессудьте

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
public class JasperViewPanel extends JRViewer{

	public JasperViewPanel(JasperPrint jrPrint) {
		super(jrPrint);
		addHyperlinkListener(new ExecHyperlinkSubreport());
		tlbToolBar.setVisible(false); //прячем стандартный тулбар
		lblStatus.setVisible(false); //прячем стутусбар
	}

        .....

	class ExecHyperlinkSubreport implements JRHyperlinkListener {

		@Override
		public void gotoHyperlink(JRPrintHyperlink hyperlink) throws JRException {
			// в референсе строка типа $P{SUBREPORT_DIR} + "имя_сабрепорта.jasper"
			String jasperReportFile = hyperlink.getHyperlinkReference();
			
			// вычленяем параметры
			Map<String, Object> params = new HashMap<String, Object>();			
			JRPrintHyperlinkParameters hyperlinkParameters = hyperlink.getHyperlinkParameters();
			// в P_DATA_SOURCE идет new MyDataSource(...) implements JRDataSource
			if (hyperlinkParameters != null) {
				for (JRPrintHyperlinkParameter hyperParam: hyperlinkParameters.getParameters()) {
					System.out.println("Параметр:"+hyperParam.getName()+ " valueClass="+hyperParam.getValueClass()+
					" class="+hyperParam.getValue().getClass().getCanonicalName());
					params.put(hyperParam.getName(), hyperParam.getValue());
				}
			}
			
			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReportFile, params);
			
			JasperViewForm jrviewSubreportForm = new JasperViewForm(jasperPrint);
			jrviewSubreportForm.showForm();
			
			/*
			File file = new File("D:/temp/firstDrillDown.html");
			try {
				JasperUtils.exportReport(ReportFormat.HTML, jasperPrint, file);
			} catch (IOException e) {
				new JRException(e);
			}
			*/
		}
		
	}
}
...
Рейтинг: 0 / 0
ireport подзапросы
    #37761986
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez,

И как это выглядит
...
Рейтинг: 0 / 0
ireport подзапросы
    #37772830
izver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez,

1 - JasperViewForm - откуда?
2 - как вызывать его?
3 - где прописывать путь к файлу?
...
Рейтинг: 0 / 0
ireport подзапросы
    #37772954
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izver,

1. Кусок исходника JasperViewForm
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
public class JasperViewForm extends javax.swing.JFrame {

	/**
	 * UID
	 */
	private static final long serialVersionUID = -8651914729714374414L;

	/**
	 * Основная панель.
	 */
	private JPanel mainPanel;

	/**
	 * Панель для отрисовки отчета
	 */
	protected JasperTitlePanel viewer;

        ......

        	/**
	 * Конструктор
	 * 
	 * @param jasperPrint
	 * @param title
	 * @param icon
	 * @param menu
	 */
	public JasperViewForm(JasperPrint jasperPrint, String title, ImageIcon icon, JMenuBar menu) {
		super(title);

		try {

			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
			this.fullScreen = new JDialog(this, true);
			this.viewer = new JasperTitlePanel(jasperPrint);
        ....


это самописная штука, подчиненный мой писал, я особо не разбирался. Основное тут, что оно наследуется от стандартного джасперовского JRView, на который можно накрутить свои навороты (экспорт в html и xls, сохранение, печать,...).

В итоге моего встроенного addHyperlinkListener(new ExecHyperlinkSubreport()); получается что из этой формы вызывается она же.
напиши свою такую упрощенную, чтоб проверить просто возможность.

2. Вызывать JRViewForm конструктором

3. Файл я писал в Reference гиперссылки (как описано в доке), но фактически поднял его руками, сделал работу за jasper:
Код: java
1.
2.
3.
4.
5.
// в референсе строка типа $P{SUBREPORT_DIR} + "имя_сабрепорта.jasper"
			String jasperReportFile = hyperlink.getHyperlinkReference();

...
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReportFile, params);



3. Путь к файлу передается стандартно через P_SUBREPORT_DIR основного отчета

Еще раз напоминаю - это на коленке сделано, никакая правильность подхода или оптимальность решения меня в тот момент не волновала
...
Рейтинг: 0 / 0
ireport подзапросы
    #37905258
ditban
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а что за JasperTitlePanel?
...
Рейтинг: 0 / 0
ireport подзапросы
    #37905319
ditban
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и какой именно компонент отвечает за сам просмотр отчета? без тулбаров и остального, только сам отчет!
...
Рейтинг: 0 / 0
ireport подзапросы
    #37905739
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ditban,

смотри в исходниках jasper
net.sf.jasperreports.view.JRViewer -это основа. Остальное (JasperViewPanel extends JRViewer, и т.д. ) - классы нашей внутренней утилитки. Которую ни объяснять, ни выносить на общее обсуждение/пользование (или обсуждать реализацию) нет у меня желания.
...
Рейтинг: 0 / 0
ireport подзапросы
    #37905967
ditban
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
про внутреннюю политику я и не спрашиваю. Меня интересует, как добавить просмотр jasper на JPanel
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / ireport подзапросы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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