У меня есть типичный отчет MySQL, перечисляющий один «элемент» на страницу.Одним из полей является min_price.Я хотел бы, чтобы моя полоса подробных данных содержала фиксированное число (скажем, 15) «сумм ставок» для каждого товара, рассчитанное на основе этой начальной цены, плюс «скользящая шкала», передаваемая в качестве параметра отчета, следующим образом:
<parameter name="bidIncrementMap" class="java.util.TreeMap">
<defaultValueExpression><![CDATA[{10,1},{25,2},{50,5},{100,10},{250,20},{500,25},{9999,50}"]]></defaultValueExpression>
</parameter>
Для отдельной цели у меня уже есть таблица с названием алфавит с 26 строками id = 1..26, letter = A..Z - это удобная таблица для получения простого списка из 15 целых чисел.
Таким образом, чтобы получить значение приращения ставки, соответствующее данному номеру, я думаю, что это будет:
$P{bidIncrementMap}.floorEntry($F{each_bid}).getValue()
... но я пытаюсь использовать приращение ставки для каждогострока, чтобы получить значение следующей строки.
Кроме того, я должен упомянуть по соображениям упаковки, мне нужно, чтобы это был автономный файл .jrxml, который компилируется в .jasper без каких-либо новых пользовательских классов на пути к классам.
Я чувствую, что я очень близко ... может кто-нибудь помочь мне с отсутствующим куском здесь?(К вашему сведению, я эксперт по Java и SQL, но я новичок в Jasper, мне нравится то, что я вижу до сих пор ...) Я думаю, мне нужно как-то объявить переменную и использовать эту карту, чтобы каждый раз увеличивать ее, а затем каким-то образом получить списоккомпонент для отображения моей последовательности - я бы предпочел иметь все это в одном отчете, так как я не вижу повторного использования такого подотчета, но пример того или иного способа был бы потрясающим.
Я немного обошелся с SQLвыражение с использованием переменной @ и сложного оператора if - это НЕ тема моего вопроса, но я включил его, чтобы проиллюстрировать то, чего я пытаюсь достичь здесь:
mysql> select a.id, i.name, i.min_price, @b:=if(a.id=1,i.min_price,@b+if(@b<10,1,if(@b<25,2,if(@b<50,5,if(@b<100,10,if(@b<250,20,if
@b<500,25,50))))))) bid from items i, alphabet a where a.id<=15 and i.id=27 order by a.id;
+----+---------------+-----------+--------+
| id | name | min_price | bid |
+----+---------------+-----------+--------+
| 1 | My Item Name | 40.00 | 40.00 |
| 2 | My Item Name | 40.00 | 45.00 |
| 3 | My Item Name | 40.00 | 50.00 |
| 4 | My Item Name | 40.00 | 60.00 |
| 5 | My Item Name | 40.00 | 70.00 |
| 6 | My Item Name | 40.00 | 80.00 |
| 7 | My Item Name | 40.00 | 90.00 |
| 8 | My Item Name | 40.00 | 100.00 |
| 9 | My Item Name | 40.00 | 120.00 |
| 10 | My Item Name | 40.00 | 140.00 |
| 11 | My Item Name | 40.00 | 160.00 |
| 12 | My Item Name | 40.00 | 180.00 |
| 13 | My Item Name | 40.00 | 200.00 |
| 14 | My Item Name | 40.00 | 220.00 |
| 15 | My Item Name | 40.00 | 240.00 |
+----+---------------+-----------+--------+
15 rows in set (0.00 sec)