Boa tarde.
Numa consulta, tenho um filtro com somente um campo, sendo este obrigatório. Este campo possui título. O conteúdo deste filtro é carregado num campo select, e é multivalorado.
Quando, inadvertidamente, alguém clica no título e depois no botão pesquisar, o scriptcase não interpreta que o que foi clicado foi o título, e não o conteúdo do campo, não criticando a obrigatoriedade do campo e indo para a grid.
Já tentei resolver a situação de diversas formas, sendo que a última foi tentando barrar essa situação no OnValidate, mas não obtive sucesso.
Alguém teria uma sugestão?
teste o valor do campo no evento onvalidate do flltro.
Haroldo, essa tinha sido minha última tentativa, mas verifiquei que o código não entra no IF:
if ({id_projeto} == ‘’ or {id_projeto} == null) {
sc_error_message(‘Favor informar o projeto’);
sc_error_exit();
}
tente usar empty:
if (empty({id_projeto})) {
sc_error_message(‘Favor informar o projeto’);
sc_error_exit();
}
Também não funcionou, pois o array que contém o campo é inicializado.
Coloquei o var_dump e ele apresenta o seguinte: array(1) { [0]=> string(0) “” }
Tentei também utilizar o count, mas o retorno é 1, e não 0.
$i = 0;
foreach({id_projeto} as $value) {
if (empty($value)) $i++
}
if ($i) {
sc_error_message(‘Favor informar o projeto’);
sc_error_exit();
}
Haroldo, este código consegue detectar quando somente o título está clicado, mas tentei utilizar tua sugestão com algumas variações, tentando o ISSET e outras funções para array, porque sempre dá o mesmo erro:
“PDO::quote() expects parameter 1 to be string, array given”
coloca em modo debug sua aplicação.
se eu estou testando vazio deveria ser não clicado.
Faz desse jeito
if(empty({nome_seu_campo}[0]))
{
sc_error_message(“Campo Obrigatório”);
}
Haroldo,
coloquei no debug do firefox, e o único erro apresentado é: “SyntaxError: expected expression, got ‘<’”, indicando a linha 116 do código. A linha 116 possui o seguinte:
Já no debug do scriptcase, o erro apresentado é:
Atenção
PDO::quote() expects parameter 1 to be string, array given
Script: /opt/NetMake/v9/wwwroot/scriptcase/prod/third/adodb/drivers/adodb-pdo.inc.php (507)
lucasmatsumoto,
o código que você sugeriu apresenta o seguinte erro:
Atenção
PDO::quote() expects parameter 1 to be string, array given
Script: /opt/NetMake/v9/wwwroot/scriptcase/prod/third/adodb/drivers/adodb-pdo.inc.php (507)
colocou no onvalidate?
qual o nome do seu campo? não era pra dar erro…
no onvalidate coloca assim e vê oque retorna
print_r({nome_seu_campo});
sc_error_message(‘teste’);
manda um print ai.
Array ( [0] => )
Esté é o retorno do código abaixo no OnValidate do filtro:
print_r({id_projeto});
sc_error_message(‘Campo obrigatorio’);
A única coisa que estava diferente é que o limitador estava com “;”, mas mudei para “,” e o mesmo erro ocorreu.
comenta todos os códigos do validate se tiver e deixa só esse
if(empty({id_projeto}[0]))
{
sc_error_message(‘Campo Obrigatório’);
}
no seu select usa () no distinct
tipo assim SELECT DISTINCT(id), nome
lucasmatsumoto, agora funcionou.
O que estava causando o erro era o sc_error_exit() após o sc_error_message.
Muito obrigado!