Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / ireport подзапросы / 10 сообщений из 10, страница 1 из 1
11.04.2012, 16:18
    #37748925
izver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport подзапросы
Здрасте, возник вопрос.
Есть база на postgresql.
Есть программа на java "Прием заказов".
Нужно сделать такой отчет:
Название фирм выдуманы.

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

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

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

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

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

И вообще там если поискать куча инфы по этому поводу, правда в основном кажется для JasperServer, котороый я не юзаю
...
Рейтинг: 0 / 0
19.04.2012, 21:47
    #37761981
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport подзапросы
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
19.04.2012, 21:49
    #37761986
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport подзапросы
sanBez,

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

1 - JasperViewForm - откуда?
2 - как вызывать его?
3 - где прописывать путь к файлу?
...
Рейтинг: 0 / 0
26.04.2012, 18:55
    #37772954
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport подзапросы
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
06.08.2012, 10:32
    #37905258
ditban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport подзапросы
а что за JasperTitlePanel?
...
Рейтинг: 0 / 0
06.08.2012, 11:08
    #37905319
ditban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport подзапросы
и какой именно компонент отвечает за сам просмотр отчета? без тулбаров и остального, только сам отчет!
...
Рейтинг: 0 / 0
06.08.2012, 14:38
    #37905739
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport подзапросы
ditban,

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


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