Base de Dados por Parâmetro JasperReport

Bom dia. Por acaso alguém saberia dizer se há possibilidade de passar a base de dados como parâmetro para o relatório JasperReport?
A questão é, por exemplo: a empresa tem vários clientes, e para não ter que implantar cada relatório em uma base de dados diferente, pegaria e implantaria passando a base de dados (banco de dados) como parâmetro.
Pesquisei e vi que há algo semelhante a fazer quando de cria um subrelatório. Mas no meu caso, gostaria tipo, de passar para cliente A, bancoClienteA e cliente B o bancoClienteB por parâmetro. Desta forma, não precisaria criar relatórios iguais para bases diferentes.
Se alguém puder ajudar, agradeceria muito.

Inicie com uma idéia neste fórum:
https://groups.google.com/forum/#!topic/jasperreports-ireport-brasil/K5jlZHApREw
Porém, o cara mencionou que não tem acesso a como eles fazem na empresa nesta parte que eu precisaria sobre o relatório.

Esses relatórios são chamados por uma aplicação web, certo? E o SQL da consulta fica no próprio relatorio também, certo?

Bom, quando você vai gerar o JasperPrint do relatório, você passar o objeto Connection que você criou pra conexão especifica que você quer:

JasperPrint jp = JasperFillManager.fillReport(#PATH_JASPER#,#PARAMETERS#,#CONNECTION#);
1 curtida

Certo. Estamos desenvolvendo em c#.

Fizemos da seguinte maneira @Oni_Humura, estamos desenvolvendo ele em c#:

public FileJasperReport GenerateReport(EnumFormatoArquivo format, Dictionary<string, string> parameters, string report) {
	var config = _relatorioApp.GetObject(x => x.Padrao);
	var file = new FileJasperReport();
	var jasperserverRestClient = new JasperserverRestClient(config.UsuarioRelatorio, config.SenhaRelatorio, config.UrlServidor);
	
	file.MimeType = MimeTypes.PDF;
	file.NomeArquivo = ".pdf";
	
	switch (format) {
		case EnumFormatoArquivo.CSV:
			file.MimeType = MimeTypes.CSV;
			file.NomeArquivo = ".csv";
			break;
		
		case EnumFormatoArquivo.DOCX:
			file.MimeType = MimeTypes.DOCX;
			file.NomeArquivo = ".docx";
			break;
		
		case EnumFormatoArquivo.HTML:
			file.MimeType = MimeTypes.HTML;
			file.NomeArquivo = ".html";
			break;
		
		case EnumFormatoArquivo.ODS:
			file.MimeType = MimeTypes.ODS;
			file.NomeArquivo = ".ods";
			break;
		
		case EnumFormatoArquivo.ODT:
			file.MimeType = MimeTypes.ODT;
			file.NomeArquivo = ".odt";
			break;
		
		case EnumFormatoArquivo.PDF:
			file.MimeType = MimeTypes.PDF;
			file.NomeArquivo = ".pdf";
			break;
		
		case EnumFormatoArquivo.RTF:
			file.MimeType = MimeTypes.RTF;
			file.NomeArquivo = ".rtf";
			break;
		
		case EnumFormatoArquivo.TXT:
			file.MimeType = MimeTypes.TXT;
			file.NomeArquivo = ".txt";
			break;
		
		case EnumFormatoArquivo.XLS:
			file.MimeType = MimeTypes.XLS;
			file.NomeArquivo = ".xls";
			break;
		
		case EnumFormatoArquivo.XLSX:
			file.MimeType = MimeTypes.XLSX;
			file.NomeArquivo = ".xlsx";
			break;
	}
	
	file.NomeArquivo = report + file.NomeArquivo;
	file.ConteudoArquivo = ConvertStream(jasperserverRestClient.Get(config.PathRelatorio + file.NomeArquivo,parameters));
	return file;
}

e em nosso Controller:

[HttpPost]
public async Task<ActionResult> Report(EnumFormatoArquivo tipo) {
	var jasper = new JasperReport(_relatorioApp);
	
	//parametros
	var parameters = new Dictionary<string, string>();
	//parameters.Add("REPORT_DATA_SOURCE", "jdbc:sqlserver://192.168.1.14/SQL;databasename=ControleDB");
	parameters.Add("ParametroTeste", "teste 123456");
	parameters.Add("DescricaoLaudoP", "LAUDO"); // SELECT * FROM "Laudo" WHERE "Laudo"."DescrLaudo" LIKE $P{ DescricaoLaudoP}
	var file = jasper.GenerateReport(tipo, parameters, "Laudos");
	return File(file.ConteudoArquivo, file.MimeType, file.NomeArquivo);
}

Conseguiu entender? Se precisar de mais alguma informação, estou á disposição. Muito obrigado pela ajuda.

Com c# deve ter uma forma de enviar a conexão, assim como fazemos no Java. Dessa forma você conseguirá utilizar o mesmo relatório para várias bases de dados (claro, desde que o modelo de dados seja o mesmo).

Sim @Lucas_Camara, acredito que sim. Isso que estou tentando descobrir… Postei o código de como estamos fazendo. Claro, estamos utilizando também o jasper Server para configuração.