Tenho uma Consulta que inicia pelo filtro porém quando não são encontrados registros com o filtro aplicado ela exibe a mensagem “Registros não Encontrados” e quando clico em OK ela volta para a a tela do filtro.
O que eu preciso é que ao invés disso exiba um form/alert meu contendo a msg “Deseja incluir um novo ou realizar o filtro novamente?” e redirecionar o usuário para a opção escolhida.
No menu SQL da grid tem um campo, “mensagem de registro inexistente”, altere para desejada.
Crie um botão php como novo registro e redirecione sua grid e deixe o botão sair para voltar para o filtro.
Espero ter ajudado.
Vou tentar sua solução.
Muito Obrigado!
Eu faria diferente:
Na OnValidate do filtro montaria um select com count nas condições do filtro se retorna zero desviaria para uma app de controle fazendo o papel da caixa de confirmação, com os botões retornar ao filtro ou ir para o formulário no modo de inclusão.
Então Haroldo, a query da minha consulta é muito complexa cheia de sub querys case when etc… o ideal mesmo era eu conseguir identificar por exemplo se o “resultset” veio vazio e dai fazer o lance do form como vc disse.
Aproveitando, alguém sabe me dizer se quando eu inicio a consulta pelo filtro ela já executa a query em plano de fundo pra depois filtrar em memória ou monta a query na hora que eu executo o filtro passando os parametros?
Coloque a aplicação em modo debug e descobrirá se executa a query da consulta ou não om modo de inicialização pelo filtro, eu acredito que não, nem faz sentido.
Outra sugestão:
Na onScriptInit execute o where corrente, se for vazio desvie para a app de controle sugerida na minha resposta anterior.
Macro: sc_where_current
Haroldo, pelo debug identifiquei que quando iniciada pelo filtro a consulta realmente não executa a query porém verifiquei um sério problema. Quando aplico um filtro o scriptcase faz o seguinte:
select count(*)
from (select campo1, campo2
from MINHA_QUERY_COMPLEXA)
where campo1 = XPTO and campo2 = R2D2
Ele filtra o resultado da minha query, ou seja, executa toda a query pra depois filtrar. Isso pra mim vai se tornar um problemão pois é uma consulta ira retornar milhões de registros.
Como poderia montar a consulta utilizando uma outra abordagem?
O SC pagina (a não ser que solicitou todos os registros em configuração, o que não faz sentido se pode obter resultado com milhões de registros).
Ë assim que o SC trabalha, ele primeiro faz um count, depois executa a querry para obter os dados da consulta, se tiver que sair disso você deve criar uma consulta sua fora do padrão do SC.
Não teria como substituir a query da consulta passando os parametros do filtro já preenchidos? Isso resolveria meu problema!
você diz um valor padrão para os campos do filtro e inicializando pela consulta?
Não, substituir a query inteira por uma que será montada dinamicamente após aplicar o filtro.
Sem chance, a consulta precisa da query original para criar os campos e configura-los e é em cima desses campos que a consulta vai trabalhar.
Na mão dá para fazer.
Muito Obrigado a quem me ajudou.