Many thanks to Guilio for adding the dynamic field loading support in 1.3! Here's my tips on how to get the Fields to automatically populate based on a custom query/custom data source. The docs are more geared for programmatically calling custom data sources, I think, rather than using iReport, so this may be useful to people: I upgraded to iReport 1.3.0 (which has a FieldsProvider interface) and implemented a QueryExecutor, QueryExecutorFactory and FieldsProvider. The QueryExecutorFactory and FieldsProvider are registered with iReport under the Options > QueryExecutors menu option. The FieldsProvider has a method that takes a JRDataset as a parameter, and that has the Query (with queryText) in it. The query can be used to determine the fields. (I just manually instantiated an instance of my own custom JRDatasource using the query text and asked it for its fields, but your method of determining the field list from the query text may vary). Also I have a trivial JRField class that extends JRBaseField and adds a constructor that takes field name, description, class, etc. This is what is returned by my FieldsProvider. I also added a JRDatasourceProvider along the way, but I don't think that's critical to the solution. I then went to Data>Report query menu option, and manually typed in my query type (as named when I registerd the QueryExecutor) and clicked the "Read Fields" button on that screen. This seemed to set my fiels automatically from my (custom) query.