Relatorio web com erro [RESOLVIDO]

Ola pessoal!
Gostaria de uma ajuda de vcs. È o seguinte: Tenho uma pagina jsp que o usuario escolhe alguns parametros e pede para gerar um relatorio. Eu montei o relatorio no iReport, compilei, e testei no iReport passando alguns parametros na mao, que no caso funcionou. Eu peguei o .jasper gerado e coloquei no meu projeto. Quando rodo a pagina jsp, esta dando um erro na query sql que prepara alguns parametros para o .jasper, e logo apos o erro sou direcionado para uma pagina contendo o codigo do meu servlet. Estou meio que perdido, pois nunca mexi com relatorios e nem servlets. Por favor, peço que me ajudem, pois ja recorri a tutoriais, e exemplos, mas mesmo assim nao consegui resolver. Abaixo estão os meus codigos.

Primeira Pagina (report_filters.jsp)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="true"	pageEncoding="ISO-8859-1"%>
<%@page import="mcopy.lider.conection.*"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
<%@page import="java.text.*"%>
<%@include file="../index_topo.jsp"%>
<script type="text/javascript" src="../JS/POPUP/jquery-latest.pack.js"></script>
<script type="text/javascript" src="../JS/POPUP/jquery-dom.js"></script>
<script type="text/javascript" src="../JS/POPUP/tipos.js"></script>
<script type="text/javascript" src="../JS/POPUP/popup.js"></script>
<script type="text/javascript">
<!--
function mascaraData(objeto, evt){
	
	if(objeto.value.length == 10){
		return false;
	}
	var charCode = (evt.which) ? evt.which : event.keyCode;		
	if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
	if (objeto.value.indexOf("/") == -1 && objeto.value.length > 5){ objeto.value = ""; }
	if ((objeto.value.length == 2 || objeto.value.length == 5)&& charCode != 8){
		objeto.value +="/";
	}
	return true;
}

//-->
</script>
<center style="position: relative">
<table width="700" align="center" cellpadding="1" cellspacing="1">
	<tr style="background-color: #363636;">
		<td height="30" width="100%" colspan="3" align="center" class="texto_normal">FILTRO GERAL DE RELATORIOS</td>
	<tr style="background-color: #1C1C1C;" class="texto_normal_small" align="center">
		<td height="10" width="200"><a href="#" onclick="popup.show();">RELATORIO POR USUARIO</a></td>
		<td height="10" width="300"><a href="report_">RELATORIO POR	CENTRO DE CUSTO</a></td>
		<td height="10" width="200"><a href="report_">RELATORIO MISTO</a></td>
</table>
<div id="popup">
<div class="conteudo">
<table width="700" align="center" cellpadding="1" cellspacing="1">
	<tr>
	<form id="form1" name="form1" method="post" action="report_usuarios.jsp">
		<tr style="background-color: #363636;">
			<td height="30" width="100%" align="left" class="texto_normal">Filtro de Usuarios</td>
		</tr>
		<tr class="texto_normal_small" align="center">
			<td height="10" width="400" align="left">Selecione: 
			<select name="user">
				<option value="" selected="selected">Usuario</option>
				<%
					String sql = "SELECT * FROM USERS ORDER BY LOGIN ";
					ConexaoBD conn = null;
					PreparedStatement ps = null;
					ResultSet rs = null;
					String username = "";
					int matricula = 0;
					conn = new ConexaoBD(ConfiguracoeBDDAO.LOGIN,ConfiguracoeBDDAO.SENHA, ConfiguracoeBDDAO.DRIVER,	ConfiguracoeBDDAO.URL);
					conn.conectar();
					ps = conn.getStatement(sql);
					rs = ps.executeQuery();
					while (rs.next()) {
						matricula = rs.getInt("MATRICULA");
						username = rs.getString("LOGIN");
				%>
				<option value="<%=username%>"><%=username%></option>
				<%
					}
				%>
		</select>
		</td>
		<tr class="texto_normal_small" >
			<td colspan="5">Período:  
             	<input type=text name="datainicio" id="datainicio" size="12"  align="left" onkeypress="return mascaraData(this, event);">
		 		&nbsp; a &nbsp;
				<input type="Text" name="datafinal" id="datafinal" size="12"  align="left" onkeypress="return mascaraData(this, event);" > 
		</td>
		</tr>
		<tr>
			<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				<input type="submit" value="Gerar Relatorio" class="button">
			</td>
		</tr>
	</form>
	</tr>
</table>
</div>
</div>
<script type="text/javascript">
	//<![CDATA[
		var popup = new Popup("popup",300,300);
		popup.setTitle("Relatorio por Usuarios");
		popup.init();
	//]]>
	</script>
</center>

<%@include file="../index_fundo.jsp"%>

Segunda Pagina (report_usuarios.jsp)

<%@ page import="net.sf.jasperreports.view.*"%>
<%@ page import="net.sf.jasperreports.engine.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="java.sql.*,java.net.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="java.lang.String"%>
<%@ page import="java.sql.*"%>
<%@ page import="mcopy.lider.conection.ConexaoReport"%>
<%@ page session="true"%>
<%@ page import="java.text.DateFormat,java.text.SimpleDateFormat,java.util.Date"%>
<%@ page import="mcopy.lider.conection.*"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%
	String username = request.getParameter("user");
	String data1 = request.getParameter("datainicio").toString();
	String data2 = request.getParameter("datafinal").toString();


	ConexaoBD conn2 = null;
	PreparedStatement ps2 = null;
	ResultSet rs2 = null;
	conn2 = new ConexaoBD(ConfiguracoeBDDAO.LOGIN,ConfiguracoeBDDAO.SENHA, ConfiguracoeBDDAO.DRIVER,ConfiguracoeBDDAO.URL);
	conn2.conectar();
	ps2 = conn2.getStatement("SELECT * FROM USERS WHERE LOGIN = ?");
	ps2.setString(1, username);
	System.out.println("Usuario "+username+"\n");
	rs2 = ps2.executeQuery();
	String cc = "";
	if(rs2.next()){
		cc = rs2.getString("CC"); //Pega o codigo de centro de custo do usuario selecionado.
	}
	System.out.println("Centro custo "+cc+"\n");

	String[] cc_split = cc.split("");//Splita o codigo do centro de custo
	System.out.println("CC split "+cc_split[1]+"\n");
	String centro_custo_aplit = (cc_split[1]); // Pega o primeiro caracter do codigo, que representa o nome do centro de custo
	String cc_para_consulta = centro_custo_aplit + "00"; // Concatena o codigo centro de custo com 00 para fazer a consulta na tabela "Centro_Custo" e retornar o nome do centro de custo

	ConexaoBD conn3 = null;
	PreparedStatement ps3 = null;
	ResultSet rs3 = null;
	conn3 = new ConexaoBD(ConfiguracoeBDDAO.LOGIN,ConfiguracoeBDDAO.SENHA, ConfiguracoeBDDAO.DRIVER, ConfiguracoeBDDAO.URL);
	conn3.conectar();
	ps3 = conn3.getStatement("SELECT * FROM CENTRO_CUSTO WHERE CC = ?");
	ps3.setString(1, cc_para_consulta);
	rs3 = ps3.executeQuery();
	String cc_completo = "";
	rs3.next();
	cc_completo = rs3.getString("DESCRICAO"); //Pega o nome do centro de custo na tabela Centro_Custo
	System.out.println(" Centro de custo completo "+cc_completo+"\n");
	
		
	ConexaoBD conn4 = null;
	PreparedStatement ps4 = null;
	ResultSet rs4 = null;
	int cont=0;
	int cont_pag = 0;
	int total_pag = 0;
	float cont_valor =0;
	float total_valor =0;
	int total_jobs = 0;
	conn4 = new ConexaoBD(ConfiguracoeBDDAO.LOGIN,ConfiguracoeBDDAO.SENHA, ConfiguracoeBDDAO.DRIVER, ConfiguracoeBDDAO.URL);
	conn4.conectar();
	String sql_totais= "SELECT SUM(BHZ.PAGES) AS TOTAL_PAG, SUM(BHZ.DOCCOST) AS VALOR_TOTAL, COUNT(*) AS TOTAL_JOBS, BHZ.UNIDADE FROM BASE_BHZ BHZ WHERE BHZ.USERNAME = '"+username+"' AND BHZ.SUBMITDATE between '"+data1+"' and '"+data2+"' GROUP BY BHZ.SERVERNAME, BHZ.UNIDADE ";
  	sql_totais+= " UNION (SELECT SUM(BSB.PAGES), SUM(BSB.DOCCOST), COUNT(*), BSB.UNIDADE  FROM BASE_BSB BSB WHERE BSB.USERNAME = '"+username+"' and BSB.SUBMITDATE between '"+data1+"' and '"+data2+"' GROUP BY BSB.SERVERNAME, BSB.UNIDADE) ";
	sql_totais+= " UNION (SELECT SUM(JAC.PAGES), SUM(JAC.DOCCOST), COUNT(*), JAC.UNIDADE  FROM BASE_JAC JAC WHERE JAC.USERNAME = '"+username+"' and JAC.SUBMITDATE between '"+data1+"' and '"+data2+"' GROUP BY JAC.SERVERNAME, JAC.UNIDADE) ";
	sql_totais+= " UNION (SELECT SUM(MEA.PAGES), SUM(MEA.DOCCOST), COUNT(*), MEA.UNIDADE  FROM BASE_MEA MEA WHERE MEA.USERNAME = '"+username+"' and MEA.SUBMITDATE between '"+data1+"' and '"+data2+"' GROUP BY MEA.SERVERNAME, MEA.UNIDADE) ";
	sql_totais+= " UNION (SELECT SUM(NVT.PAGES), SUM(NVT.DOCCOST), COUNT(*), NVT.UNIDADE  FROM BASE_NVT NVT WHERE NVT.USERNAME = '"+username+"' and NVT.SUBMITDATE between '"+data1+"' and '"+data2+"' GROUP BY NVT.SERVERNAME, NVT.UNIDADE) ";
	sql_totais+= " UNION (SELECT SUM(RIO.PAGES), SUM(RIO.DOCCOST), COUNT(*), RIO.UNIDADE  FROM BASE_RIO RIO WHERE RIO.USERNAME = '"+username+"' and RIO.SUBMITDATE between '"+data1+"' and '"+data2+"' GROUP BY RIO.SERVERNAME, RIO.UNIDADE) ";
    sql_totais+= " UNION (SELECT SUM(SAO.PAGES), SUM(SAO.DOCCOST), COUNT(*), SAO.UNIDADE  FROM BASE_SAO SAO WHERE SAO.USERNAME = '"+username+"' and SAO.SUBMITDATE between '"+data1+"' and '"+data2+"' GROUP BY SAO.SERVERNAME, SAO.UNIDADE) ";
	sql_totais+= " UNION (SELECT SUM(TME.PAGES), SUM(TME.DOCCOST), COUNT(*), TME.UNIDADE  FROM BASE_TME TME WHERE TME.USERNAME = '"+username+"' and TME.SUBMITDATE between '"+data1+"' and '"+data2+"' GROUP BY TME.SERVERNAME, TME.UNIDADE) ";
	sql_totais+= " UNION (SELECT SUM(VIX.PAGES), SUM(VIX.DOCCOST), COUNT(*), VIX.UNIDADE  FROM BASE_VIX VIX WHERE VIX.USERNAME = '"+username+"' and VIX.SUBMITDATE between '"+data1+"' and '"+data2+"' GROUP BY VIX.SERVERNAME, VIX.UNIDADE) ";
	try{
		ps4 = conn4.getStatement(sql_totais);
		try{
			rs4 = ps4.executeQuery(); ///[color=red] Fiz um debug, e quando entro nesse ponto o programa da um erro(codigo_erro abaixo), ja testei a query no SQL SERVER e ela me retorna exatamente o que eu quero[/color]
			while (rs4.next()){
				cont_pag = rs4.getInt("TOTAL_PAG");
				total_pag = total_pag + cont_pag;
				cont_valor = rs4.getFloat("VALOR_TOTAL");
				total_valor = total_valor + cont_valor;
				total_jobs = rs4.getInt("TOTAL_JOBS");
			}
		}catch(Exception ex){
			ex.printStackTrace();
			System.out.println("Erro ao ..."+ex);
		}
		
	}catch(SQLException e){
		e.printStackTrace();
		System.out.println("Erro sql_totais>>"+e);
	}
	
	NumberFormat nf = new DecimalFormat("###,##0.00");  
	String valor_format = nf.format(total_valor);  
	
	String centro_custo = cc_completo;

	session.setAttribute("USERNAME", username);
	session.setAttribute("DATA1", data1);
	session.setAttribute("DATA2", data2);
	session.setAttribute("CC", centro_custo);
	//session.setAttribute("QUERY", sql_report);
	session.setAttribute("TOTAL_PAG", total_pag);
	session.setAttribute("TOTAL_VALOR", valor_format);
	session.setAttribute("TOTAL_JOBS", total_jobs);
	response.sendRedirect("ServletRelatorio.java"); [color=red] // Redireciona para meu Sevlet o qual processa os dados e gera o relatorio[/color]
	
%>

Servlet (ServletRelatorio.java)

package mcopy.lider.servlet;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.util.JRLoader;
import mcopy.lider.conection.*;

/**
 * Servlet implementation class for Servlet: ServletRelatorio
 *
 */
 public class ServletRelatorio extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
   
    /* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public ServletRelatorio() {
		super();
	}   	
	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		executaAcao(request, response);
	}  	
	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		executaAcao(request, response);
	}   
	
	@SuppressWarnings({ "unchecked", "deprecation" })
	public void executaAcao(HttpServletRequest request, HttpServletResponse response) throws IOException{
		Locale.setDefault(new Locale("pt", "br"));
		
		HashMap<String, String>global = (HashMap<String, String>)request.getSession().getAttribute("global");
		ConexaoReport conexao = new ConexaoReport();
		Connection conn = null;
		
		try {
			conn = conexao.getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("Erro ao criar conexão!");
			e.printStackTrace();
		}		
		
		String pathJasper = getServletContext().getRealPath("/WebContent/REPORT/")+ "/";
		// A variavel path armazena o caminho real para o contexto
		// isso é util pois o seu web container pode estar instalado em lugares diferentes
		String path = getServletContext().getRealPath("/");
		
		String username = (String)request.getSession().getAttribute("USERNAME");
		Date DATA1 = (Date)request.getSession().getAttribute("DATA1");
		Date DATA2 = (Date)request.getSession().getAttribute("DATA2");
		String centro_custo = (String)request.getSession().getAttribute("CC");
		int total_pag = (Integer)request.getSession().getAttribute("TOTAL_PAG");
		int total_jobs = (Integer)request.getSession().getAttribute("TOTAL_JOBS");
		float total_valor = (Float)request.getSession().getAttribute("TOTAL_VALOR");
		
			
		//Parametros
		Map parametros = new HashMap();
		//parametros.put("QUERY", query);
		parametros.put("DATA1", DATA1);     
		parametros.put("DATA2", DATA2);     
		parametros.put("CC", centro_custo);  
		parametros.put("USERNAME", username);
		parametros.put("TOTAL_PAG", total_pag);
		parametros.put("TOTAL_VALOR", total_valor);
		parametros.put("TOTAL_JOBS", total_jobs);
		
		JasperReport jasperReport;
		try {
			// Aqui ele cria o relatório
			JasperPrint impressao = JasperFillManager.fillReport(pathJasper	+ "RelatorioUsuario.jasper", parametros, conn);

			// Grava o relatório em disco em pdf
			JasperManager.printReportToPdfFile(impressao, path	+ "/RelatorioUsuario.pdf");
		
			// Redireciona para o pdf gerado
			response.sendRedirect("RelatorioUsuario.pdf");
		} catch (JRException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}		
		
				
	}
}

Erro gerado no console:

java.sql.SQLException: O tipo de dados de operando varchar é inválido para o operador sum.
	at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
	at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
	at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
	at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:632)
	at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:477)
	at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:778)
	at org.apache.jsp.REPORT.report_005fusuarios_jsp._jspService(report_005fusuarios_jsp.java:170)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Unknown Source)
Erro ao ..java.sql.SQLException: O tipo de dados de operando varchar é inválido para o operador sum.

Alguem saberia me dizer qual o problema da query “sql_totais” na pagina report_usuarios, e porque que ao inves de gerar meu relatorio o programa esta exibindo meu codigo java?
Bom, desde ja agradeço pela ajuda pessoal.

java.sql.SQLException: O tipo de dados de operando varchar é inválido para o operador sum.

tu ta tentando somar Strings, e isso não rola sem uma conversão. Encontra os valores que tu ta somando e transforma em integer (Integer.parseInt(String)), se precisar de transformar de volta para String, String.valueOf(i);

Bom fiz a conversao na pagina report_usuarios.jsp desta maneira:

ps4 = conn4.getStatement(sql_totais);
		try{
			rs4 = ps4.executeQuery();
			while (rs4.next()){
				cont_pag = Integer.parseInt(rs4.getString("TOTAL_PAG"));
				total_pag = total_pag + cont_pag;
				cont_valor = Integer.parseInt(rs4.getString("VALOR_TOTAL"));
				total_valor = total_valor + cont_valor;
				total_jobs = Integer.parseInt(rs4.getString("TOTAL_JOBS"));
                                                                   .
                                                                   .
                                                                   .

Porem ainda nao obtive resultado e sim o erro:

java.sql.SQLException: O tipo de dados de operando varchar é inválido para o operador sum.
	at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
	at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
	at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
	at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:632)
	at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:477)
	at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:778)
	at org.apache.jsp.REPORT.report_005fusuarios_jsp._jspService(report_005fusuarios_jsp.java:170)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Unknown Source)
Erro ao ..java.sql.SQLException: O tipo de dados de operando varchar é inválido para o operador sum.

E no final ao inves de gerar o relatorio(mesmo estando com erro) ele me direciona para a pagina http://localhost:8080/Lider/REPORT/ServletRelatorio.java mostrando o codigo do meu servlet.
Poxa o que eu devo estar fazendo errado?
Meu web.xml esta correto?
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Lider</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>ServletRelatorio</display-name>
    <servlet-name>ServletRelatorio</servlet-name>
    <servlet-class>mcopy.lider.servlet.ServletRelatorio</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletRelatorio</servlet-name>
    <url-pattern>/ServletRelatorio</url-pattern>
  </servlet-mapping>
</web-app>

Alguem me ajuda, pelo amor de Deus!?
Estou enroladasso com esse problema pessoal. Por favor.

O campo em seu Banco tem q ser Vachar? nao pode ser Integer nao?!
vlw
abs

Bom, consegui resolver um problema: o erro do sql que estava dando, eu substitui a query que fazia o select e alimentava minhas variaveis por variaveis criadas no proprio relatorio, porem meu relatorio nao é gerado quando faço a requisição pelo report_filters.jsp, continua mostrando apenas o codigo do meu ServletRelatorio.
O ServletRelatorio esta correto? pois nao me mostra mais nenhum erro na execução do mesmo.
Nao sei se ele esta gerando o relatorio, e se estiver, nao esta indo para o diretorio que eu designei.
Como resolvo isto pessoa? alguem sabe?
Obrigado

Cara vc ta chamando o metodo executaAcao no doGet e doPost chame apenas um de cada ou no doGet ou doPost e veja o resultado!
vlw
abs

Poxa, modifiquei o metodo e nada, ainda estou com o problema de execução do servlet e direcionamento de paginas, o problema descrito acima ainda persiste. Alguem poderia me dar uma ajuda, por que infelizmente ainda nao consegui resolver. Obrigado.

Qual o erro q ta dando em exato agora???
vlw
abs

O sistema roda blz, mas quando peço para gerar o relatorio ele simplesmente me direciona para o ServletRelatorio e nao gera o pdf, mostrando somente o codigo do servlet. Esta faltando alguma coisa no servlet?
Obrigado.

Modifiquei algumas coisas. Ficou assim agora:
report_filter.jsp(Chama o relatorio)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="true" pageEncoding="ISO-8859-1"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
<%@page import="java.text.*"%>
<%@page import="br.com.conection.ConexaoBD"%>
<%@page import="br.com.conection.ConfiguracoeBDDAO"%>
<%@include file="../index_topo.jsp"%>

<script type="text/javascript" src="../JS/scriptsLider.js"></script>
<link type="text/css" href="../CSS/teste/css/custom-theme/jquery-ui-1.7.2.custom.css" rel="stylesheet" />
<script type="text/javascript" src="../CSS/teste/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="../CSS/teste/js/jquery-ui-1.7.2.custom.min.js"></script>

<script type="text/javascript">

    function abreRelatorio(){
	
        popUp("../ReportUsuario", 800, 600, 1);
    }

    $(function(){

        // Accordion
        $("#accordion").accordion({ header: "h3" });
        //Datepicker
        $('#datepicker').datepicker({ dateFormat: 'dd/mm/yy' });

        $('#datepicker2').datepicker({ dateFormat: 'dd/mm/yy'  });

    });
</script>

<style type="text/css">
    /*demo page css*/
    body{ font: 62.5% "Trebuchet MS", sans-serif; margin: 50px;}
    .demoHeaders { margin-top: 2em; }

</style>
<div style="width:1000px;">
<h2 class="demoHeaders"></h2>
<span class="texto_normal">Filtros Relatorios</span>
<div id="accordion">
    <div>

        <h3><a href="#">RELATORIO POR USUARIO</a></h3>
        <div>
            <span>
                <select name="user">Selecione:
                    <option value="" selected="selected">Usuario</option>
                    <%
                        String sql = "SELECT * FROM USERS ORDER BY LOGIN ";
                        ConexaoBD conn = null;
                        PreparedStatement ps = null;
                        ResultSet rs = null;
                        String username = "";
                        int matricula = 0;
                        conn = new ConexaoBD(ConfiguracoeBDDAO.LOGIN, ConfiguracoeBDDAO.SENHA, ConfiguracoeBDDAO.DRIVER, ConfiguracoeBDDAO.URL);
                        conn.conectar();
                        ps = conn.getStatement(sql);
                        rs = ps.executeQuery();
                        while (rs.next()) {
                        matricula = rs.getInt("MATRICULA");
                        username = rs.getString("LOGIN");
                    %>
                    <option value="<%=username%>"><%=username%></option>
                    <%
}
                    %>
                </select>
            </span>


            <span>Período:

                <input type="text" name="datainicio" id="datepicker" size="10" maxlength="10"/>

                &nbsp; a &nbsp;
                <input type="Text" name="datafinal" id="datepicker2" size="10"  maxlength="10" >
            </span>

            <span>
                <input type="button" value="Visualizar Relatorio" name="B1" onClick="abreRelatorio()">
            </span>
        </div>
    </div>
    
    </div>

</div>
</div>

ReportUsuario.java (Pega os parametros do report_filters.jsp e baseado neles faz algumas consultas no banco e joga na sessao)

package br.com.report;

import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.conection.ConexaoBD;
import br.com.conection.ConfiguracoeBDDAO;

/**
 * Servlet implementation class ReportUsuario
 */
public final class ReportUsuario extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public ReportUsuario() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		executa(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
   /*protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            executa(request, response);
    }
*/
    private void executa(HttpServletRequest request, HttpServletResponse response){
            String arquivo = getServletContext().getRealPath("/") + "REPORT\\RelatorioUsuario.jasper";
            String username = request.getParameter("user");
            System.out.println("Usuario "+username+"\n");
            String data1 = request.getParameter("datainicio").toString();
            String data2 = request.getParameter("datafinal").toString();

            ConexaoBD conn2 = null;
            PreparedStatement ps2 = null;
            ResultSet rs2 = null;
            String cc = "";
            conn2 = new ConexaoBD(ConfiguracoeBDDAO.LOGIN,ConfiguracoeBDDAO.SENHA, ConfiguracoeBDDAO.DRIVER,ConfiguracoeBDDAO.URL);
            conn2.conectar();
            try{
                    ps2 = conn2.getStatement("SELECT * FROM USERS WHERE LOGIN = ?");
                    ps2.setString(1, username);
                    System.out.println("Usuario "+username+"\n");
                    rs2 = ps2.executeQuery();

                    if(rs2.next()){
                            cc = rs2.getString("CC"); //Pega o codigo de centro de custo do usuario selecionado.
                    }

            }catch(Exception exc){
                    exc.printStackTrace();
                    System.out.println("Erro ao concetar em USERS");
            }
            System.out.println("Centro custo "+cc+"\n");
            String[] cc_split = cc.split("");//Splita o codigo do centro de custo
            System.out.println("CC split "+cc_split[1]+"\n");
            String centro_custo_aplit = (cc_split[1]); // Pega o primeiro caracter do codigo, que representa o nome do centro de custo
            String cc_para_consulta = centro_custo_aplit + "00"; // Concatena o codigo centro de custo com 00 para fazer a consulta na tabela "Centro_Custo" e retornar o nome do centro de custo


            ConexaoBD conn3 = null;
            PreparedStatement ps3 = null;
            ResultSet rs3 = null;
            String cc_completo = "";
            conn3 = new ConexaoBD(ConfiguracoeBDDAO.LOGIN,ConfiguracoeBDDAO.SENHA, ConfiguracoeBDDAO.DRIVER, ConfiguracoeBDDAO.URL);
            conn3.conectar();
            try{
                    ps3 = conn3.getStatement("SELECT * FROM CENTRO_CUSTO WHERE CC = ?");
                    ps3.setString(1, cc_para_consulta);
                    rs3 = ps3.executeQuery();

                    rs3.next();
                    cc_completo = rs3.getString("DESCRICAO"); //Pega o nome do centro de custo na tabela Centro_Custo
                    System.out.println(" Centro de custo completo "+cc_completo+"\n");
            }catch(Exception ex){
                    ex.printStackTrace();
                    System.out.println("Erro ao concetar em CENTRO_CUSTO");
            }

            String centro_custo = cc_completo;


            try {
                    request.getSession().setAttribute("username", username);
                    request.getSession().setAttribute("data1", data1);
                    request.getSession().setAttribute("data2", data2);
                    request.getSession().setAttribute("arquivo", arquivo);
                    request.getSession().setAttribute("centro_custo", centro_custo);
                    response.sendRedirect("ServletRelatorio");
            } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            }
    }

}

SevletRelatorio.java(Responsavel por gerar o relatorio)


package br.com.servlet;

import br.com.conection.*;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.util.JRLoader;

/**
 * Servlet implementation class ServletRelatorio
 */
public class ServletRelatorio extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {

    static final long serialVersionUID = 1L;

    /* (non-Java-doc)
     * @see javax.servlet.http.HttpServlet#HttpServlet()
     */
    public ServletRelatorio() {
        super();
    }

    /* (non-Java-doc)
     * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        executaAcao(request, response);
    }

    /* (non-Java-doc)
     * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        executaAcao(request, response);
    }

    public void executaAcao(HttpServletRequest request, HttpServletResponse response) {
        Locale.setDefault(new Locale("pt", "br"));

        ConexaoBD conexao = new ConexaoBD(ConfiguracoeBDDAO.LOGIN, ConfiguracoeBDDAO.SENHA, ConfiguracoeBDDAO.DRIVER, ConfiguracoeBDDAO.URL);
        Connection conn = null;

        try {
            conn = conexao.getConexao();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            System.out.println("Erro ao criar conex&#65533;o!");
            e.printStackTrace();
        }

        String arquivo = (String) request.getSession().getAttribute("arquivo");
        String username = request.getParameter("username");
        String data1 = request.getParameter("data1").toString();
        String data2 = request.getParameter("data2").toString();
        String centro_custo = request.getParameter("centro_custo").toString();

        // par&#65533;metros, se houverem
        Map parametros = new HashMap();
        parametros.put("DATA1", data1);
        parametros.put("DATA2", data2);
        parametros.put("CC", centro_custo);
        parametros.put("USERNAME", username);

        File reportFile = new File(arquivo);
        JasperReport jasperReport;
        byte[] bytes = null;
        try {
            jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());
            bytes = JasperRunManager.runReportToPdf(jasperReport, parametros, conn);
        } catch (JRException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        JasperPrint jasperPrint = null;
        String trataErro = "";
        try {
            jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());
            jasperPrint = JasperFillManager.fillReport(jasperReport, parametros, conn);

            if (jasperPrint.getPages().size() == 0) {
                trataErro = "Nenhum Registro foi Encontrado!";
            }
        } catch (Exception e) {
        }

        if (trataErro.equals("")) {
            response.setContentType("application/pdf");
            response.setContentLength(bytes.length);
            ServletOutputStream ouputStream = null;
            try {
                ouputStream = response.getOutputStream();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            try {
                ouputStream.write(bytes, 0, bytes.length);
                ouputStream.flush();
                ouputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else {
            PrintWriter out = null;
            try {
                out = response.getWriter();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            out.println("<center><br><br><br><br><br><br><br><br><br><br><font color='red'>" + trataErro + "</font></center><br><center><a href='javascript:window.close();'>Voltar</a></center>");
        }

        request.getSession().removeAttribute("arquivo");
        request.getSession().removeAttribute("parameters");

    }
}

Mesmo assim ainda continua dando erro :

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
	br.com.report.ReportUsuario.executa(ReportUsuario.java:50)
	br.com.report.ReportUsuario.doGet(ReportUsuario.java:35)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
Apache Tomcat/6.0.18

Poxa, o que eu faço agora? Ja mudei esses codigos diversas vezes e todas dao errro. Alguem poderia me ajudar a solucionar este problema? Estou arruinado de tanto quebrar a cabeça e nada.
Obrigado ai pessoal.

na função abre relatorio passa co camino do package completo!!

seu erro quer dizer que a classe nao foi encotrada ou n existe!!
vlw

UMC, a classe existe, senão seria ClassNotFoundException…

Este é um erro NullPointerException, vamos ler o stack trace?

Bom, de baixo pra cima, veja a primeira classe do seu sistema que aparece:

br.com.report.ReportUsuario.doGet(ReportUsuario.java:35)

O que tem nessa linha nos informando? Um NullPointerException na linha 35 da classe ReportUsuario.java. Vamos lá ver o que tem?

executa(request, response);  

Humm, estranho. Apenas a chamada de um método… Vamos continuar lendo o stack trace?

br.com.report.ReportUsuario.executa(ReportUsuario.java:50)

Bom, mesma classe, linha 50. Nossa que coincidência! Esta linha está dentro do método executa (req,res) que foi mostrado anteriormente! ehehehe
Vamos ver o que tem nela:

String data1 = request.getParameter("datainicio").toString();

Bingo! Oras… datainicio é a variável do datepicker. O que esse datepicker retorna? Uma String ‘dd/mm/AAAA’ ? Não importa, só sei que ele tá retornando algo nulo ou então alguma coisa que o método toString() não suporta.

Veja aí se consegue arrumar amigo!

Abraços.

edit.: provávelmente o erro acontecerá na próxima linha após o sr. consertar a 50, pois a 51 é idêntica. Não arrume tudo de uma só vez, veja se é isso mesmo e nos informa. Abraços.

Era isso, estava vindo nulo mesmo, ai eu arrumei e agora esta pegando os valores. Mas ainda da um erro de conversao das datas, no relatorio os campos que irao receber os parametros data1 e data2 sao Timestamp, logo eu teria que converter as Strings data1 e data2 que eu estou pegando da sessao no ServletRelatorio para Timestamp. Ai eu fiz assim:
ServletRelatorio.java

String arquivo = (String) request.getSession().getAttribute("arquivo");
        String username = (String) request.getSession().getAttribute("username");
        String data1 = (String) request.getSession().getAttribute("data1");
        String data2 = (String) request.getSession().getAttribute("data2");
        String centro_custo = (String) request.getSession().getAttribute("centro_custo");


         // Bloco que converte as Strings em Timestamp
          DateFormat formatter ;
          Date da1 ;
          Date da2;
          formatter = new SimpleDateFormat("dd-MM-yyyy");
              da1 = (Date)formatter.parse(data1);
              da2 = (Date)formatter.parse(data2);
          java.sql.Timestamp date1 = new Timestamp(da1.getTime());
          java.sql.Timestamp date2 = new Timestamp(da2.getTime());
          System.out.println("A data1 e: " +date1+"\n"+"A data 2 e "+date2);
          //Fim do bloco
          //O resto do codigo continua a mesma coisa
         

Bom quando peço pra executar ele me retorna um erro de conversao :

20/01/2010 16:00:21 br.com.servlet.ServletRelatorio doGet
SEVERE: null
O erro e java.text.ParseException: Unparseable date: "01/07/2009" //>>Esta e a data que eu escolhi no datepicker
java.text.ParseException: Unparseable date: "01/07/2009"
        at java.text.DateFormat.parse(DateFormat.java:337)
        at br.com.servlet.ServletRelatorio.executaAcao(ServletRelatorio.java:111)
        at br.com.servlet.ServletRelatorio.doGet(ServletRelatorio.java:53)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)

Ja procurei uma forma de arrumar isso e nao achei, todos os metodos que eu utilizei para converter esta data eu nao consigo, sempre retorna o mesmo erro.
Como faço para fazer essa maldita conversao de data?
Agradecido.

Neste caso, deixa essa sua aplicação de lado, cria um novo projeto no Eclipse, cria uma classe com um main, pega um livro Deitel ou mesmo o SJCP, e vai vendo os métodos Parse que são válidos pra usar com esse formato até encontrar a solução. Será melhor do que alguém te informar algo pronto, você aprenderá muito mais.
Faz tudo com Sysout mesmo…

Abraços.

Cara, valeu pela sua opnião, mas isso nao posso fazer, pois tenho que entregar isso pronto ate amanha. Estou quebrando a cabeça pra resolver aqui, mas encontro dificuldades em algumas coisas, por exemplo essas que eu coloquei aqui. Nunca mexi com relatorio web, e por isso algums problemas nao consigo resolver e posto aqui pra poder receber uma ajuda e nao algo pronto. Fico grato por ter respondido, mas nao resolveu meu problema. Espero que nao me um leve mal.
Bom ainda continuo com o problema e peço que se puderem me ajudar, ficarei grato. Obrigado

Você vai ter que fazer o parse dessa data com essa máscara dd/MM/yyyy

Bom, coloquei desta forma:


          DateFormat formatter ;
          Date da1 ;
          Date da2;
          formatter = new SimpleDateFormat("dd/MM/yyyy");
              da1 = (Date)formatter.parse(data1);
              da2 = (Date)formatter.parse(data2);
          java.sql.Timestamp date1 = new Timestamp(da1.getTime());
          java.sql.Timestamp date2 = new Timestamp(da2.getTime());
          System.out.println("A data1 e: " +date1+"\n"+"A data 2 e "+date2);

Mas quando faço isso, da um outro erro no sql do relatorio:

A data1 e: 2009-11-02 00:00:00.0
A data 2 e 2010-01-11 00:00:00.0
net.sf.jasperreports.engine.JRException: Error executing SQL statement for : RelatorioUsuario
        at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:141)
        at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:681)
        at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:601)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1247)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:877)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:826)
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:59)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
        at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:281)
        at br.com.servlet.ServletRelatorio.executaAcao(ServletRelatorio.java:132)
        at br.com.servlet.ServletRelatorio.doGet(ServletRelatorio.java:53)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.SQLException: Nome de objeto 'base_nvt' inválido.
        at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
        at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
        at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
        at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:632)
        at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:477)
        at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:778)
        at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:135)
        ... 27 more
Erro no gera relatorio net.sf.jasperreports.engine.JRException: Error executing SQL statement for : RelatorioUsuario

A query do relatorio e essa:
obs:. Os parametros DATA1 e DATA2 sao do tipo timestamp.

SELECT * FROM base_bhz WHERE username = $P{USERNAME} and submitdate between $P{DATA1} and $P{DATA2}
UNION (SELECT * FROM base_bsb WHERE username = $P{USERNAME}  and submitdate between $P{DATA1} and $P{DATA2})
UNION (SELECT * FROM base_jac WHERE username = $P{USERNAME}  and submitdate between $P{DATA1} and $P{DATA2})
UNION (SELECT * FROM base_mea WHERE username = $P{USERNAME}  and submitdate between $P{DATA1} and $P{DATA2})
UNION (SELECT * FROM base_nvt WHERE username = $P{USERNAME}  and submitdate between $P{DATA1} and $P{DATA2})
UNION (SELECT * FROM base_rio WHERE username = $P{USERNAME}  and submitdate between $P{DATA1} and $P{DATA2})
UNION (SELECT * FROM base_sao WHERE username = $P{USERNAME}  and submitdate between $P{DATA1} and $P{DATA2})
UNION (SELECT * FROM base_tme WHERE username = $P{USERNAME}  and submitdate between $P{DATA1} and $P{DATA2})
UNION (SELECT * FROM base_vix WHERE username = $P{USERNAME}  and submitdate between $P{DATA1} and $P{DATA2})
ORDER BY ServerName

Quando pego essa query e executo no sql e coloco alguns parametros na mao, a consulta e feita perfeitamente, mas quando chamo pelo servlet da esse erro.
O que eu faço, e problema no servlet? nos parametros? Pois ja testei e debuguei mas o erro so da quando executa o relatorio. O que devo fazer, por favor me ajudem, preciso muito resolver isso. Desde já, obrigado.

Ai galera, consegui resolver meu problema, graças a Deus, rsrs. Depois de muito concertar e ouvindoo a ajuda de vcs, deu tudo certo. Valeu pessoal, valeu mesmo.