Existe um bug no SC com o qual peno desde a versão 6 e que existe na V7 e acabei de constatar que, mesmo sendo grave, continua existindo na V8: quando você altera um campo do SQL da Consulta mas mantém o mesmo nome/alias (o que é o normal, para não perder a formatação do campo), o SC não atualiza a configuração interna dele para o respectivo campo.
Como o dito acima soa difícil de entender, vou exemplificar:
Crio uma consulta com o SQL abaixo:
SELECT id_cliente as id_cliente,
nome as nome_cliente,
ind_bloqueado as bloqueado
FROM cliente
Após criar a consulta e testá-la, percebo que o terceiro campo mostra S ou N e quero melhorar isso. Então mudo o select para o abaixo:
SELECT id_cliente as id_cliente,
nome as nome_cliente,
(case ind_bloqueado when ‘S’ then ‘Sim’ else ‘Não’ end) as bloqueado
FROM cliente
Salvo o alteração e tudo ocorre bem, mas quando rodo a consulta ela continua mostrando apenas S ou N, porque o SC não atualizou a “Origem/Cálculo” do campo. O problema é mais grave ainda quando você muda a fórmula porque algum campo dela deixou de existir, pois o PHP exibirá um erro de banco pelo campo não existir.
Até então, estava usando uma solução de contorno que descobri depois de muito quebrar a cabeça: sempre que mudava o cálculo/origem do campo, mudava seu nome/alias. Assim o SC atualiza a “Fonte/Origem”, pois vira outro campo. O problema disso é que preciso refazer toda configuração do campo e mudança em eventos/fórmulas.
Recentemente comecei a usar um recurso mais eficaz e menos trabalhoso: mudar a definição/fonte/origem do campo em alterado direto no banco interno do SC. Com isso não preciso muda o nome dele e reconfigurar tudo. Para quem manipula o banco do SC, esse problema se resolve substituindo o conteúdo dos campos [Campo_Def] e [Def_Campo] da tabela [sc_tbcmp] pela nova fórmula do campo no banco do SC. Mas atenção: faça isso apenas depois de alterar o SQL na consulta e salvar e nunca mexa no banco do SC se não souber bem o que está fazendo, pois seu SC pode parar de funcionar ou, pior, perder todos seus projetos.
Agora aproveito para fazer um apelo à NM: como uma falha tão séria ainda não foi corrigida até hoje, nem na V8?