Mesclar linha de um subreport no ireport

Pessoal, já dei uma olhada em varios tutoriais, mas não entendi uma forma de como agrupar varias linhas por uma coluna (mesclar), igual na imagem abaixo:

Pensei que com crosstabs escolhendo row groups o estado, ele ficaria dessa forma, mas só achei colocando um header separando elas.

Alguém pode dar uma ideia?

Tenho a versão 4.5 e a 3.7

editado: pesquisando aqui vi que o que preciso é mesclar as linhas.

Pelo que testei ficará melhor com subreport mesmo, mas ainda não achei como poderia mesclar ou unificar aquelas linhas de um jeito que elas fiquem no mesmo nivel. Alguem pode dar uma dica?

editado:

No momento está assim:

Trecho do relatorio principal que chama o subreport:

<detail>
		<band height="200" splitType="Stretch">
			<subreport>
				<reportElement x="14" y="12" width="522" height="131"/>
				<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
				<subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "report_cros_subreport1.jasper"]]></subreportExpression>
			</subreport>
		</band>
	</detail>

Subreport:

<queryString language="SQL"> <![CDATA[select * from users order by state;]]> </queryString> <field name="id" class="java.lang.String"/> <field name="name" class="java.lang.String"/> <field name="age" class="java.lang.Integer"/> <field name="state" class="java.lang.String"/> <group name="estados"> <groupExpression><![CDATA[$F{state}]]></groupExpression> <groupHeader> <band height="33"> <textField> <reportElement x="18" y="13" width="100" height="20"/> <textElement/> <textFieldExpression><![CDATA[$F{state}]]></textFieldExpression> </textField> </band> </groupHeader> </group> <background> <band splitType="Stretch"/> </background> <title> <band height="50" splitType="Stretch"> <staticText> <reportElement x="122" y="27" width="100" height="20"/> <textElement> <font isBold="true"/> </textElement> <text><![CDATA[Nome]]></text> </staticText> <staticText> <reportElement x="299" y="27" width="100" height="20"/> <textElement> <font isBold="true"/> </textElement> <text><![CDATA[Idade]]></text> </staticText> <staticText> <reportElement x="18" y="27" width="100" height="20"/> <textElement> <font isBold="true"/> </textElement> <text><![CDATA[Estado]]></text> </staticText> </band> </title> <detail> <band height="45" splitType="Stretch"> <textField> <reportElement x="118" y="10" width="100" height="20"/> <textElement/> <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression> </textField> <textField> <reportElement x="299" y="13" width="100" height="20"/> <textElement/> <textFieldExpression><![CDATA[$F{age}]]></textFieldExpression> </textField> </band> </detail>

Fica separado mas com a linha de estado totalmente sozinha, e não com a coluna uma ao lado da outro, e apenas .

Tentei criar um report group por estado, sem incluir um header group (deixando em branco), mas ele apenas da um espaço, continua deixando a coluna de estado ocupando uma linha inteira.

Alguém?

Complicado!

Opa… cara… faz muito tempo que não mexo mais com iReport… e fico surpreso que ainda não tenha uma solução definitiva para isso…
Mas a solução que usei na época foi de quebrar o SQL em subrelatórios… não sei se ainda é a solução de hoje… mas deu certo…

http://www.guj.com.br/java/97199-mesclar-celulas-com-ireport-resolvido

Se não conseguir… avisa que baixo o iReport e relembro… hehe

As opções que podem ajudar são:

Print repeated values: sim ou não. Serve para não printar um valor repetido na linha anterior naquelas mesma coluna. No caso voce marca ou não essa opção no text field que representa a coluna que voce quer unificar.

Print when expression: você pode colocar aqui uma expressão lógica para printar ou não um valor. Pode usar tambem em conjunto as variaveis criadas pelo report group.

Report group: Não é um atributo, é um grupo que voce pode adicionar no relatorio (ou mais de um). É só clicar com direito em cima da raiz do relatório no iReport, e selecionar “add report group”. Ele pede para associar um field ao grupo.

Quando voce cria esse grupo, ele cria automaticamente uma variável [nome-do-grupo]_COUNT

Esse grupo pode adicionar 2 bandas extras, header e footer group. Essas bandas são impressas logo acima ou abaixo do detail, e funcionam da mesma forma, repetem varias vezes como se estivesse dentro do detail.

Nessas bandas voce pode adicionar o atributo printWhenGroupChanges=“nome_do_grupo”, que vai controlar para imprimir o que tiver dentro do groupHeader ou footer, a cada vez que o campo vinculado ao grupo (aquele que voce escolheu na hora de criação do grupo) mudar.
Tambem pode usar dentro dele:

[code]

[/code]

O “efeito” mesclar mesmo, voce consegue deixando apenas bordas verticais no campo que quer mesclar. Depois só crie uma linha em algum lugar (pode ser dentro do groupFooter) e crie uma expressão dizendo quando ela deve ser impressa

Aqui tem um codigo de exemplo:

Aqui tem um tutorial completo do iReport

http://community.jaspersoft.com/documentation/ireport-ultimate-guide