Falha no redirect dentro da consulta

Bom dia.

Tenho um código desenvolvido que analisa se restou apenas um registro no grid após um definição de parâmetros de consulta. A tela de filtro está na imagem:

No evento onValidate do Filtro eu recupero o valor de cada seleção através de variáveis globais:
“[Empresa] = {Empcod};
[Loteamento] = {Ltcod};
[Quadra] = {Ltqdr};
[Lote] = {Ltlot};”

No evento onScriptInit da Consulta inseri o seguinte código para verificação da quantidade de registros retornada pela seleção do filtro:

$Ltlot = [Lote];
if ($Ltlot != ''){
           $Empcod = [Empresa];
           $Ltcod  = [Loteamento];
           $Ltqdr   = [Quadra];
           $sql = "Select COUNT(*) from SENLTQ " . 
                                  "WHERE Empcod = '" . $Empcod . "' " .
                                  "And Ltcod = " . $Ltcod .
                                  "And Ltqdr = '" . $Ltqdr . "' " .
                                 "And Ltlot = '" . $Ltlot . "'";
           sc_select(rs,$sql);
 
           if ($rs->fields[0] == 1){
                      $app = "form_dbo_Quadra_Lote";
                      $target = "_self";
                      $_arr=array(“Empcod”=>$Empcod,"Ltcod"=>$Ltcod,"Ltqdr"=>$Ltqdr,"Ltlot"=>$Ltlot);
                      sc_redir($app, $_arr, $target);
           }
}

Reparem que essa consulta tem um redir caso o SELECT do banco de dados retorne somente um registro.

O filtro funciona como iframe da consulta. Ou seja, o filtro e o resultado da consulta estão na mesma tela conforme a imagem:

No momento em que a consulta identifica que o resultado tem apenas um registro aparece um “alert” na tela com o seguinte código:

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd”>
<HTML DIR=‘LTR’>
<HEAD>
<TITLE></TITLE>
<META http-equiv=“Content-Type” content=“text/html; charset=utf-8” />
<META http-equiv=“Expires” content=“Fri, Jan 01 1900 00:00:00 GMT”>
<META http-equiv=“Last-Modified” content=“Mon, 30 Aug 2021 14:46:25” GMT">
<META http-equiv=“Cache-Control” content=“no-store, no-cache, must-revalidate”>
<META http-equiv=“Cache-Control” content=“post-check=0, pre-check=0”>
<META http-equiv=“Pragma” content=“no-cache”>
<link rel=“shortcut icon” href="…/_lib/img/scriptcase__NM__ico__NM__favicon.ico">
<link rel=“stylesheet” type=“text/css” href="…/_lib/css/bi_SENPAR/bi_SENPAR_error.css" />
<link rel=“stylesheet” type=“text/css” href="…/_lib/css/bi_SENPAR/bi_SENPAR_errorLTR.css" />
</HEAD>
<BODY>
<TABLE class=“scErrorTable” cellspacing=“0” cellpadding=“0” align=“center”>
<TR>
<TD class=“scErrorTitle” align=“left”>Atenção</TD>
</TR>
<TR>
<TD class=“scErrorMessage” align=“center”>Use of undefined constant “Empcod” - assumed ‘“Empcod”’ (this will throw an Error in a future version of PHP)</TD>
</TR>
</TABLE></BODY>
</HTML>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd”>
<HTML>
<HEAD>
<META http-equiv=“Content-Type” content=“text/html; charset=utf-8” />
<META http-equiv=“Expires” content=“Fri, Jan 01 1900 00:00:00 GMT”/>
<META http-equiv=“Last-Modified” content=“Mon, 30 Aug 2021 14:46:25 GMT”/>
<META http-equiv=“Cache-Control” content=“no-store, no-cache, must-revalidate”/>
<META http-equiv=“Cache-Control” content=“post-check=0, pre-check=0”/>
<META http-equiv=“Pragma” content=“no-cache”/>
</HEAD>
<link rel=“shortcut icon” href="…/_lib/img/scriptcase__NM__ico__NM__favicon.ico">
<BODY>
<form name=“Fredir” method=“post”
target="_self">
<input type=“hidden” name=“nmgp_parms” value="“Empcod”?#?04?@?Ltcod?#?4?@?Ltqdr?#?C?@?Ltlot?#?001?@?"/>
<input type=“hidden” name=“nmgp_url_saida” value="">
<input type=“hidden” name=“script_case_init” value=“6827”/>
</form>
<SCRIPT type=“text/javascript”>
window.onload = function(){
submit_Fredir();
};
function submit_Fredir()
{
document.Fredir.target = “_self”;
document.Fredir.action = “/scriptcase/app/biSENPAR/form_dbo_Quadra_Lote/form_dbo_Quadra_Lote.php”;
document.Fredir.submit();
}
</SCRIPT>
</BODY>
</HTML>

Veja como fica na tela do FireFox conforme a imagem:

Esse erro ocorre em todos os navegadores. Estou usando o FireFox como exemplo pois ele mostra a mensagem do alert completa, enquanto os outros navegadores apresentam a mensagem truncada.

O redirecionamento não ocorre. Se apertar F5 para atualização da tela a página é redirecionada porém sem as variáveis indicadas na tela.

Poderiam, por favor, me ajudar?

Eu usaria sc_lookup no lugar de sc_select, e o primeiro e segundo parâmetro do sc_redir não deve ser um variável string e array. Avalie a documentação para saber como deve usar o sc_redir.

Sugestão:

Quando for apresentar código, coloque-o entre [code] e [/code]

Haroldo, bom dia.

Como sempre, obrigado pela presteza na resposta. Vamos aos fatos:

Código alterado conforme sua instrução:

// Verifica se há somente um registro no banco de dados para os parâmetros 
$Ltlot = [Lote];
if ($Ltlot != ''){
	$Empcod = [Empresa];
	$Ltcod	= [Loteamento];
	$Ltqdr	= [Quadra];
	$sql = "Select COUNT(*) from SENLTQ " . 
			"WHERE Empcod = '" . $Empcod . "' " .
			"And Ltcod = " . $Ltcod .
			"And Ltqdr = '" . $Ltqdr . "' " .
			"And Ltlot = '" . $Ltlot . "'";
	sc_lookup(rs,$sql);

	// Se só houver um registro redireciona para a página de lotes
	$cont =  {rs[0][0]};
	if ($cont == 1){
		$app = 'form_dbo_Quadra_Lote.php';
		$target = '_self';
		$_arr=array('Empcod'=>$Empcod,'Ltcod'=>$Ltcod,'Ltqdr'=>$Ltqdr,'Ltlot'=>$Ltlot);
		//sc_redir($app, $_arr, $target);
		sc_redir('form_dbo_Quadra_Lote.php',Empcod=$Empcod;Ltcod=$Ltcod;Ltqdr=$Ltqdr;Ltlot=$Ltlot,'_self');
		//echo 'Passando por aqui!!';
	}
}

Ao invés do sc_select o sc_lookup e passado os parâmetros por string (hardcode) ao invés de variáveis e array. Exatamente o mesmo erro!

Não sei se havia comentado na primeira exposição do problema, mas vamos a uma constatação:
Se eu informar à consulta que o filtro não opera por iframe (ou seja, filtro e consulta em telas diferentes) o código funciona corretamente! No momento de enviar o filtro para a consulta ela redireciona para o form em questão.

Então não tenho problemas com o select, com o retorno do script sql ou com o if. Meu problema está como o ScriptCase constrói o código nesse caso.

Alguma luz???

porque não tenta esse código na onvalidate do filtro?

em iframe, a consulta é executada sem ter passado pelo filtro, por isso ocorre o erro.

Haroldo, bom dia.

Colocando o código no onValidate do Filtro ocorre absolutamente nada.

Vou tentar outras alternativas. Se eu encontrar a resposta coloco aqui para vocês!

Valeu!!!