Total Pageviews


Top Ten Idea Killers in Software Development

9. "This is how it was always done"

8. "There isn't enough time to do it right"

7. "This requires core architectural changes"

6. "Management has not prioritized it"

5. "There is already a lot on our plate"

4. "Our software is very complex; we have to be careful about making changes"

3. "No one is asking for it"

2. "We have to have consensus"

And the #1 idea killer in software development is
1. "It can't be done

Subversion Best Practices: Repository Structure


Grouping Data in Reports

Report groups are a flexible way to show grouped data based on one or more certain fields, or even on generic expression, that is, a group can be defined based on the specific column.

Here we will build a report to show the list of 違章案件派查明細表, 審理人員 will be grouped together, that is, the manger (suppose the report is for a manager) will know which violation case is reponsible by which 審理人員.

Follow the listed steps:
1. Go to File | New… | Report, select Simple Blue, and press Launch Report Wizard.
2. Set JavaBean as report's datasource:
3. Click Report Name | Right Click | Add Report Group, and New Group Wizard. Fill in Group Name | Choose field name | click Next, and Click Finish

4. You can see group header and group footer in your Report Inspector
5. Click group header | check "Start on a new page" and "Reset page number"

6. Report header and column header should all put into group header
7. JavaBean attriubtes will be dragged and dropped into detail band

8. Drag and drop group count variable to summary field

 9. Done.

How to start group data on a new page

I had some problems as I built a group by report
1. Each group data should start on a new page.
2. page number should be reset

1. Move report header from title band to group header band

2. Click group header

3. Check two checkboxs, including "Start on a new page" and "Reset page number"

Here has some group options:
Option Description
Name This is the name of the group. You can modify the name by just clicking on the button next to the name.
Start on a new page If this checkbox is checked, then the group starts on a new page.
Start on a new column If this checkbox is checked, then the group starts on a new column.
Reset page number When the group changes, the page number is reset if this option is checked.
Reprint header If you want to reprint the group header on each page, check this option.
Min Height to Start New Page If the value is greater than 0 (zero), it is considered as the minimum height required to keep the group on the current page.
Footer Position This option allows us to specify where to place the group footer. The available place options are Normal, Stack at bottom, Force at bottom, and Collate at bottom.
Keep Together This is a flag that prevents the group from splitting on two separate pages/columns.

It split to two pages as bellowing:


How to Prevent a SQL Injection Attack


1. Patch your SQL server regularly
2. Limit the use of dynamic queries
3. Escape user input
4. Store database credentials in a separate file
5. Use the principle of least privilege
6. Turn magic quotes off
7. Disable shells
8. Disable any other DB functionality you don’t need
9. Test your code


How to add record sequence number in JasperReports

I would like to add record sequence number in the first column.

How to do it?
1. Open iReport
2. Utilize the build-in variable, COLUMN_COUNT, drag and drop to specific location.




利用iReport打開jrxml file,點選特定的textfield

將Stretch With Overflow此選項打勾即可。



How to count the total number of records in JasperReports

We would like to show the total number of records at the end of report: 

How to do it
It's very easy and straightforward, just utilize the build-in variable (REPORT_COUNT), drag and drop the build-in variable into report. That's all.