gt: 								nombreSelect += "." + rsmd.getTableName(1);
context: /**
   * 
   */
  package vista.tags;
  
  import java.io.IOException;
  import java.sql.ResultSetMetaData;
  import java.sql.SQLException;
  import java.util.Enumeration;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Map;
  import java.util.Map.Entry;
  
  import javax.naming.NamingException;
  import javax.servlet.jsp.JspException;
  import javax.servlet.jsp.JspTagException;
  import javax.servlet.jsp.tagext.TagSupport;
  
  import modelo.beans.FiltroReporte;
  import modelo.utils.BaseDatos;
  
  /**
   * @author adalberto
   *
   */
  public class FiltrosTagHandler extends TagSupport {
  
  	/**
  	 * 
  	 */
  	private static final long serialVersionUID = 1L;
  	private String titulo;
  	private Integer columnas;
  	private List<FiltroReporte> filtrosReporte;
  	private Boolean ordenarCampos;
  	private Boolean usarAjax;
  	private String idTablaReporte;
  	private String textoFiltrar;
  	private String textoRestaurar;
  	
  	/**
  	 * 
  	 */
  	public FiltrosTagHandler() {
  		// TODO Auto-generated constructor stub
  	}
  	
  	/**
  	 * @return the titulo
  	 */
  	public String getTitulo() {
  		return titulo;
  	}
  
  
  
  	/**
  	 * @param titulo the titulo to set
  	 */
  	public void setTitulo(String titulo) {
  		this.titulo = titulo;
  	}
  
  
  
  	/**
  	 * @return the columnas
  	 */
  	public Integer getColumnas() {
  		return columnas;
  	}
  
  
  
  	/**
  	 * @param columnas the columnas to set
  	 */
  	public void setColumnas(Integer columnas) {
  		this.columnas = columnas;
  	}
  
  
  
  	/**
  	 * @return the filtrosReporte
  	 */
  	public List<FiltroReporte> getFiltrosReporte() {
  		return filtrosReporte;
  	}
  
  
  
  	/**
  	 * @param filtrosReporte the filtrosReporte to set
  	 */
  	public void setFiltrosReporte(List<FiltroReporte> filtrosReporte) {
  		this.filtrosReporte = filtrosReporte;
  	}
  
  	/**
  	 * @return the ordenarCampos
  	 */
  	public Boolean getOrdenarCampos() {
  		return ordenarCampos;
  	}
  
  	/**
  	 * @param ordenarCampos the ordenarCampos to set
  	 */
  	public void setOrdenarCampos(Boolean ordenarCampos) {
  		this.ordenarCampos = ordenarCampos;
  	}
  
  	/**
  	 * @return the usarAjax
  	 */
  	public Boolean getUsarAjax() {
  		return usarAjax;
  	}
  
  	/**
  	 * @param usarAjax the usarAjax to set
  	 */
  	public void setUsarAjax(Boolean usarAjax) {
  		this.usarAjax = usarAjax;
  	}
  
  	/**
  	 * @return the idTablaReporte
  	 */
  	public String getIdTablaReporte() {
  		return idTablaReporte;
  	}
  
  	/**
  	 * @param idTablaReporte the idTablaReporte to set
  	 */
  	public void setIdTablaReporte(String idTablaReporte) {
  		this.idTablaReporte = idTablaReporte;
  	}
  
  	/**
  	 * @return the textoFiltrar
  	 */
  	public String getTextoFiltrar() {
  		return textoFiltrar;
  	}
  
  	/**
  	 * @param textoFiltrar the textoFiltrar to set
  	 */
  	public void setTextoFiltrar(String textoFiltrar) {
  		this.textoFiltrar = textoFiltrar;
  	}
  
  	/**
  	 * @return the textoRestaurar
  	 */
  	public String getTextoRestaurar() {
  		return textoRestaurar;
  	}
  
  	/**
  	 * @param textoRestaurar the textoRestaurar to set
  	 */
  	public void setTextoRestaurar(String textoRestaurar) {
  		this.textoRestaurar = textoRestaurar;
  	}
  
  	@Override
  	public int doStartTag() throws JspException {
  		try {
  			
  			if(getIdTablaReporte() == null || getIdTablaReporte().trim() == ""){
  				setIdTablaReporte("reporte_tabla");
  			}
  			
  			pageContext.getOut().println("<FORM name=\"form_filtro_" + getIdTablaReporte() + "\" method=\"get\" action=\"?\" onsubmit=\"return filtrarTablaReporte(this, " + getUsarAjax() + ", '" + getIdTablaReporte() + "');\">");
  			pageContext.getOut().println("<TABLE id=\"filtro_" + getIdTablaReporte() +"\" class=\"filtro_reporte_tabla\">");
  			
  			if (getTitulo() != null) {
  				pageContext.getOut().println(
  						"<CAPTION>" + getTitulo() + "</CAPTION>");
  			}
  			
  			int filas = 0;
  			int columnas = 0;
  			int indice  = 0;
  			
  			for (filas = 0; filas < Math.ceil((double)filtrosReporte.size()/(double)getColumnas()) ; filas++) {
  				pageContext.getOut().println("<TR>");
  				for (columnas = 0; columnas < getColumnas() && indice < getFiltrosReporte().size(); columnas++) {
  					pageContext.getOut().println("<TD>");
  					FiltroReporte filtro = getFiltrosReporte().get(indice);
  					pageContext.getOut().println(filtro.getEtiqueta()+": ");
  					
  					if(filtro.getTipo().equals("select")){
  						
  						
  						if(filtro.getBd() != null){
  							
  							BaseDatos bd = filtro.getBd();
  							
  							try {
  							
  							bd.generarSelect(bd.campos, bd.tablas, bd.uniones, bd.condicion,
  									bd.disctinct, bd.camposOrden, bd.asc, bd.camposGroup,
  									bd.condicionHaving);
  							
  							if (bd.usarJDBC) {
  								bd.abrirConexionJDBC(null);
  								
  							} else {
  								bd.abrirConexionDataSource(null);
  							}
  
  							bd.stmt = bd.con.createStatement();
  							bd.rs = bd.stmt.executeQuery(bd.sql);
  
  							ResultSetMetaData rsmd = bd.rs.getMetaData();
  							
  							
  							String nombreSelect = "";
  
  							if (!rsmd.getCatalogName(1).isEmpty()) {
  								nombreSelect += "."
  										+ rsmd.getCatalogName(1);
  							}
  
  							if (!rsmd.getSchemaName(1).isEmpty()) {
  								nombreSelect += "." + rsmd.getSchemaName(1);
  							}
  
  							if (!rsmd.getTableName(1).isEmpty()) {
  