Ireports + sql server + nome de tabela usada na query mudando por parametro

Opa pessoal…Alguem sabe como faço para que o nome da tabela usada na query do IReports possa ser mudada por parametro?

meu codigo é o seguinte

Select * from (
SELECT tb.usr 
     , tb.dstname
     , COUNT(tb.dstname) count
     , ROW_NUMBER() OVER (ORDER BY COUNT(tb.dstname) DESC) AS 'RowNumber'
  FROM [rawsyslogdb_20081113].[dbo].[sw_0006B1308FF8] tb
WHERE tb.[USR]  =  $P{P_USU}
    AND tb.dstname not like '10.0%'  --Exclui os servidores
    AND tb.dstname not like '%mail%' --Exclui emails
    AND tb.dstname not IN ('74.52.208.234','69.64.46.2','74.52.150.42')--Desconhecido
    AND tb.msg is  null --Apenas sites acessados.. sem conexoes de informação.
    
 GROUP BY tb.usr 
        , tb.dstname) tab
where tab.RowNumber < 11

Tem como colocar um parametro no nome da tabela? pois a aplicacao cria uma tabela para cada dia…
Já possuo o select para pegar a data no formato do nome da tabela.

select '20' + CONVERT(VARCHAR(16),GETDATE(), 12) dat

Caso alguem tenha uma luz avisa ok?

[quote=thiagofacanha]Opa pessoal…Alguem sabe como faço para que o nome da tabela usada na query do IReports possa ser mudada por parametro?

meu codigo é o seguinte

Select * from (
SELECT tb.usr 
     , tb.dstname
     , COUNT(tb.dstname) count
     , ROW_NUMBER() OVER (ORDER BY COUNT(tb.dstname) DESC) AS 'RowNumber'
  FROM [rawsyslogdb_20081113].[dbo].[sw_0006B1308FF8] tb
WHERE tb.[USR]  =  $P{P_USU}
    AND tb.dstname not like '10.0%'  --Exclui os servidores
    AND tb.dstname not like '%mail%' --Exclui emails
    AND tb.dstname not IN ('74.52.208.234','69.64.46.2','74.52.150.42')--Desconhecido
    AND tb.msg is  null --Apenas sites acessados.. sem conexoes de informação.
    
 GROUP BY tb.usr 
        , tb.dstname) tab
where tab.RowNumber < 11

Tem como colocar um parametro no nome da tabela? pois a aplicacao cria uma tabela para cada dia…
Já possuo o select para pegar a data no formato do nome da tabela.

select '20' + CONVERT(VARCHAR(16),GETDATE(), 12) dat

Caso alguem tenha uma luz avisa ok?

[/quote]

pelo que eu entendi… vc pode fazzer isso

Select * from (
SELECT tb.usr 
     , tb.dstname
     , COUNT(tb.dstname) count
     , ROW_NUMBER() OVER (ORDER BY COUNT(tb.dstname) DESC) AS 'RowNumber'
  FROM $P{tabela} tb
WHERE tb.[USR]  =  $P{P_USU}
    AND tb.dstname not like '10.0%'  --Exclui os servidores
    AND tb.dstname not like '%mail%' --Exclui emails
    AND tb.dstname not IN ('74.52.208.234','69.64.46.2','74.52.150.42')--Desconhecido
    AND tb.msg is  null --Apenas sites acessados.. sem conexoes de informação.
    
 GROUP BY tb.usr 
        , tb.dstname) tab
where tab.RowNumber < 11

crie o parametro $P{tabela} em view | parameters e aliemnte-o na sua aplicação através de um map …

Map parametros = new HashMap();
mapa.put(tabela,"[rawsyslogdb_20081113].[dbo].[sw_0006B1308FF8]"); //por exemplo
JasperPrint jprint = JasperFillManager.fillReport(jreport, parametros , con);  

Eu tentei isso. Não deu certo.
Ele deu o erro

“Query parameter not found: P_TAB"
Sendo que eu criei o parametro… e quando estou na query ele fica dizendo"Unrecognized SQL escape ‘p’ at line position 55”

Esses erros aparecem quando tento simular no ireports mesmo…

brother… nesse seu caso acho que já é mais interessante fazer a consulta na aplicação e mandar para o relatório apenas os dados… assim:

String url = "jdbc:mysql://localhost/banco";
String user = "root";
String senha = "root";
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url,user,senha);	
ResultSet rs = stm.executeQuery( "select * from [rawsyslogdb_20081113].[dbo].[sw_0006B1308FF8]" );

/* Implementação da Interface JRDataSource para DataSource ResultSet */
JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
   
/* Executa o Relatório */
JasperPrint impressao = JasperFillManager.fillReport( relatorio , null, jrRS );

entao o relatorio nao terá a consulta… apenas receberá a resposta pela classe JRResultSetDataSource

O problema é que estou usando apenas o Ireports e o jasperServer.
Só se eu fizesse toda a consulta no jasperserver e passasse tudo que preciso por parametro pro ireports… :idea:
Mas nem sei se vai dar certo. Posso acabar tendo o mesmo problema lá… mas vou tentar aki

[quote=thiagofacanha]O problema é que estou usando apenas o Ireports e o jasperServer.
Só se eu fizesse toda a consulta no jasperserver e passasse tudo que preciso por parametro pro ireports… :idea:
Mas nem sei se vai dar certo. Posso acabar tendo o mesmo problema lá… mas vou tentar aki

[/quote]

me perdoe pela ignorancia… mas do que se trata o jasperServer? É alguma ferramenta de carga de dados da jaspersoft?

estou perguntando pq de qq forma vc precisa de alguma coisa pra rodar o seu .jasper… e até aonde eu conheço, vc vai precisar do jasperReports, logo concluo que o codigo que te mostrei no post anterior pode ser perfeitamente portável para a sua aplicacao.

O JasperServer é um servidor de relatórios da mesma empresa do ireports.
Eu mando para ele os jrxml e ele gera os relatorios envia por email em data programadas ou gera pelo usuario mediante entrada com usuario e senha…
Por isso que acho q o código não pode me ajudar. Pq não terei nenhuma pagina jsp entre meu jrxml e a criação do pdf.
estou pesquisando sobre Tabelas Variáveis do sql server para ver se acho uma luz… mas acho q tbm não vai dar…
:´(
Acha que mesmo com o jasper server dá para fazer algo?
Vlw

[quote=thiagofacanha]O JasperServer é um servidor de relatórios da mesma empresa do ireports.
Eu mando para ele os jrxml e ele gera os relatorios envia por email em data programadas ou gera pelo usuario mediante entrada com usuario e senha…
Por isso que acho q o código não pode me ajudar. Pq não terei nenhuma pagina jsp entre meu jrxml e a criação do pdf.
estou pesquisando sobre Tabelas Variáveis do sql server para ver se acho uma luz… mas acho q tbm não vai dar…
:´(
Acha que mesmo com o jasper server dá para fazer algo?
Vlw[/quote]

humm… interessante… eu sabia que a jasperSoft dispoem de vários produtos… mas só conheço o jasperReports e o iReport que são free claro… o jasperServer é novo pra mim… obrigado

bem… neste caso… a solucao de momento que eu estou pensando… é gambiarra… mas depois pensamos em outra… vc pode editar a query do seu jrxml… ou seja… cada vez que precisar de uma tabela nova, vc modifica o seu .jrxml no fonte… como ele nem é compilado ainda, é facil de fazer… basta colocar o conteudo do .jrxml em uma string e dar um replace dentro do conteudo de