Grid Editável - Macro sc_select_where é possível?

Boa tarde a todos!

Tenho um grid editável que lista os 12 meses do ano para que o usuário preencha os indicadores mensalmente.
Porém, quando um indicador é anual, ele só será preenchido em dezembro.

Para isso tentei utilizar a formula sc_select_where e filtrar se caso o indicador for do tipo 2 (anual), a query só irá buscar o mês 12 que ele deverá preencher.

if ([cod_periodicidade] == '2'){ if(empty({sc_where_current})){ sc_select_where(add)="WHERE mes = '12' AND cod_indicador = {cod_indicador}"; } else{ sc_select_where(add)=" and mes = '12' AND cod_indicador = {cod_indicador}"; } }

Verifiquei que ele está validando corretamente a lógica, porém a macro sc_select_where não está modificando o select da aplicação (que não possui filtro nenhum).

Minhas dúvidas são:
O código acima está correto?
Em qual evento ele deve ser aplicado? pelo que vi no manual seria o OnScriptinit mas os campos ainda aparecem

A sentença errada é

cod_indicador = {cod_indicador}

O campo {cod_indicador} possuirá o mesmo valor sempre ( no evento OnScriptInit).

No evento OnRecord é que o valor deste campo é alterado a cada linha.

Se você retirar esta sentença, o filtro do mês irá funcionar normalmente.

Oi Ronyan, obrigado pelo retorno

Assim você indica?

if ([cod_periodicidade] == '2'){ if(empty({sc_where_current})){ sc_select_where(add)="WHERE mes = '12'"; } else{ sc_select_where(add)=" and mes = '12'"; } }

Fiz isso mas o Grid continua exibindo todos os meses, precisaria que quando fosse carregado o formulário fosse exibido apenas o mês 12

É como se o scriptcase executasse a query “select cod_indicador, ano, mes, valor_realizado from meta_realizada;” e mostrasse todos os doze meses, mas o que eu queria fosse a query “select cod_indicador, ano, mes, valor_realizado from meta_realizada where mes = ‘12’;” mostrando apenas o ultimo mês.

Você está utilizando Formulário Grid Editável… eu pensei que era a aplicação GRID ( Consulta ).

Essa macro só funciona na aplicação Consulta e ReportPDF.

Pro formulário, tem um meio de contornar assim:

Evento OnApplicationInit:

if ([cod_periodicidade] == '2'){
	[loc_where_formulario] = "mes = '12' ";
}else{
        [loc_where_formulario] = "";
}

No item “SQL” em “Clausula WHERE” coloca a variável (apenas ela) :
[loc_where_formulario]

E altera para saída no item "Configurações > Variáveis Globais.

Deve funcionar.

Salvou minha vida!!! tks…

Consegui fazer funcionar, porém meu quicksearch não está mais buscando nada e preciso muito que ele funcione.

Form Grid Editável

Segue o cod no meu OnApplicationInit

if ( [usr_priv_admin] == "N" ) {
	
	sc_lookup(Sup, "SELECT login FROM sec_users WHERE login = '[usuario]' AND SUSupervisor = 'S'");
	
	if (!empty({Sup})) {

		sc_lookup(Logins, "SELECT login FROM sec_users WHERE SupId = '[usuario]'");

		$total = count({Logins});
		$loginSup = "";

		for ( $i = 0; $i < $total; $i++ ) {
			
			$loginSup .= "'".{Logins[$i][0]}."',";

		}

		if (empty({sc_where_current})){
			[loc_where_formulario] = " WHERE login IN(".$loginSup."'[usuario]') AND PCtrStatus <> 'IT'";
		} else {
			[loc_where_formulario] = " AND login IN(".$loginSup."'[usuario]') AND PCtrStatus <> 'IT'";
		}

	}
	else {
		

		if (empty({sc_where_current})){
			[loc_where_formulario] = " WHERE login = '[usuario]' AND PCtrStatus <> 'IT'";
		} else {
			[loc_where_formulario] = " AND login = '[usuario]' AND PCtrStatus <> 'IT'";
		}

	}
	
}
else {

	if (empty({sc_where_current})){
		[loc_where_formulario] = " WHERE PCtrStatus <> 'IT'";
	}
	else{
		[loc_where_formulario] = " AND PCtrStatus <> 'IT'";
	}
	
}

E na Configuração SQL coloquei a var global criada

Cláusula WHERE = [loc_where_formulario]

Ordenação = PCtrNum DESC

Conforme o login e nível de acesso do usuário ele consegue ver somente os contratos ref a ele, porém se utiliza muito o quicksearch para buscar esses contratos por CPF por ex, mas não esta funcionando. Se eu remover este código ele volta a funcionar normalmente.

Se alguém puder me ajudar ficarei muito grato.

Alguém?