forum.bitel.ru http://forum.bitel.ru/ |
|
Помогите с iReport 1.3.2 http://forum.bitel.ru/viewtopic.php?f=12&t=8773 |
Страница 1 из 1 |
Автор: | degrees [ 16 дек 2013, 11:44 ] |
Заголовок сообщения: | Помогите с iReport 1.3.2 |
Написал отчет, в данном отчете необходимо выполнение некой функции. Написал с этой функцией библиотеку, откомпилировал в jar файл. Вопрос как подключить данную библиотеку к iReport чтобы воспользоваться методом моего класса из данной библиотеки? |
Автор: | Artur [ 16 дек 2013, 12:03 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
Добавить эту библиотеку в classpath сервера, а в скрипте отчета прописать соответствующий import. Если я верно понял, что вы хотите. |
Автор: | degrees [ 16 дек 2013, 12:46 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
Artur писал(а): Добавить эту библиотеку в classpath сервера, а в скрипте отчета прописать соответствующий import. Если я верно понял, что вы хотите. А средствами iReport как это сделать? Открыть редактор скрипта и там указать в jrxml? Можно по конкретнее? Просто в classpath уже прописал. Создал параметр библиотеки (или как там правильно называется не знаю), указал свой класс, и пытаюсь его вызвать из ячейки самого репорта. Компилится все нормально. Но не подцепляется почему то эта библиотека в сам репорт. Если бы она подцепилась бы, были бы видны методы моего класса. |
Автор: | degrees [ 16 дек 2013, 16:28 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
Artur писал(а): Добавить эту библиотеку в classpath сервера, а в скрипте отчета прописать соответствующий import. Если я верно понял, что вы хотите. Прописал в jrxml секцию import. Не заработало. Вот часть кода: Код: ......... <import value="java.util.*" /> <import value="net.sf.jasperreports.engine.*" /> <import value="net.sf.jasperreports.engine.data.*" /> <import value="com.mycompany.myscriptlet.*" /> <parameter name="MY_SCRIPTLET" isForPrompting="false" class="com.mycompany.myscriptlet"/> ........ <font size="12"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$P{MY_SCRIPTLET}.getWeekNumber(""+$F{col3})]]></textFieldExpression> </textField> ......... В программировании на java новичек и c iReport столкнулся впервые. Помогите разобраться. |
Автор: | Artur [ 16 дек 2013, 16:41 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
Погодите. У вас данные откуда берутся? скрипт bgbs? и имел в виду добавить импорт именно в скрипте получения данных, написанном на bgbs |
Автор: | degrees [ 16 дек 2013, 16:47 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
Artur писал(а): Погодите. У вас данные откуда берутся? скрипт bgbs? и имел в виду добавить импорт именно в скрипте получения данных, написанном на bgbs Скрипт jrxml (создан iReport 1.3.2). Функция написана на java и откомпелирована в jar. Данные берутся SQL запросом. Отчет у меня строится по запросу, но функция моя не срабатывает. Вот что пишет iReport: java.lang.ClassNotFoundException: com.mycompany.myscriptlet /jasperReport/parameter[1] Скорее всего ругается вот на это Код: <parameter name="MY_SCRIPTLET" isForPrompting="false" class="com.mycompany.myscriptlet"/> Как вот мне вызвать мою функцию из моей библиотеке именно в ячейке отчета? Исходные коды могу предоставить полностью. |
Автор: | skyb [ 16 дек 2013, 17:08 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
смотрите, у вас есть своя скомпилированная джарка, когда пишете на ирепорт там необходимо выбрать тип BGBS в нем необходимо написать скрипт отчета где в самом начале у вас будет импорт вашей библиотеки ![]() видите импорт вверху, а так же query language там bgbs |
Автор: | degrees [ 16 дек 2013, 18:04 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
skyb писал(а): смотрите, у вас есть своя скомпилированная джарка, когда пишете на ирепорт там необходимо выбрать тип BGBS в нем необходимо написать скрипт отчета где в самом начале у вас будет импорт вашей библиотеки ![]() видите импорт вверху, а так же query language там bgbs А у меня нет на вкладке bgbs. |
Автор: | skyb [ 17 дек 2013, 03:38 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
руками впишите, это будет обрабатывать бгб, то что ирепорт не знает не обращайте внимания |
Автор: | degrees [ 17 дек 2013, 11:31 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
skyb писал(а): руками впишите, это будет обрабатывать бгб, то что ирепорт не знает не обращайте внимания Код: import java.sql.*; import java.util.*; import com.mycompany.myscriptlet.*; public void fillReport(con, filter, result) { PreparedStatement ps=con.prepareStatement(result.sql("select contract.date1 as col3, "+ "contract_group.title as col1, "+ "count(contract_group.title) as col2 "+ "from contract "+ "join contract_group on contract.gr=contract_group.id "+ "group by col3",filter)); ResultSet rs=ps.executeQuery(); result.setDataSource(rs); } Сделал вот так, но компилятор теперь ругается. Поэтому не могу посмотреть работает отчет или нет. Compiling to file... /home/frolov/iReport_1.3.2/iReport_1.3.2/kernel_contract_contract4.jasper -> /home/frolov/iReport_1.3.2/iReport_1.3.2/bin/kernel_contract_contract4.java Errors compiling /home/frolov/iReport_1.3.2/iReport_1.3.2/kernel_contract_contract4.jasper. net.sf.jasperreports.engine.JRException: org.xml.sax.SAXParseException; lineNumber: 43; columnNumber: 18; Error at line 43 char 18: net.sf.jasperreports.engine.JRException: No query executer factory class registered for bgbs queries. Create a propery named net.sf.jasperreports.query.executer.factory.bgbs. at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:243) at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:226) at it.businesslogic.ireport.IReportCompiler.loadJasperDesign(IReportCompiler.java:1888) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:569) at java.lang.Thread.run(Thread.java:679) Caused by: org.xml.sax.SAXParseException; lineNumber: 43; columnNumber: 18; Error at line 43 char 18: net.sf.jasperreports.engine.JRException: No query executer factory class registered for bgbs queries. Create a propery named net.sf.jasperreports.query.executer.factory.bgbs. at org.apache.commons.digester.Digester.createSAXException(Digester.java:2919) at org.apache.commons.digester.Digester.createSAXException(Digester.java:2945) at org.apache.commons.digester.Digester.endElement(Digester.java:1133) at it.businesslogic.ireport.compiler.xml.SourceTraceDigester.endElement(SourceTraceDigester.java:159) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at org.apache.xerces.impl.dtd.XMLDTDValidator.endNamespaceScope(Unknown Source) at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source) at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at org.apache.commons.digester.Digester.parse(Digester.java:1647) at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:239) ... 4 more Caused by: net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: No query executer factory class registered for bgbs queries. Create a propery named net.sf.jasperreports.query.executer.factory.bgbs. at net.sf.jasperreports.engine.design.JRDesignDataset.queryLanguageChanged(JRDesignDataset.java:842) at net.sf.jasperreports.engine.design.JRDesignDataset.setQuery(JRDesignDataset.java:413) at net.sf.jasperreports.engine.design.JasperDesign.setQuery(JasperDesign.java:631) at sun.reflect.GeneratedMethodAccessor44.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216) at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:216) at org.apache.commons.digester.Rule.end(Rule.java:230) at org.apache.commons.digester.Digester.endElement(Digester.java:1130) ... 19 more Caused by: net.sf.jasperreports.engine.JRException: No query executer factory class registered for bgbs queries. Create a propery named net.sf.jasperreports.query.executer.factory.bgbs. at net.sf.jasperreports.engine.util.JRQueryExecuterUtils.getQueryExecuterFactory(JRQueryExecuterUtils.java:56) at net.sf.jasperreports.engine.design.JRDesignDataset.queryLanguageChanged(JRDesignDataset.java:831) ... 28 more Compilation running time: 25. |
Автор: | skyb [ 17 дек 2013, 11:47 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
вы его где компилите? и зачем? его просто в ireport нада собрать и подкинуть биллингу, без компиляции. и ещё такой вопрос, у вас просто sql запрос чтоль? вы свою библиотеку то как использовать собираетесь? |
Автор: | degrees [ 17 дек 2013, 12:12 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
skyb писал(а): вы его где компилите? и зачем? его просто в ireport нада собрать и подкинуть биллингу, без компиляции. и ещё такой вопрос, у вас просто sql запрос чтоль? вы свою библиотеку то как использовать собираетесь? В библиотеке есть функция getWeekNumber(string), мне надо эту функцию вызывать из ячейки отчета. Что то типа getWeekNumber(""+$F{col3}). Как это сделать правильно? |
Автор: | skyb [ 17 дек 2013, 12:42 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
degrees писал(а): skyb писал(а): вы его где компилите? и зачем? его просто в ireport нада собрать и подкинуть биллингу, без компиляции. и ещё такой вопрос, у вас просто sql запрос чтоль? вы свою библиотеку то как использовать собираетесь? В библиотеке есть функция getWeekNumber(string), мне надо эту функцию вызывать из ячейки отчета. Что то типа getWeekNumber(""+$F{col3}). Как это сделать правильно? Тоесть Вам необходимо получить номер недели? а почему сразу не вбить это в сам отчет, пусть он и формирует эту строку Код: import java.sql.*; import java.util.*; import com.mycompany.myscriptlet.*; public void fillReport(con, filter, result) { /* *Ниже например как получить текущий год и минус месяц, этот код заменить на получение недели */ Calendar c = Calendar.getInstance(); currentYear = c.get(java.util.Calendar.YEAR); c.add( Calendar.MONTH, -1 ); mounth = c.getDisplayName(Calendar.MONTH, Calendar.LONG, new Locale("ru")); PreparedStatement ps=con.prepareStatement(result.sql("select contract.date1, "+ "contract_group.title, "+ "count(contract_group.title) as col2 "+ "from contract "+ "join contract_group on contract.gr=contract_group.id "+ "group by contract.date1",filter)); ResultSet rs=ps.executeQuery(); List res = new ArrayList(); while(rs.next()) { Map map = new HashMap(); map.put("col1", rs.getString(2)); map.put("col2", rs.getString(3)); map.put("col3", rs.getString(1)); map.put("col4", mounth); res.add(map); } result.setDataSource( res ); result.setDataSource(rs); } Писал на коленке, но примерно так, подставить свои значения, и причесать верно |
Автор: | skyb [ 17 дек 2013, 12:43 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
а, ну и импорты даты нада ещё сделать |
Автор: | degrees [ 17 дек 2013, 13:20 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
Моя функция должна брать значение из запроса, в данном случае дата, и возвращать номер недели по календарю. И это вообще что за язык такой? bgbs? Есть хоть какой то мануал по нему? |
Автор: | skyb [ 17 дек 2013, 13:25 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
это простая ява, там тоже самое почти |
Автор: | degrees [ 17 дек 2013, 18:59 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
skyb писал(а): это простая ява, там тоже самое почти Я и так то кое как написал эту библиотеку, т.к. ранее с явой не сталкивался, помоги если не трудно написать этот скрипт. Что мне надо уже писал выше. Нужен живой пример перед глазами. Вот моя библиотека. Код: package com.mycompany; import net.sf.jasperreports.engine.JRDefaultScriptlet; import net.sf.jasperreports.engine.JRScriptletException; public class myscriptlet extends JRDefaultScriptlet { public String getWeekNumber(String mydate) { int D = Integer.valueOf(mydate.substring(1,2)); int M = Integer.valueOf(mydate.substring(4,5)); int Y = Integer.valueOf(mydate.substring(7,10)); int a = (14 - M) / 12; int y = Y + 4800 - a; int m = M + 12 * a - 3; int J = D + (153 * m + 2) / 5 + 365 * y + y / 4 - y / 100 + y / 400 - 32045; int d4 = (J + 31741 - (J % 7)) % 146097 % 365224 % 1461; int L = d4 / 1460; int d1 = ((d4 - L) % 365) + L; int WN = d1 / 7 + 1; String str = String.valueOf(WN); return str; } } Вот по этой инструкции делал http://www.opus-college.net/devcorner/i ... uide-3.pdf страница 239 По инструкции не получилось. |
Автор: | skyb [ 17 дек 2013, 19:06 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
7502291 аська, завтра пиши у мну часовой пояс +10 |
Автор: | skyb [ 17 дек 2013, 19:08 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
Помощь по администрированию bgbilling в jabber конференции подпись, там тоже помогут |
Автор: | skyb [ 18 дек 2013, 04:36 ] |
Заголовок сообщения: | Re: Помогите с iReport 1.3.2 |
degrees писал(а): skyb писал(а): это простая ява, там тоже самое почти Вот по этой инструкции делал http://www.opus-college.net/devcorner/i ... uide-3.pdf страница 239 По инструкции не получилось. лучше по этой http://bgbilling.ru/v6.0/doc/ch27s11s02.html =) |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |