Location: PHPKode > projects > PHP Report > phpreport-v1.0/classes/Class_VisualizarRel.php
<?
/***********************************************************************************/
/*                                 PHP Report                                      */
/*                                                                                 */
/* Copyright (c) 2005 by Daniela Toniolo, Leonardo Galv√£o and Marli Carneiro       */
/*                                                                                 */
/* This is a free software. You can redistribute it and/or modify it under the     */
/* terms of the GNU General Public License.                                        */
/***********************************************************************************/

class VisualizarRel {
	function SelectsFrom($id,$tabela1,$tabela2,$tipo){
		$conecta = Conexao::Conecta();
		$query1 = "SELECT CAMTABELA FROM CAMPO WHERE RELCODIGO=".$id." AND CAMTABELA='".$tabela1."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$campo1 = $result1->numRows(); 
		$query1 = "SELECT FILTABELA FROM FILTRO WHERE RELCODIGO=".$id." AND FILTABELA='".$tabela1."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$filtro1 = $result1->numRows(); 
		$query1 = "SELECT AGRTABELA FROM AGRUPAMENTO WHERE RELCODIGO=".$id." AND AGRTABELA='".$tabela1."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$agrup1 = $result1->numRows(); 
		$query1 = "SELECT ORDTABELA FROM ORDENACAO WHERE RELCODIGO=".$id." AND ORDTABELA='".$tabela1."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$ordena1 = $result1->numRows(); 
		$query1 = "SELECT FORTABELA FROM FORMULA WHERE RELCODIGO=".$id." AND FORTABELA='".$tabela1."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$formula1 = $result1->numRows(); 
		$query1 = "SELECT GRAXTABELA FROM GRAFICO WHERE RELCODIGO=".$id." AND GRAXTABELA='".$tabela1."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$graficox1 = $result1->numRows(); 
		$query1 = "SELECT GRAYTABELA FROM GRAFICO WHERE RELCODIGO=".$id." AND GRAYTABELA='".$tabela1."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$graficoy1 = $result1->numRows(); 
		$query1 = "SELECT CAMTABELA FROM CAMPO WHERE RELCODIGO=".$id." AND CAMTABELA='".$tabela2."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$campo2 = $result1->numRows(); 
		$query1 = "SELECT FILTABELA FROM FILTRO WHERE RELCODIGO=".$id." AND FILTABELA='".$tabela2."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$filtro2 = $result1->numRows(); 
		$query1 = "SELECT AGRTABELA FROM AGRUPAMENTO WHERE RELCODIGO=".$id." AND AGRTABELA='".$tabela2."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$agrup2 = $result1->numRows(); 
		$query1 = "SELECT ORDTABELA FROM ORDENACAO WHERE RELCODIGO=".$id." AND ORDTABELA='".$tabela2."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$ordena2 = $result1->numRows(); 
		$query1 = "SELECT FORTABELA FROM FORMULA WHERE RELCODIGO=".$id." AND FORTABELA='".$tabela2."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$formula2 = $result1->numRows(); 
		$query1 = "SELECT GRAXTABELA FROM GRAFICO WHERE RELCODIGO=".$id." AND GRAXTABELA='".$tabela2."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$graficox2 = $result1->numRows(); 
		$query1 = "SELECT GRAYTABELA FROM GRAFICO WHERE RELCODIGO=".$id." AND GRAYTABELA='".$tabela2."'";
		$result1 = $conecta->query($query1); 
		if (DB::isError($result1)) die ($result1->getDebugInfo()); 
		$graficoy2 = $result1->numRows(); 

		if ($tipo == "rel"){
			$busca1 = 0;
			$busca2 = 0;
			if ($campo1 != 0 || $filtro1 != 0 || $agrup1 != 0 || $ordena1 != 0) $busca1 = 1;
			if ($campo2 != 0 || $filtro2 != 0 || $agrup2 != 0 || $ordena2 != 0) $busca2 = 1;
			if ( ($busca1==1 && (($formula2==0  && $graficox2 == 0 && $graficoy2 == 0) || $busca2==1)) || ($busca2==1 && (($formula1==0  && $graficox1 == 0 && $graficoy1 == 0) || $busca1==1)) ) {
				return 1;
			} else return 0;
		} else if ($tipo == "form"){
			$busca1 = 0;
			$busca2 = 0;
			if ($campo1 != 0 || $filtro1 != 0 || $agrup1 != 0 || $ordena1 != 0 || $formula1 != 0) $busca1 = 1;
			if ($campo2 != 0 || $filtro2 != 0 || $agrup2 != 0 || $ordena2 != 0 || $formula2 != 0) $busca2 = 1;
			if ( ($busca1==1 && (($graficox2 == 0 && $graficoy2 == 0) || $busca2==1)) || ($busca2==1 && (($graficox1 == 0 && $graficoy1 == 0) || $busca1==1)) ) {
				return 1;
			} else return 0;
		} else if ($tipo == "gra"){
			$busca1 = 0;
			$busca2 = 0;
			if ($campo1 != 0 || $filtro1 != 0 || $agrup1 != 0 || $ordena1 != 0 || $graficox1 != 0 || $graficoy1 != 0) $busca1 = 1;
			if ($campo2 != 0 || $filtro2 != 0 || $agrup2 != 0 || $ordena2 != 0 || $graficox2 != 0 || $graficoy2 != 0) $busca2 = 1;
			if ( ($busca1==1 && ($formula2==0 || $busca2==1)) || ($busca2==1 && ($formula1==0 || $busca1==1)) ) {
				return 1;
			} else return 0;
		}
	}

	function From($id,$tipo){
		$relacionam_tabela=null;
		$relacionam_usados=null;
		$relacionam_usados2=null;
		$conecta = Conexao::Conecta();
		$query = "SELECT RTOTABELA1,RTOCAMPO1,RTOTABELA2,RTOCAMPO2 FROM RELACIONAMENTO WHERE RELCODIGO=".$id;
		$result = $conecta->query($query); 
		if (DB::isError($result)) die ($result->getDebugInfo()); 
		$rows = $result->numRows();
		if ($rows > 0){
			while($i = $result->fetchRow(DB_FETCHMODE_OBJECT)){
				$tabela1 = $i->RTOTABELA1;
				$campo1 = $i->RTOCAMPO1;
				$tabela2 = $i->RTOTABELA2;
				$campo2 = $i->RTOCAMPO2;
				$relac1 = "`".$tabela1."`.`".$campo1."`";
				$relac2 = "`".$tabela2."`.`".$campo2."`"; 
				$selects = VisualizarRel::SelectsFrom($id,$tabela1,$tabela2,$tipo); 
				if ($selects == 1) {
					if (($relacionam_tabela==null)||(!in_array($tabela1,$relacionam_tabela))) {
						$relacionam_tabela[] = $tabela1;
						$relacionam_usados[] = $relac1;
						$relacionam_usados2[] = $relac2;
					} 
					if (($relacionam_tabela==null)||(!in_array($tabela2,$relacionam_tabela))) {
						$relacionam_tabela[] = $tabela2;
						$relacionam_usados[] = $relac2;
						$relacionam_usados2[] = $relac1;
					}
				}
			}
		} 
		
		$from_rel=null;
		$tam = count($relacionam_usados);
		if ($tam>0) {
			for($i=1;$i<$tam;$i++) {
				$from_rel.=" INNER JOIN `".$relacionam_tabela[$i]."` ON(".$relacionam_usados[$i]."=".$relacionam_usados2[$i].")";
			}
			$from_rel=" FROM `".$relacionam_tabela[0]."`".$from_rel;
		} else {
			$query = "SELECT CAMTABELA FROM CAMPO WHERE RELCODIGO=".$id;
			$result = $conecta->query($query); 
			if (DB::isError($result)) die ($result->getDebugInfo()); 
			$i = $result->fetchRow(DB_FETCHMODE_OBJECT);
			$tabela = $i->CAMTABELA;
			$from_rel=" FROM `".$tabela."`";
		}
		return $from_rel;
	}
	
	function ImprimeDado($id,$dado,$coluna){
		$conecta = Conexao::Conecta();
		$query = "SELECT CORCONDICAO1,CORCONTEUDO1,CORFILTRO,CORCONDICAO2,CORCONTEUDO2,CORRGB FROM CAMPO cam INNER JOIN CORCAMPO cor ON (cam.RELCODIGO=cor.RELCODIGO AND cam.CAMCAMPO=cor.CORCAMPO AND cam.CAMTABELA=cor.CORTABELA) WHERE cam.RELCODIGO=".$id." AND cam.CAMORDEM=".$coluna;
		$result = $conecta->query($query); 
		if (DB::isError($result)) die ($result->getDebugInfo()); 
		$rows = $result->numRows(); 
		$imprimiu=0;
		if ($rows > 0){
			while($i = $result->fetchRow(DB_FETCHMODE_OBJECT)){
				$cond1 = $i->CORCONDICAO1;
				$cont1 = $i->CORCONTEUDO1;
				$eou = $i->CORFILTRO;
				$cond2 = $i->CORCONDICAO2;
				$cont2 = $i->CORCONTEUDO2;
				$corrgb = $i->CORRGB;
				
				$condicao="f";
				$condicao1="f";
				switch($cond1){
					case "LIKE": if(strpos($dado,$cont1) !== false) $condicao1="t"; break;
					case "NOT LIKE": if(strpos($dado,$cont1) === false) $condicao1="t"; break;
					case ">": if ($dado>$cont1) $condicao1="t"; break;
					case ">=": if ($dado>=$cont1) $condicao1="t"; break;
					case "<": if ($dado<$cont1) $condicao1="t"; break;
					case "<=": if ($dado<=$cont1) $condicao1="t"; break;
					case "=": if ($dado==$cont1) $condicao1="t"; break;
					case "!=": if ($dado!=$cont1) $condicao1="t"; break;
				}

				if ($eou!=null) {
					$condicao2="f";
					switch($cond2){
						case "LIKE": if(strpos($dado,$cont2) !== false) $condicao2="t"; break;
						case "NOT LIKE": if(strpos($dado,$cont2) === false) $condicao2="t"; break;
						case ">": if ($dado>$cont2) $condicao2="t"; break;
						case ">=": if ($dado>=$cont2) $condicao2="t"; break;
						case "<": if ($dado<$cont2) $condicao2="t"; break;
						case "<=": if ($dado<=$cont2) $condicao2="t"; break;
						case "=": if ($dado==$cont2) $condicao2="t"; break;
						case "!=": if ($dado!=$cont2) $condicao2="t"; break;
					}
					switch($eou){
						case "AND": if(($condicao1=="t")&&($condicao2=="t")) $condicao="t"; break;
						case "OR": if(($condicao1=="t")||($condicao2=="t")) $condicao="t"; break;
					}
				} else {
					if ($condicao1=="t") $condicao="t";
				}
				if(($condicao=="t")&&($imprimiu==0)) {
					print "<font color=\"#".$corrgb."\">".$dado."</font>";
					$imprimiu=1;
				}
			}
		}
		if($imprimiu==0) print $dado;
	}
	
	function RelatorioPrinc($id,$addwhere,$from_rel,$from_form,$base,$template,$template_tipo,$template_nume,$sqlselect,$sqlfrom,$sqlwhere,$sqlorder,$sqlgroup,$sqlformgrup,$colspan){		
		$conecta = Conexao::Conecta();
		$query = "SELECT CAMTITULO FROM CAMPO WHERE RELCODIGO=".$id." ORDER BY CAMORDEM";
		$result = $conecta->query($query); 
		if (DB::isError($result)) die ($result->getDebugInfo()); 
		$colunas = $result->numRows(); 
		if ($colunas > 0){
			print "<tr>";
			if ($template==1) $fundo1 = "CCCCCC"; else $fundo1 = "9FD9FF";
			if ($template_nume==1) print "<td bgcolor=\"#".$fundo1."\">&nbsp;</td>";
			while($i = $result->fetchRow(DB_FETCHMODE_OBJECT)){
				$titulo = $i->CAMTITULO;
				print "<td bgcolor=\"#".$fundo1."\"><strong>".$titulo."</strong></td>";
			}
			print "</tr>";
		}

		$conecta = Conexao::ConectaRel($base);
		if (($sqlwhere==null)&&($addwhere==null)) $where = null;
		else if (($sqlwhere!=null)&&($addwhere!=null)) $where = $sqlwhere." AND ".$addwhere;
		else if (($sqlwhere==null)&&($addwhere!=null)) $where = " WHERE ".$addwhere; 
		else $where = $sqlwhere;
		
		$stringsql = $sqlselect.$from_rel.$where.$sqlorder;
		$result = $conecta->query($stringsql);
		if (DB::isError($result)) die ($result->getDebugInfo());
		$linhas = $result->numRows();
		if ($linhas > 0){
			$j=1;
			while($i = $result->fetchRow(DB_FETCHMODE_OBJECT)){
				print "<tr>";
				if ($template==1) {
					if ($j%2==0) $fundo = "F5F5F5"; else $fundo = "FFFFFF";
				} else {
					if ($j%2==0) $fundo = "D7EFFF"; else $fundo = "F4FBFF";
				}
				if ($template_nume==1) print "<td bgcolor=\"#".$fundo1."\" width=\"20\" align=\"center\">".$j."</td>";
				for($cont=0;$cont<$colunas;$cont++){
					$pegacoluna = "COLUNA".$cont;
					$dado = $i->$pegacoluna;
					if ($dado==null) $dado="&nbsp;";
					print "<td bgcolor=\"#".$fundo."\">";
					VisualizarRel::ImprimeDado($id,$dado,$cont);
					print "</td>";
				}
				print "</tr>";
				$j++;
			}
			print "<tr><td colspan=\"".$colspan."\">&nbsp;</td></tr>";
		}
		
		//imprime formulas do grupo
		$conecta = Conexao::Conecta();
		$query = "SELECT FORCAMPO,FORTITULO FROM FORMULA WHERE RELCODIGO=".$id." AND FORAPLICACAO='g' ORDER BY FORORDEM";
		$result = $conecta->query($query);
		if (DB::isError($result)) die ($result->getDebugInfo());
		$rows = $result->numRows();
		if ($rows > 0){
			$formulas=null;
			while($i = $result->fetchRow(DB_FETCHMODE_OBJECT)){
				$campo = $i->FORCAMPO;
				$titulo = $i->FORTITULO;
				$formulas[] = array($campo,$titulo);
			}
			$conecta = Conexao::ConectaRel($base);
			$stringsql = $sqlformgrup.$from_form.$where.$sqlgroup;
			$result = $conecta->query($stringsql);
			if (DB::isError($result)) die ($result->getDebugInfo());
			$rows2 = $result->numRows();
			if ($rows2 > 0){
				$i = $result->fetchRow(DB_FETCHMODE_OBJECT);
				for($cont=0;$cont<count($formulas);$cont++) {
					$pegatitulo = "FormulaGrupo".$formulas[$cont][0];
					$formula = $i->$pegatitulo;
					print "<tr><td colspan=\"".$colspan."\" align=\"right\"><strong>".$formulas[$cont][1]."</strong>: ".$formula."</td></tr><tr><td colspan=\"".$colspan."\">&nbsp;</td></tr>";
				}
			}
		} 
	}

	function RelatorioGrupo($id,$grupo,$agrupar_por,$tam,$where,$from_rel,$from_form,$base,$template,$template_tipo,$template_nume,$sqlselect,$sqlfrom,$sqlwhere,$sqlorder,$sqlgroup,$sqlformgrup,$colspan){
		$conecta = Conexao::ConectaRel($base);
		$agrupar = null;
		for ($i=0;$i<=$grupo;$i++) {
			if($i!=0) $agrupar .= ", ";
			$agrupar .= $agrupar_por[$i];
		}
		$select = $agrupar_por[$grupo];
		
		$addwhere = null;
		for($j=0;$j<$grupo;$j++){
			if ($j!=0) $addwhere.=" AND ";
			$addwhere.=$where[$j];
		}
		if (($sqlwhere==null)&&($addwhere==null)) $imp_where = null;
		else if (($sqlwhere!=null)&&($addwhere!=null)) $imp_where = $sqlwhere." AND ".$addwhere;
		else if (($sqlwhere==null)&&($addwhere!=null)) $imp_where = " WHERE ".$addwhere; 
		else $imp_where = $sqlwhere;
		
		if(($grupo==0)&&($template_tipo==2)) {
			print "<tr><td colspan=\"".$colspan."\" align=\"right\">";
			$stringsql = "SELECT ".$select." AS GRUPO".$grupo.$from_rel.$imp_where." GROUP BY ".$agrupar;
			$result = $conecta->query($stringsql);
			if (DB::isError($result)) die ($result->getDebugInfo());
			$paginas = $result->numRows();
			if(!isset($_GET["pagina"])) $pagina = 0; else $pagina = $_GET["pagina"];
			$limit = " LIMIT $pagina, 1";
			print " <input value=\" &lt; \" type=\"button\"";
			if($pagina > 0) {
				$menos = $pagina - 1;
				$url = "FrVisualizarRel1.php?id=$id&pagina=$menos";
				print " onclick=\"javascript:window.open('".$url."','_self');\"";
			}
			print "> ";
			$pag_atual = $pagina+1;
			print ""._PAGINA." ".$pag_atual." "._DE." ".$paginas;
			print " <input value=\" &gt; \" type=\"button\"";
			if($pag_atual < $paginas) {
				$mais = $pagina + 1;
				$url = "FrVisualizarRel1.php?id=$id&pagina=$mais";
				print " onclick=\"javascript:window.open('".$url."','_self');\"";
			}
			print ">";
			print "</td></tr><tr><td colspan=\"".$colspan."\">&nbsp;</td></tr>";
		} else $limit = null;
		
		$stringsql = "SELECT ".$select." AS GRUPO".$grupo.$from_rel.$imp_where." GROUP BY ".$agrupar.$limit;
		$result = $conecta->query($stringsql);
		if (DB::isError($result)) die ($result->getDebugInfo());
		$rows = $result->numRows();
		if ($rows > 0){
			while($i = $result->fetchRow(DB_FETCHMODE_OBJECT)){
				$pegagrupo = "GRUPO".$grupo;
				$dado = $i->$pegagrupo;
				$dado = addslashes($dado);
				if ($grupo==0) $css_grupo = "grupo0"; else $css_grupo = "grupo";
				print "<tr><td colspan=\"".$colspan."\" class=\"".$css_grupo."\">";
				for ($k=0;$k<$grupo;$k++) print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
				print $dado."</td></tr><tr><td colspan=\"".$colspan."\">&nbsp;</td></tr>";
				$where[$grupo] = $select."='".$dado."'";
				if($grupo==($tam-1)) {
					$addwhere=null;
					for($j=0;$j<=$grupo;$j++){
						if ($j!=0) $addwhere.=" AND ";
						$addwhere.=$where[$j];
					}
					VisualizarRel::RelatorioPrinc($id,$addwhere,$from_rel,$from_form,$base,$template,$template_tipo,$template_nume,$sqlselect,$sqlfrom,$sqlwhere,$sqlorder,$sqlgroup,$sqlformgrup,$colspan);
				} else {
					VisualizarRel::RelatorioGrupo($id,$grupo+1,$agrupar_por,$tam,$where,$from_rel,$from_form,$base,$template,$template_tipo,$template_nume,$sqlselect,$sqlfrom,$sqlwhere,$sqlorder,$sqlgroup,$sqlformgrup,$colspan);
				}
			}
		}
	}
	
	function VisualizarSalvo($id){
		$conecta = Conexao::Conecta();
		$query = "SELECT RELNOME,RELBASE,RELCABECALHO,RELRODAPE,RELTEMPLATE,RELTEMPLATETIPO,RELTEMPLATENUME,RELSQLSELECT,RELSQLFROM,RELSQLWHERE,RELSQLORDER,RELSQLGROUP,RELSQLFORMGRUP,RELSQLFORMREL FROM RELATORIO WHERE RELCODIGO=".$id;
		$result = $conecta->query($query);
		if (DB::isError($result)) die ($result->getDebugInfo());
		$rows = $result->numRows();
		if ($rows > 0){
			$i = $result->fetchRow(DB_FETCHMODE_OBJECT);
			$nomerel = $i->RELNOME;
			$base = $i->RELBASE;
			$cabecalho = $i->RELCABECALHO;
			$cabecalho = str_replace("[[aspas]]","\"",$cabecalho);
			$rodape = $i->RELRODAPE;
			$rodape = str_replace("[[aspas]]","\"",$rodape);
			$template = $i->RELTEMPLATE;
			$template_tipo = $i->RELTEMPLATETIPO;
			$template_nume = $i->RELTEMPLATENUME;
			$sqlselect = $i->RELSQLSELECT;
			$sqlfrom = $i->RELSQLFROM;
			$sqlwhere = $i->RELSQLWHERE;
			$sqlorder = $i->RELSQLORDER;
			$sqlgroup = $i->RELSQLGROUP;
			$sqlformgrup = $i->RELSQLFORMGRUP;
			$sqlformrel = $i->RELSQLFORMREL;
			if ($sqlselect==null) die(""._ERRORELATORIO."");
		} else die(""._RELNAOENCONTRADO."");

		print"<html>
		<head>
		<title>$nomerel</title>
		<link href=\"estilo/visualizar.css\" rel=\"stylesheet\" type=\"text/css\">
		</head>
		<body>
		<p>$cabecalho</p>
		";
		$query = "SELECT * FROM GRAFICO WHERE RELCODIGO=".$id;
		$result = $conecta->query($query); 
		if (DB::isError($result)) die ($result->getDebugInfo()); 
		$rows = $result->numRows(); 
		if ($rows > 0){
			$from_gra = VisualizarRel::From($id,"gra");
			$sqlwhere_gra = str_replace("'","[[aspas]]",$sqlwhere);
			print "<center><iframe width=\"550\" height=\"300\" frameborder=\"0\" scrolling=\"no\"  marginheight=\"0\" marginwidth=\"0\" src=\"GraficoRel.php?id=$id&base=$base&sqlselect=$sqlselect&from_gra=$from_gra&sqlwhere=$sqlwhere_gra\"></iframe></center><br>";
		}
		
		$from_rel = VisualizarRel::From($id,"rel");
		$from_form = VisualizarRel::From($id,"form");
		
		$conecta = Conexao::Conecta();
		$query = "SELECT CAMTITULO FROM CAMPO WHERE RELCODIGO=".$id." ORDER BY CAMORDEM";
		$result = $conecta->query($query); 
		if (DB::isError($result)) die ($result->getDebugInfo()); 
		$colunas = $result->numRows(); 
		if ($template_nume==1) $colspan=$colunas+1; else $colspan=$colunas;
		
		print "<table width=\"100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\" bgcolor=\"#FFFFFF\">";

		$query = "SELECT AGRTABELA,AGRCAMPO FROM AGRUPAMENTO WHERE RELCODIGO=".$id." ORDER BY AGRNIVEL";
		$result = $conecta->query($query);
		if (DB::isError($result)) die ($result->getDebugInfo());
		$grupos = $result->numRows();
		if ($grupos > 0){
			$agrupar_por=null;
			while($i = $result->fetchRow(DB_FETCHMODE_OBJECT)){
				$grup_tab = $i->AGRTABELA;
				$grup_cam = $i->AGRCAMPO;
				$agrupar_por[]="`".$grup_tab."`.`".$grup_cam."`";
			}
			$tam = count($agrupar_por);
			VisualizarRel::RelatorioGrupo($id,0,$agrupar_por,$tam,null,$from_rel,$from_form,$base,$template,$template_tipo,$template_nume,$sqlselect,$sqlfrom,$sqlwhere,$sqlorder,$sqlgroup,$sqlformgrup,$colspan);
		} else VisualizarRel::RelatorioPrinc($id,null,$from_rel,$from_form,$base,$template,$template_tipo,$template_nume,$sqlselect,$sqlfrom,$sqlwhere,$sqlorder,$sqlgroup,$sqlformgrup,$colspan);

		//imprime formulas do relatorio geral
		$conecta = Conexao::Conecta();
		$query = "SELECT FORCAMPO,FORTITULO FROM FORMULA WHERE RELCODIGO=".$id." AND FORAPLICACAO='r' ORDER BY FORORDEM";
		$result = $conecta->query($query);
		if (DB::isError($result)) die ($result->getDebugInfo());
		$rows = $result->numRows();
		if ($rows > 0){
			$formulas=null;
			while($i = $result->fetchRow(DB_FETCHMODE_OBJECT)){
				$campo = $i->FORCAMPO;
				$titulo = $i->FORTITULO;
				$formulas[] = array($campo,$titulo);
			}
			$conecta = Conexao::ConectaRel($base);
			$stringsql = $sqlformrel.$from_form.$sqlwhere;
			$result = $conecta->query($stringsql);
			if (DB::isError($result)) die ($result->getDebugInfo());
			$rows2 = $result->numRows();
			if ($rows2 > 0){
				$i = $result->fetchRow(DB_FETCHMODE_OBJECT);
				for($cont=0;$cont<count($formulas);$cont++) {
					$pegatitulo = "Formula".$formulas[$cont][0];
					$formula = $i->$pegatitulo;
					print "<tr><td colspan=\"".$colspan."\" align=\"right\"><strong>".$formulas[$cont][1]."</strong>: ".$formula."</td></tr><tr><td colspan=\"".$colspan."\">&nbsp;</td></tr>";
				}
			}
		}
		
		print "</table>";

		print"
		<p>$rodape</p>
		</body>
		</html>";
	}
	
	function DadosRel($id){
		$conecta = Conexao::Conecta();
		$query = "SELECT g.GRURELNOME,r.RELNOME,r.RELDATACRIACAO,r.RELDATAEDICAO,r.RELBASE,r.RELUSUEDICAO,r.USUCODIGO FROM RELATORIO r INNER JOIN GRUPOREL g ON(g.GRURELCODIGO=r.GRURELCODIGO) WHERE r.RELCODIGO=".$id;
		$result = $conecta->query($query);
		if (DB::isError($result)) die ($result->getDebugInfo());
		$rows = $result->numRows();
		if ($rows > 0){
			$i = $result->fetchRow(DB_FETCHMODE_OBJECT);
			$grupo = $i->GRURELNOME;
			$nomerel = $i->RELNOME;
			$base = $i->RELBASE;
			$data_criacao = $i->RELDATACRIACAO;
			if($_SESSION["Idioma"]=="brazilian") $data_criacao = Relatorio::InverteData($data_criacao);
			$data_edicao = $i->RELDATAEDICAO;
			if($_SESSION["Idioma"]=="brazilian") $data_edicao = Relatorio::InverteData($data_edicao);
			$usuedicao = $i->RELUSUEDICAO;
			$usucriacao = $i->USUCODIGO;

			$query2 = "SELECT USUUSUARIO FROM USUARIO WHERE USUCODIGO=".$usucriacao;
			$result2 = $conecta->query($query2);
			if (DB::isError($result2)) die ($result2->getDebugInfo());
			$rows2 = $result2->numRows();
			if ($rows2 > 0){
				$j = $result2->fetchRow(DB_FETCHMODE_OBJECT);
				$usucriacao = $j->USUUSUARIO;
			} else $usucriacao=""._USUNAOENCONTRADO."";
			$query2 = "SELECT USUUSUARIO FROM USUARIO WHERE USUCODIGO=".$usuedicao;
			$result2 = $conecta->query($query2);
			if (DB::isError($result2)) die ($result2->getDebugInfo());
			$rows2 = $result2->numRows();
			if ($rows2 > 0){
				$j = $result2->fetchRow(DB_FETCHMODE_OBJECT);
				$usuedicao = $j->USUUSUARIO;
			} else $usuedicao=""._USUNAOENCONTRADO."";
			
			print"<table width=\"50%\" border=\"0\" cellpadding=\"2\" cellspacing=\"4\" bgcolor=\"#FFFFFF\">
			  <tr bgcolor=\"#F8F8F8\">
				<td colspan=\"2\" align=\"center\"><h4>$nomerel</h4></td>
			  </tr>
				<tr bgcolor=\"#F8F8F8\">
				<td width=\"30%\" align=\"right\"><strong>"._GRUPO."</strong></td>
				<td width=\"70%\">$grupo</td>
			  </tr>
				<tr bgcolor=\"#F8F8F8\">
				<td align=\"right\"><strong>"._DATACRIACAO."</strong></td>
				<td>$data_criacao</td>
			  </tr>
				<tr bgcolor=\"#F8F8F8\">
				<td align=\"right\"><strong>"._USUCRIACAO."</strong></td>
				<td>$usucriacao</td>
			  </tr>
				<tr bgcolor=\"#F8F8F8\">
				<td align=\"right\"><strong>"._DATAEDICAO."</strong></td>
				<td>$data_edicao</td>
			  </tr>
				<tr bgcolor=\"#F8F8F8\">
				<td align=\"right\"><strong>"._USUEDICAO."</strong></td>
				<td>$usuedicao</td>
			  </tr>
				<tr bgcolor=\"#F8F8F8\">
				<td align=\"right\"><strong>"._BASEDADOS."</strong></td>
				<td>$base</td>
			  </tr>
			  </table><br><br>";
		}
	}
	
	function VisuImprimeDado($id,$dado,$coluna){		
		$imprimiu=0;	
		for ($j=0;$j<3;$j++){
			if (isset($_POST["cond1".$j."_cor".$coluna])) {
				$cond1 = $_POST["cond1".$j."_cor".$coluna];
				$cont1 = $_POST["cont1".$j."_cor".$coluna];
				$eou = $_POST["eou".$j."_cor".$coluna];
				$corrgb = $_POST["cor".$j."_cor".$coluna];
				$condicao="f";
				$condicao1="f";
				switch($cond1){
					case "LIKE": if(strpos($dado,$cont1) !== false) $condicao1="t"; break;
					case "NOT LIKE": if(strpos($dado,$cont1) === false) $condicao1="t"; break;
					case ">": if ($dado>$cont1) $condicao1="t"; break;
					case ">=": if ($dado>=$cont1) $condicao1="t"; break;
					case "<": if ($dado<$cont1) $condicao1="t"; break;
					case "<=": if ($dado<=$cont1) $condicao1="t"; break;
					case "=": if ($dado==$cont1) $condicao1="t"; break;
					case "!=": if ($dado!=$cont1) $condicao1="t"; break;
				}
				if ($_POST["eou".$j."_cor".$coluna]!="null") {
					$cond2 = $_POST["cond2".$j."_cor".$coluna];
					$cont2 = $_POST["cont2".$j."_cor".$coluna];
					$condicao2="f";
					switch($cond2){
						case "LIKE": if(strpos($dado,$cont2) !== false) $condicao2="t"; break;
						case "NOT LIKE": if(strpos($dado,$cont2) === false) $condicao2="t"; break;
						case ">": if ($dado>$cont2) $condicao2="t"; break;
						case ">=": if ($dado>=$cont2) $condicao2="t"; break;
						case "<": if ($dado<$cont2) $condicao2="t"; break;
						case "<=": if ($dado<=$cont2) $condicao2="t"; break;
						case "=": if ($dado==$cont2) $condicao2="t"; break;
						case "!=": if ($dado!=$cont2) $condicao2="t"; break;
					}
					switch($eou){
						case "AND": if(($condicao1=="t")&&($condicao2=="t")) $condicao="t"; break;
						case "OR": if(($condicao1=="t")||($condicao2=="t")) $condicao="t"; break;
					}
				} else {
					if ($condicao1=="t") $condicao="t";
				}
				if(($condicao=="t")&&($imprimiu==0)) {
					print "<font color=\"#".$corrgb."\">".$dado."</font>";
					$imprimiu=1;
				}
			}
		}
		if($imprimiu==0) print $dado;
	}
	
	function VisuRelatorioPrinc($id,$addwhere,$from_rel,$from_form,$base,$template,$template_tipo,$template_nume,$sqlselect,$sqlfrom,$sqlwhere,$sqlorder,$sqlgroup,$sqlformgrup,$colspan){
		$ordena_campos = GerarRel::OrdenarCampos2();
		$colunas = count($ordena_campos);
		print "<tr>";
		if ($template==1) $fundo1 = "CCCCCC"; else $fundo1 = "9FD9FF";
		if ($template_nume==1) print "<td bgcolor=\"#".$fundo1."\">&nbsp;</td>";
		for($i=0;$i<$colunas;$i++) {
			$titulo = $ordena_campos[$i][1];
			print "<td bgcolor=\"#".$fundo1."\"><strong>".$titulo."</strong></td>";
		}
		print "</tr>";

		$conecta = Conexao::ConectaRel($base);
		if (($sqlwhere==null)&&($addwhere==null)) $where = null;
		else if (($sqlwhere!=null)&&($addwhere!=null)) $where = " ".$sqlwhere." AND ".$addwhere;
		else if (($sqlwhere==null)&&($addwhere!=null)) $where = " WHERE ".$addwhere; 
		else $where = " ".$sqlwhere;
		$stringsql = $sqlselect.$from_rel.$where.$sqlorder;
		$result = $conecta->query($stringsql);
		if (DB::isError($result)) die ($result->getDebugInfo());
		$linhas = $result->numRows();
		if ($linhas > 0){
			$j=1;
			while($i = $result->fetchRow(DB_FETCHMODE_OBJECT)){
				print "<tr>";
				if ($template==1) {
					if ($j%2==0) $fundo = "F5F5F5"; else $fundo = "FFFFFF";
				} else {
					if ($j%2==0) $fundo = "D7EFFF"; else $fundo = "F4FBFF";
				}
				if ($template_nume==1) print "<td bgcolor=\"#".$fundo1."\" width=\"20\" align=\"center\">".$j."</td>";
				for($cont=0;$cont<$colunas;$cont++){
					$pegacoluna = "COLUNA".$cont;
					$dado = $i->$pegacoluna;
					if ($dado==null) $dado="&nbsp;";
					print "<td bgcolor=\"#".$fundo."\">";
					VisualizarRel::VisuImprimeDado($id,$dado,$cont);
					print "</td>";
				}
				print "</tr>";
				$j++;
			}
			print "<tr><td colspan=\"".$colspan."\">&nbsp;</td></tr>";
		}
		
		//imprime formulas do grupo
		if ($sqlformgrup != null){
			$formulas=null;
			$qtd_campos = GerarRel::PegaQtdLinhas(7);
			for($i=0;$i<$qtd_campos;$i++) {
				if ((isset($_POST["tab_formrel".$i]))&&($_POST["tab_formrel".$i]!="null")) {
					if($_POST["uti_formrel".$i]=="g"){
						$formulas[] = array($_POST["cam_formrel".$i],$_POST["tit_formrel".$i]);
					 }
				}
			}
			$conecta = Conexao::ConectaRel($base);
			$stringsql = $sqlformgrup.$from_form.$where.$sqlgroup;
			$result = $conecta->query($stringsql);
			if (DB::isError($result)) die ($result->getDebugInfo());
			$rows2 = $result->numRows();
			if ($rows2 > 0){
				$i = $result->fetchRow(DB_FETCHMODE_OBJECT);
				for($cont=0;$cont<count($formulas);$cont++) {
					$pegatitulo = "FormulaGrupo".$formulas[$cont][0];
					$formula = $i->$pegatitulo;
					print "<tr><td colspan=\"".$colspan."\" align=\"right\"><strong>".$formulas[$cont][1]."</strong>: ".$formula."</td></tr><tr><td colspan=\"".$colspan."\">&nbsp;</td></tr>";
				}
			}
		} 
	}

	function VisuRelatorioGrupo($id,$grupo,$agrupar_por,$tam,$where,$from_rel,$from_form,$base,$template,$template_tipo,$template_nume,$sqlselect,$sqlfrom,$sqlwhere,$sqlorder,$sqlgroup,$sqlformgrup,$colspan){
		$conecta = Conexao::ConectaRel($base);
		$agrupar = null;
		for ($i=0;$i<=$grupo;$i++) {
			if($i!=0) $agrupar .= ", ";
			$agrupar .= $agrupar_por[$i];
		}
		$select = $agrupar_por[$grupo];
		
		$addwhere = null;
		for($j=0;$j<$grupo;$j++){
			if ($j!=0) $addwhere.=" AND "; else $addwhere.=" WHERE ";
			$addwhere.=$where[$j];
		}

		if(($grupo==0)&&($template_tipo==2)) {
			print "<tr><td colspan=\"".$colspan."\" align=\"right\">";
			$stringsql = "SELECT ".$select." AS GRUPO".$grupo.$from_rel.$addwhere." GROUP BY ".$agrupar;
			$result = $conecta->query($stringsql);
			if (DB::isError($result)) die ($result->getDebugInfo());
			$paginas = $result->numRows();
			if(!isset($_GET["pagina"])) $pagina = 0; else $pagina = $_GET["pagina"];
			$limit = " LIMIT $pagina, 1";
			print " <input value=\" &lt; \" type=\"button\"";
			if($pagina > 0) {
				$menos = $pagina - 1;
				$url = "FrVisualizarRel.php?pagina=$menos&ver=1";
				print " onclick=\"javascript:EnviarForm('".$url."',document.form2);\"";
			}
			print "> ";
			$pag_atual = $pagina+1;
			print ""._PAGINA." ".$pag_atual." "._DE." ".$paginas;
			print " <input value=\" &gt; \" type=\"button\"";
			if($pag_atual < $paginas) {
				$mais = $pagina + 1;
				$url = "FrVisualizarRel.php?pagina=$mais&ver=1";
				print " onclick=\"javascript:EnviarForm('".$url."',document.form2);\"";
			}
			print ">";
			print "</td></tr><tr><td colspan=\"".$colspan."\">&nbsp;</td></tr>";
		} else $limit = null;

		$stringsql = "SELECT ".$select." AS GRUPO".$grupo.$from_rel.$addwhere." GROUP BY ".$agrupar.$limit;
		$result = $conecta->query($stringsql);
		if (DB::isError($result)) die ($result->getDebugInfo());
		$rows = $result->numRows();
		if ($rows > 0){
			while($i = $result->fetchRow(DB_FETCHMODE_OBJECT)){
				$pegagrupo = "GRUPO".$grupo;
				$dado = $i->$pegagrupo;
				$dado = addslashes($dado);
				if ($grupo==0) $css_grupo = "grupo0"; else $css_grupo = "grupo";
				print "<tr><td colspan=\"".$colspan."\" class=\"".$css_grupo."\">";
				for ($k=0;$k<$grupo;$k++) print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
				print $dado."</td></tr><tr><td colspan=\"".$colspan."\">&nbsp;</td></tr>";
				$where[$grupo] = $select."='".$dado."'";
				if($grupo==$tam-1) {
					$addwhere=null;
					for($j=0;$j<=$grupo;$j++){
						if ($j!=0) $addwhere.=" AND ";
						$addwhere.=$where[$j];
					}
					VisualizarRel::VisuRelatorioPrinc($id,$addwhere,$from_rel,$from_form,$base,$template,$template_tipo,$template_nume,$sqlselect,$sqlfrom,$sqlwhere,$sqlorder,$sqlgroup,$sqlformgrup,$colspan);
				} else if ($grupo<$tam) {
					VisualizarRel::VisuRelatorioGrupo($id,$grupo+1,$agrupar_por,$tam,$where,$from_rel,$from_form,$base,$template,$template_tipo,$template_nume,$sqlselect,$sqlfrom,$sqlwhere,$sqlorder,$sqlgroup,$sqlformgrup,$colspan);
				}
			}
		}
	}
	
	function Visualizar(){
		$base = $_POST["db"];
		$cabecalho = $_POST["cabecalho"];
		$cabecalho = str_replace("[[aspas]]","\"",$cabecalho);
		$rodape = $_POST["rodape"];
		$rodape = str_replace("[[aspas]]","\"",$rodape);
		$template = $_POST["template"];
		$template_tipo = $_POST["template_tipo"];
		$template_nume = $_POST["template_nume"];
		
		$passo2 = "SELECT";
		$relacionam_from_rel=null;
			$ordena_campos = GerarRel::OrdenarCampos2();
			$tam = count($ordena_campos);
			for($i=0;$i<$tam;$i++) {
				$cam_tab = $ordena_campos[$i][0];
				list ($tabela, $campo) = split(",,,",$cam_tab);
				if ($i!=0) $passo2.=",";
				$passo2.=" `".$tabela."`.`".$campo."` AS COLUNA".$i;
				if ($relacionam_from_rel==null || !in_array($tabela,$relacionam_from_rel)) $relacionam_from_rel[] = $tabela;
			}

		if ($template_nume==1) $colspan=$tam+1; else $colspan=$tam;

		$passo11 = null;
		
		$passo3 = null;
			$qtd_campos = GerarRel::PegaQtdLinhas(3);
			for($i=0;$i<$qtd_campos;$i++) {
				if ((isset($_POST["tab_filt".$i]))&&($_POST["tab_filt".$i]!="null")) {
					if ($relacionam_from_rel==null || !in_array($_POST["tab_filt".$i],$relacionam_from_rel)) $relacionam_from_rel[] = $_POST["tab_filt".$i];
					if ($passo3!=null) $passo3.= " AND";
					if (($_POST["cond1_filt".$i]=="LIKE")||($_POST["cond1_filt".$i]=="NOT LIKE")) $conteudo1="%".$_POST["cont1_filt".$i]."%"; else $conteudo1=$_POST["cont1_filt".$i];
					$passo3.= " (`".$_POST["tab_filt".$i]."`.`".$_POST["cam_filt".$i]."` ".$_POST["cond1_filt".$i]." '".$conteudo1."'";
					if ($_POST["eou_filt".$i]!="null") {
						$passo3.= " ".$_POST["eou_filt".$i];
						$eou = $_POST["eou_filt".$i];
						$cond2 = $_POST["cond2_filt".$i];
						$cont2 = $_POST["cont2_filt".$i];
						if (($cond2=="LIKE")||($cond2=="NOT LIKE")) $conteudo2="%".$cont2."%"; else $conteudo2=$cont2;
						$passo3.= " `".$_POST["tab_filt".$i]."`.`".$_POST["cam_filt".$i]."` ".$cond2." '".$conteudo2."'";
					} else {
						$eou = null;
						$cond2 = null;
						$conteudo2 = null;
					}
					$passo3.= ")";
				}
			}
		if ($passo3!=null) $passo3=" WHERE".$passo3;
		
		$passo5=null;
			$qtd_campos = GerarRel::PegaQtdLinhas(5);
			for($i=0;$i<$qtd_campos;$i++) {
				if ((isset($_POST["tab_agrup".$i]))&&($_POST["tab_agrup".$i]!="null")) {
					if ($relacionam_from_rel==null || !in_array($_POST["tab_agrup".$i],$relacionam_from_rel)) $relacionam_from_rel[] = $_POST["tab_agrup".$i];
					if ($passo5!=null) $passo5.=",";
					$passo5.= " `".$_POST["tab_agrup".$i]."`.`".$_POST["cam_agrup".$i]."`";
				}
			}
		if ($passo5!=null) $passo5=" GROUP BY".$passo5;
		
		$passo6=null;
			$qtd_campos = GerarRel::PegaQtdLinhas(6);
			for($i=0;$i<$qtd_campos;$i++) {
				if ((isset($_POST["tab_ord".$i]))&&($_POST["tab_ord".$i]!="null")) {
					if ($relacionam_from_rel==null || !in_array($_POST["tab_ord".$i],$relacionam_from_rel)) $relacionam_from_rel[] = $_POST["tab_ord".$i];
					if ($passo6!=null) $passo6.=",";
					$passo6.= " `".$_POST["tab_ord".$i]."`.`".$_POST["cam_ord".$i]."` ".$_POST["tipo_ord".$i];
				}
			}
		if ($passo6!=null) $passo6=" ORDER BY".$passo6;

		$passo7grup=null;
		$relacionam_from_form = null;
			$qtd_campos = GerarRel::PegaQtdLinhas(7);
			for($i=0;$i<$qtd_campos;$i++) {
				if ((isset($_POST["tab_formrel".$i]))&&($_POST["tab_formrel".$i]!="null")) {
					if ($relacionam_from_form==null || !in_array($_POST["tab_formrel".$i],$relacionam_from_form)) $relacionam_from_form[] = $_POST["tab_formrel".$i];
					if($_POST["uti_formrel".$i]=="g"){
						if($passo7grup!=null) $passo7grup.=",";
						$passo7grup.=" ".$_POST["tip_formrel".$i]."(`".$_POST["tab_formrel".$i]."`.`".$_POST["cam_formrel".$i]."`) AS FormulaGrupo".$_POST["cam_formrel".$i];
					 }
				}
			}
			if($passo7grup!=null) {
				$passo7grup="SELECT".$passo7grup;
			}

			$relacionam_from_gra = null;
			if (isset($_POST["tab_graf1"])) {
				if (($_POST["tab_graf1"] != null) || ($_POST["tab_graf2"] != null)) {
					$relacionam_from_gra[] = $_POST["tab_graf1"];
					if ($_POST["tab_graf1"] != $_POST["tab_graf2"]) $relacionam_from_gra[] = $_POST["tab_graf2"];
				}
			}

			$qtd_campos = GerarRel::PegaQtdLinhas(11);
			$relacionam_tabela = null;
			$relacionam_usados=null;
			$relacionam_usados2=null;
			for($i=0;$i<$qtd_campos;$i++) {
				if ($_POST["tab_relac1".$i]!="null" && $_POST["tab_relac2".$i]!="null"){
					if ( (in_array($_POST["tab_relac1".$i],$relacionam_from_rel) && ((($relacionam_from_form==null || !in_array($_POST["tab_relac2".$i],$relacionam_from_form)) && ($relacionam_from_gra==null || !in_array($_POST["tab_relac2".$i],$relacionam_from_gra))) || in_array($_POST["tab_relac2".$i],$relacionam_from_rel))) || (in_array($_POST["tab_relac2".$i],$relacionam_from_rel) && ((($relacionam_from_form==null || !in_array($_POST["tab_relac1".$i],$relacionam_from_form)) && ($relacionam_from_gra==null || !in_array($_POST["tab_relac1".$i],$relacionam_from_gra))) || in_array($_POST["tab_relac1".$i],$relacionam_from_rel))) ){
						if ($relacionam_tabela==null || !in_array($_POST["tab_relac1".$i],$relacionam_tabela)) {
							$relacionam_tabela[] = $_POST["tab_relac1".$i];
							$relacionam_usados[] = "`".$_POST["tab_relac1".$i]."`.`".$_POST["cam_relac1".$i]."`";
							$relacionam_usados2[] = "`".$_POST["tab_relac2".$i]."`.`".$_POST["cam_relac2".$i]."`";
						}
						if ($relacionam_tabela==null || !in_array($_POST["tab_relac2".$i],$relacionam_tabela)) {
							$relacionam_tabela[] = $_POST["tab_relac2".$i];
							$relacionam_usados[] = "`".$_POST["tab_relac2".$i]."`.`".$_POST["cam_relac2".$i]."`";
							$relacionam_usados2[] = "`".$_POST["tab_relac1".$i]."`.`".$_POST["cam_relac1".$i]."`";
						}
					}
				}
			}
			if ($relacionam_tabela==null){
				$cam_tab = $ordena_campos[0][0];
				list ($tabela, $campo) = split(",,,",$cam_tab);
				$relacionam_tabela[] = $tabela;
			}
		$from_rel=null;
		$tam = count($relacionam_usados);
		if ($tam>=0) {
			for($i=1;$i<$tam;$i++) {
				$from_rel.=" INNER JOIN `".$relacionam_tabela[$i]."` ON(".$relacionam_usados[$i]."=".$relacionam_usados2[$i].")";
			}
		} 
		$from_rel=" FROM `".$relacionam_tabela[0]."`".$from_rel;
		
		$from_form=null;
		if ($relacionam_from_form!=null) {
			$relacionam_tabela = null;
			$relacionam_usados=null;
			$relacionam_usados2=null;
			for($i=0;$i<$qtd_campos;$i++) {
				if ($_POST["tab_relac1".$i]!="null" && $_POST["tab_relac2".$i]!="null"){
					if ( ((in_array($_POST["tab_relac1".$i],$relacionam_from_rel) || in_array($_POST["tab_relac1".$i],$relacionam_from_form)) && (($relacionam_from_gra==null || !in_array($_POST["tab_relac2".$i],$relacionam_from_gra)) || in_array($_POST["tab_relac2".$i],$relacionam_from_rel) || in_array($_POST["tab_relac2".$i],$relacionam_from_form))) || ((in_array($_POST["tab_relac2".$i],$relacionam_from_rel) || in_array($_POST["tab_relac2".$i],$relacionam_from_form)) && (($relacionam_from_gra==null || !in_array($_POST["tab_relac1".$i],$relacionam_from_gra)) || in_array($_POST["tab_relac1".$i],$relacionam_from_rel) || in_array($_POST["tab_relac1".$i],$relacionam_from_form))) ){
						if ($relacionam_tabela==null || !in_array($_POST["tab_relac1".$i],$relacionam_tabela)) {
							$relacionam_tabela[] = $_POST["tab_relac1".$i];
							$relacionam_usados[] = "`".$_POST["tab_relac1".$i]."`.`".$_POST["cam_relac1".$i]."`";
							$relacionam_usados2[] = "`".$_POST["tab_relac2".$i]."`.`".$_POST["cam_relac2".$i]."`";
						}
						if ($relacionam_tabela==null || !in_array($_POST["tab_relac2".$i],$relacionam_tabela)) {
							$relacionam_tabela[] = $_POST["tab_relac2".$i];
							$relacionam_usados[] = "`".$_POST["tab_relac2".$i]."`.`".$_POST["cam_relac2".$i]."`";
							$relacionam_usados2[] = "`".$_POST["tab_relac1".$i]."`.`".$_POST["cam_relac1".$i]."`";
						}
					}
				}
			}
			if ($relacionam_tabela==null){
				$cam_tab = $ordena_campos[0][0];
				list ($tabela, $campo) = split(",,,",$cam_tab);
				$relacionam_tabela[] = $tabela;
			}

			$tam = count($relacionam_usados);
			if ($tam>=0) {
				for($i=1;$i<$tam;$i++) {
					$from_form.=" INNER JOIN `".$relacionam_tabela[$i]."` ON(".$relacionam_usados[$i]."=".$relacionam_usados2[$i].")";
				}
				$from_form=" FROM `".$relacionam_tabela[0]."`".$from_form;
			}
		}

		$from_gra=null;
		if ($relacionam_from_gra!=null) {
			$relacionam_tabela = null;
			$relacionam_usados=null;
			$relacionam_usados2=null;
			for($i=0;$i<$qtd_campos;$i++) {
				if ($_POST["tab_relac1".$i]!="null" && $_POST["tab_relac2".$i]!="null"){
					if ( ((in_array($_POST["tab_relac1".$i],$relacionam_from_rel) || in_array($_POST["tab_relac1".$i],$relacionam_from_gra)) && (($relacionam_from_form==null || !in_array($_POST["tab_relac2".$i],$relacionam_from_form)) || in_array($_POST["tab_relac2".$i],$relacionam_from_rel) || in_array($_POST["tab_relac2".$i],$relacionam_from_gra))) || ((in_array($_POST["tab_relac2".$i],$relacionam_from_rel) || in_array($_POST["tab_relac2".$i],$relacionam_from_gra)) && (($relacionam_from_form==null || !in_array($_POST["tab_relac1".$i],$relacionam_from_form)) || in_array($_POST["tab_relac1".$i],$relacionam_from_rel) || in_array($_POST["tab_relac1".$i],$relacionam_from_gra))) ){
						if ($relacionam_tabela==null || !in_array($_POST["tab_relac1".$i],$relacionam_tabela)) {
							$relacionam_tabela[] = $_POST["tab_relac1".$i];
							$relacionam_usados[] = "`".$_POST["tab_relac1".$i]."`.`".$_POST["cam_relac1".$i]."`";
							$relacionam_usados2[] = "`".$_POST["tab_relac2".$i]."`.`".$_POST["cam_relac2".$i]."`";
						}
						if ($relacionam_tabela==null || !in_array($_POST["tab_relac2".$i],$relacionam_tabela)) {
							$relacionam_tabela[] = $_POST["tab_relac2".$i];
							$relacionam_usados[] = "`".$_POST["tab_relac2".$i]."`.`".$_POST["cam_relac2".$i]."`";
							$relacionam_usados2[] = "`".$_POST["tab_relac1".$i]."`.`".$_POST["cam_relac1".$i]."`";
						}
					}
				}
			}
			if ($relacionam_tabela==null){
				$cam_tab = $ordena_campos[0][0];
				list ($tabela, $campo) = split(",,,",$cam_tab);
				$relacionam_tabela[] = $tabela;
			}

			$tam = count($relacionam_usados);
			if ($tam>=0) {
				for($i=1;$i<$tam;$i++) {
					$from_gra.=" INNER JOIN `".$relacionam_tabela[$i]."` ON(".$relacionam_usados[$i]."=".$relacionam_usados2[$i].")";
				}
				$from_gra=" FROM `".$relacionam_tabela[0]."`".$from_gra;
			}
		}
		
		print"<p>$cabecalho</p>";

		if (isset($_POST["tab_graf1"])) {
			if (($_POST["tab_graf1"] != null) || ($_POST["tab_graf2"] != null)) {
				$sqlwhere_gra = str_replace("'","[[aspas]]",$passo3);
				print "<center><iframe width=\"550\" height=\"300\" frameborder=\"0\" scrolling=\"no\"  marginheight=\"0\" marginwidth=\"0\" src=\"GraficoRelVisu.php?base=".$base."&sqlselect=".$passo2."&from_gra=".$from_gra."&sqlwhere=".$sqlwhere_gra."&tipo=".$_POST["tip_graf"]."&titulo=".$_POST["tit_graf"]."&tabelax=".$_POST["tab_graf1"]."&campox=".$_POST["cam_graf1"]."&tabelay=".$_POST["tab_graf2"]."&campoy=".$_POST["cam_graf2"]."&legendax=".$_POST["leg_graf1"]."&legenday=".$_POST["leg_graf2"]."\"></iframe></center><br>";
			}
		}

		print "<table width=\"100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\" bgcolor=\"#FFFFFF\">";
		if ($passo5 != null){
			$agrupar_por=null;
			$qtd_campos = GerarRel::PegaQtdLinhas(5);
			for($i=0;$i<$qtd_campos;$i++) {
				if ((isset($_POST["tab_agrup".$i]))&&($_POST["tab_agrup".$i]!="null")) {
					$agrupar_por[]="`".$_POST["tab_agrup".$i]."`.`".$_POST["cam_agrup".$i]."`";
				}
			}
			VisualizarRel::VisuRelatorioGrupo($id,0,$agrupar_por,count($agrupar_por),null,$from_rel,$from_form,$base,$template,$template_tipo,$template_nume,$passo2,$passo11,$passo3,$passo6,$passo5,$passo7grup,$colspan);
		} else VisualizarRel::VisuRelatorioPrinc($id,null,$from_rel,$from_form,$base,$template,$template_tipo,$template_nume,$passo2,$passo11,$passo3,$passo6,$passo5,$passo7grup,$colspan);

		//imprime formulas do relatorio geral
		$passo7=null;
			$qtd_campos = GerarRel::PegaQtdLinhas(7);
			$formulas=null;
			for($i=0;$i<$qtd_campos;$i++) {
				if ((isset($_POST["tab_formrel".$i]))&&($_POST["tab_formrel".$i]!="null")) {
					if($_POST["uti_formrel".$i]=="r"){
						if($passo7!=null) $passo7.=",";
						$passo7.=" ".$_POST["tip_formrel".$i]."(`".$_POST["tab_formrel".$i]."`.`".$_POST["cam_formrel".$i]."`) AS Formula".$_POST["cam_formrel".$i];
						$formulas[] = array($_POST["cam_formrel".$i],$_POST["tit_formrel".$i]);
					 }
				}
			}
			if($passo7!=null) {
				$passo7="SELECT".$passo7;
			}

		if ($passo7 != null){
			$conecta = Conexao::ConectaRel($base);
			$stringsql = $passo7.$from_form.$passo3;
			$result = $conecta->query($stringsql);
			if (DB::isError($result)) die ($result->getDebugInfo());
			$rows2 = $result->numRows();
			if ($rows2 > 0){
				$i = $result->fetchRow(DB_FETCHMODE_OBJECT);
				for($cont=0;$cont<count($formulas);$cont++) {
					$pegatitulo = "Formula".$formulas[$cont][0];
					$formula = $i->$pegatitulo;
					print "<tr><td colspan=\"".$colspan."\" align=\"right\"><strong>".$formulas[$cont][1]."</strong>: ".$formula."</td></tr><tr><td colspan=\"".$colspan."\">&nbsp;</td></tr>";
				}
			}
		}
		print "</table>";
		print"<p>$rodape</p>";
	}
}
?>
Return current item: PHP Report