Програма AgentRpt - засіб формування звітів, використовуючи дані баз MySQL сервера. Основні функції програми:
Програма AgnReport здійснює запити до MySQL сервера і відображає отримані дані згідно шаблонів з налаштувань користувача. Шаблоном може бути TXT-файл, в якому спеціальними ключовими послідовностями визначено розміщення окремих елементів SQL-відповіді, RTF-файл, чи XSL-файл, в якому описано схему перетворення результатів виконання SQL-запиту. Загальний вигляд вікна програми:
Основні елементи головного вікна:
Керування здійснюється за допомогою таких елементів:
Натискання кнопки “Налаштування” викликає діалог налаштувань звіту. Загальний вигляд цього діалогу такий:
Основні елементи цього діалогу:
Після введення глобальних налаштувань необхідно ввести SQL-запит для вибірки необхідних даних з бази. Вікно налаштувань SQL-запитів виглядає так:
Його основними елементами є:
Результати виконання основного запиту можуть бути представлені в одному з трьох виглядів (TXT, RTF, XML→XSL). Кожен з шаблонів має налаштування. Діалог налаштування шаблону виглядає так:
Елементи цього вікна такі:
Звіт TXT-формату друкується шрифтом з фіксованою шириною. Сам шаблон теж є текстовим файлом, в якому можуть бути присутні керуючі послідовності. Вони дозволяють в потрібних місцях розміщувати окремі елементи результатів виконання SQL-запитів. Є такі керуючі послідовності:
Наприклад для SQL запиту SELECT 1,2,3, ^^1$1^ дорівнюватиме 1, ^^1$2^ дорівнюватиме 2, а ^^1$3^ дорівнюватиме 3.
Для запиту SELECT username, userclass FROM subscribers виведення переліку абонентів в шаблоні виглядатиме так:
^^[1^ абонент:^^1$1^ клас:^^1$2^ ^^]1^
Керуючі послідовності RTF-шаблону повністю відповідають послідовностям TXT-шаблону. Відмінність полягає в тому, що RTF формат має більші можливості форматування тексту.
XML файл результатів виконання запиту має таку структуру:
<?xml version='1.0' encoding='UTF-8'?> <?xml-stylesheet type='text/xsl' href='ШАБЛОН.xsl'?> <resultset> <select name ='№ЗАПИТУ'> <row> <field name='НАЗВА ПОЛЯ 1'>ДАНІ ПОЛЯ 1</field> <field name='НАЗВА ПОЛЯ 2'>ДАНІ ПОЛЯ 2</field> </row> </select> <select name ='№ЗАПИТУ'> <row> <field name='НАЗВА ПОЛЯ 1'>ДАНІ ПОЛЯ 1</field> <field name='НАЗВА ПОЛЯ 2'>ДАНІ ПОЛЯ 2</field> </row> <row> <field name='НАЗВА ПОЛЯ 1'>ДАНІ ПОЛЯ 1</field> <field name='НАЗВА ПОЛЯ 2'>ДАНІ ПОЛЯ 2</field> </row> </select> </resultset> Приклад готового XML-файлу: <code xml> <?xml version='1.0' encoding='UTF-8'?> <?xml-stylesheet type='text/xsl' href='month.xsl'?> <resultset> <select name ='1'> <row> <field name='Date'>2008.03</field> <field name='Subscriber'>380324762746</field> </row> </select> <select name ='2'> <row> <field name='Дата'>2007-04-25</field> <field name='Напрямок'>КИЇВСТАР</field> <field name='Тривалість'>00:00:39</field> <field name='Сума, грн'>0.78</field> </row> <row> <field name='Дата'>2007-04-25</field> <field name='Напрямок'>ЛЬВІВ</field> <field name='Тривалість'>00:01:00</field> <field name='Сума, грн'>0.24</field> </row> </select> <select name ='3'> <row> <field name='COUNT'>17</field> <field name='Rest'>13.58</field> <field name='SUM'>16.92</field> </row> </select> </resultset>
Шаблоном для відображення XML-файлу є файл XSL - файл трансформації в потрібний формат. Про використання XSL можна почитати тут чи тут
Ось приклад XSL-шаблону для відображення будь-яких даних в табличному вигляді.
<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:template match="/"> <html> <head> <link rel="stylesheet" type="text/css" href="Print.css" /> </head> <body> <xsl:for-each select="/resultset//select"> <xsl:call-template name="print_table"/> </xsl:for-each> </body> </html> </xsl:template> <xsl:template name="print_table"> <table border="1" cellpadding="6"> <xsl:for-each select="row"> <xsl:if test="position()=1"> <tr> <xsl:for-each select="field"> <th><xsl:value-of select="@name"/></th> </xsl:for-each> </tr> </xsl:if> <tr> <xsl:for-each select="field"> <td><xsl:value-of select="."/></td> </xsl:for-each> </tr> </xsl:for-each> </table> <br></br> </xsl:template> </xsl:stylesheet>