Почему подотчет получает только одну строку из JsonDataSource при использовании subDataSource()?
У меня есть чистый отчет Jasper, который вызывает подотчет без фильтра. В этом подотчете я показываю все данные Json (10 строк), и если я вижу предварительный просмотр, он работает: предварительный просмотр подотчета.
Проблема в том, когда я вызываю подотчет из основного (и чистого) отчета. В нем подробно указаны только имя профессионала и подотчет. Он должен показывать professionalName и все вложенные отчеты (все 10 строк каждый раз), но это не так. Он показывает только текущую строку, и я уверен, что это потому, что основной отчет не предоставляет весь источник данных для подотчета, а только эту строку. Вот захват: Предварительный просмотр основного отчета.
Выражение источника данных:
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource()]]></dataSourceExpression>
и файл Json это:
[ {
"appointmentId": 153,
"startDate": 1503061200000,
"patientId": 417,
"patientIdentification": {
"id": 1,
"name": "85471254B"
},
"episodeId": 500358,
"chn": "500058",
"patientName": "Aida Mascaró",
"centerName": "HOSPITAL CLINICA BENIDORM",
"serviceName": "NEUROLOGIA",
"benefitId": 45,
"benefitName": "CONSULTA",
"schedule": {
"id": 30,
"name": "Neurologia"
},
"professionalName": "a",
"insurance": {
"id": 1387,
"name": "PRIVADOS"
},
"collective": {
"id": 26,
"name": "Privados"
},
"typeId": 1,
"guarantorStatus": {
"id": 1,
"name": "Solicitada"
},
"reason": {
"id": 3,
"name": "Accidente de trabajo"
},
"appoState": {
"id": 3,
"name": "Atendiendo"
},
"appoType": {
"id": 1,
"name": "Simple"
},
"professionalCreationName": "Marisol Fernández Lleras",
"creationDate": 1503057809579
},
{
"appointmentId": 150,
"startDate": 1503039600000,
"patientId": 405,
"patientIdentification": {
"id": 1,
"name": "40295204D"
},
"episodeId": 500349,
"chn": "500046",
"patientName": "Cristina Mayo Saez",
"centerName": "HOSPITAL CLINICA BENIDORM",
"serviceName": "ENDOCRINOLOGIA",
"benefitId": 28,
"benefitName": "CONSULTA",
"schedule": {
"id": 26,
"name": "Nutrición"
},
"professionalName": "b",
"insurance": {
"id": 1387,
"name": "PRIVADOS"
},
"collective": {
"id": 26,
"name": "Privados"
},
"typeId": 1,
"guarantorStatus": {
"id": 1,
"name": "Solicitada"
},
"reason": {},
"appoState": {
"id": 3,
"name": "Atendiendo"
},
"appoType": {
"id": 1,
"name": "Simple"
},
"professionalCreationName": "Marisol Fernández Lleras",
"creationDate": 1503037036812
}, {
"appointmentId": 151,
"startDate": 1503039600000,
"patientId": 416,
"patientIdentification": {
"id": 1,
"name": "18466341D"
},
"episodeId": 500350,
"chn": "500057",
"patientName": "Gloria Sena Arrayán",
"centerName": "HOSPITAL CLINICA BENIDORM",
"serviceName": "NEUROLOGIA",
"benefitId": 45,
"benefitName": "CONSULTA",
"schedule": {
"id": 30,
"name": "Neurologia"
},
"professionalName": "b",
"insurance": {
"id": 1396,
"name": "AGRUPACION MUTUAL ASEGURADORA (AMA)"
},
"collective": {
"id": 30,
"name": "Trafico"
},
"typeId": 1,
"guarantorStatus": {
"id": 1,
"name": "Solicitada"
},
"reason": {},
"appoState": {
"id": 4,
"name": "Atendido"
},
"appoType": {
"id": 1,
"name": "Simple"
},
"professionalCreationName": "Marisol Fernández Lleras",
"creationDate": 1503038643436
}, {
"appointmentId": 154,
"startDate": 1503298800000,
"patientId": 389,
"patientIdentification": {
"id": 1,
"name": "23234567J"
},
"episodeId": 500359,
"chn": "500030",
"patientName": "maria perez perez",
"centerName": "HOSPITAL CLINICA BENIDORM",
"serviceName": "ENDOCRINOLOGIA",
"benefitId": 28,
"benefitName": "CONSULTA",
"schedule": {
"id": 26,
"name": "Nutrición"
},
"professionalName": "a",
"insurance": {
"id": 1387,
"name": "PRIVADOS"
},
"collective": {
"id": 26,
"name": "Privados"
},
"typeId": 1,
"guarantorStatus": {
"id": 1,
"name": "Solicitada"
},
"reason": {
"id": 2,
"name": "Accidente causal"
},
"appoState": {
"id": 3,
"name": "Atendiendo"
},
"appoType": {
"id": 1,
"name": "Simple"
},
"professionalCreationName": "Marisol Fernández Lleras",
"creationDate": 1503297627789
}, {
"appointmentId": 148,
"startDate": 1503300600000,
"patientId": 415,
"episodeId": 500346,
"chn": "500056",
"patientName": "Pastora Meseguer Carrión",
"centerName": "HOSPITAL CLINICA BENIDORM",
"serviceName": "NEUROLOGIA",
"benefitId": 45,
"benefitName": "CONSULTA",
"schedule": {
"id": 30,
"name": "Neurologia"
},
"professionalName": "a",
"insurance": {
"id": 1387,
"name": "PRIVADOS"
},
"collective": {
"id": 25,
"name": "Privados todos"
},
"typeId": 1,
"guarantorStatus": {
"id": 7,
"name": "No requerida"
},
"reason": {},
"appoState": {
"id": 4,
"name": "Atendido"
},
"appoType": {
"id": 1,
"name": "Simple"
},
"professionalCreationName": "Marisol Fernández Lleras",
"creationDate": 1502885871664
}, {
"appointmentId": 152,
"startDate": 1503302400000,
"patientId": 416,
"patientIdentification": {
"id": 1,
"name": "18466341D"
},
"episodeId": 500351,
"chn": "500057",
"patientName": "Gloria Sena Arrayán",
"centerName": "HOSPITAL CLINICA BENIDORM",
"serviceName": "NEUROLOGIA",
"benefitId": 46,
"benefitName": "REVISION",
"schedule": {
"id": 30,
"name": "Neurologia"
},
"professionalName": "a",
"insurance": {
"id": 1396,
"name": "AGRUPACION MUTUAL ASEGURADORA (AMA)"
},
"collective": {
"id": 30,
"name": "Trafico"
},
"typeId": 1,
"guarantorStatus": {
"id": 1,
"name": "Solicitada"
},
"reason": {},
"appoState": {
"id": 4,
"name": "Atendido"
},
"appoType": {
"id": 1,
"name": "Simple"
},
"professionalCreationName": "Marisol Fernández Lleras",
"creationDate": 1503038674027
},{
"appointmentId": 156,
"startDate": 1503302400000,
"patientId": 389,
"patientIdentification": {
"id": 1,
"name": "23234567J"
},
"episodeId": 500361,
"chn": "500030",
"patientName": "maria perez perez",
"centerName": "HOSPITAL CLINICA BENIDORM",
"serviceName": "PEDIATRIA",
"benefitId": 3,
"benefitName": "CONSULTA",
"schedule": {
"id": 29,
"name": "Dra. De la Vega"
},
"professionalName": "a",
"insurance": {
"id": 1387,
"name": "PRIVADOS"
},
"collective": {
"id": 26,
"name": "Privados"
},
"typeId": 1,
"observations": "obs",
"guarantorStatus": {
"id": 1,
"name": "Solicitada"
},
"reason": {
"id": 2,
"name": "Accidente causal"
},
"appoState": {
"id": 3,
"name": "Atendiendo"
},
"appoType": {
"id": 1,
"name": "Simple"
},
"professionalCreationName": "Marisol Fernández Lleras",
"creationDate": 1503300374408
},{
"appointmentId": 142,
"startDate": 1503298800000,
"patientId": 412,
"episodeId": 500337,
"chn": "500053",
"patientName": "Mariano López Pastor",
"centerName": "HOSPITAL CLINICA BENIDORM",
"serviceName": "NEUROLOGIA",
"benefitId": 45,
"benefitName": "CONSULTA",
"schedule": {
"id": 30,
"name": "Neurologia"
},
"professionalName": "b",
"insurance": {
"id": 1387,
"name": "PRIVADOS"
},
"collective": {
"id": 25,
"name": "Privados todos"
},
"typeId": 1,
"guarantorStatus": {
"id": 7,
"name": "No requerida"
},
"reason": {},
"appoState": {
"id": 4,
"name": "Atendido"
},
"appoType": {
"id": 1,
"name": "Simple"
},
"professionalCreationName": "Marisol Fernández Lleras",
"creationDate": 1502877885393
}, {
"appointmentId": 158,
"startDate": 1503303300000,
"patientId": 408,
"patientIdentification": {
"id": 2,
"name": "123123"
},
"episodeId": 500363,
"chn": "500049",
"patientName": "ANA CARO MARTINEZ",
"centerName": "HOSPITAL CLINICA BENIDORM",
"serviceName": "PEDIATRIA",
"benefitId": 3,
"benefitName": "CONSULTA",
"schedule": {
"id": 29,
"name": "Dra. De la Vega"
},
"professionalName": "b",
"insurance": {
"id": 1749,
"name": "ADMIRAL INSURANCE"
},
"collective": {
"id": 13,
"name": "Trafico"
},
"typeId": 1,
"observations": "dewdfe",
"guarantorStatus": {
"id": 1,
"name": "Solicitada"
},
"reason": {
"id": 2,
"name": "Accidente causal"
},
"appoState": {
"id": 3,
"name": "Atendiendo"
},
"appoType": {
"id": 1,
"name": "Simple"
},
"professionalCreationName": "Marisol Fernández Lleras",
"creationDate": 1503301904789
}, {
"appointmentId": 159,
"startDate": 1503304200000,
"patientId": 48,
"patientIdentification": {
"id": 5,
"name": "1425871"
},
"episodeId": 500364,
"chn": "186",
"patientName": "cayetana jimenez brotons",
"centerName": "HOSPITAL CLINICA BENIDORM",
"serviceName": "PEDIATRIA",
"benefitId": 4,
"benefitName": "REVISION",
"schedule": {
"id": 29,
"name": "Dra. De la Vega"
},
"professionalName": "b",
"insurance": {
"id": 1390,
"name": "MAPFRE ESPAÑA, CIA. DE SEGUROS Y REASEGUROS S.A."
},
"collective": {
"id": 4,
"name": "MAPFRE SALUD"
},
"typeId": 1,
"observations": "dfd",
"guarantorStatus": {
"id": 7,
"name": "No requerida"
},
"reason": {
"id": 2,
"name": "Accidente causal"
},
"appoState": {
"id": 3,
"name": "Atendiendo"
},
"appoType": {
"id": 1,
"name": "Simple"
},
"professionalCreationName": "Marisol Fernández Lleras",
"creationDate": 1503301999486
}
]
Что я могу сделать, чтобы передать весь DataSet для каждой строки, которую я показываю? Спасибо
1 ответ
subDataSource
Метод использует текущий узел при создании нового JsonDataSource
пример. В будущей версии JasperReports эта проблема будет решена, но до тех пор вам необходимо:
- Удалить
Data Source Expression
из вашего подотчета. Сам подотчет будет использовать адаптер данных JSON. - Экспортируйте свой адаптер данных JSON в файл. См. Шаг № 2 здесь, если вы еще не сделали этого в Jaspersoft Studio.
- В вашем подотчете установите отчет
Default Data Adapter
свойство, указывающее на сохраненный адаптер из предыдущего шага. Смотрите шаг № 4 отсюда. - Перекомпилируйте свой подотчет, если вы заметили, что проект автоматически создается.