O problema é que a declaração deve ser validada como booleana, mas por ser uma string, está gerando um erro. Ao exibir a cadeia resultante, está correta; no entanto, se eu a digitar manualmente, funciona corretamente.
Avalados por :
Olá!!!
Estou tentando realizar o filtro (Suprimir) de uma tabela usando um parâmetro, este parâmetro contém os IDs das linhas que desejo mostrar. Inicialmente, estava passando isso como parâmetro:
{HistoricoPagos.Id}<> 995 e {HistoricoPagos.Id}<> 1200 (Desta forma, apenas duas linhas seriam mostradas)
Mas indicava que o resultado desta fórmula deve ser um valor booleano; então pensei em criar uma fórmula no Crystal para gerar a instrução, mas ainda assim dá erro.
O parâmetro que estou passando neste caso é 995,1200.
Local stringvar listagem;
Local stringvar novoId;
Local stringvar filtro;
filtro:= '{HistoricoPagos.Id}';
listagem:= {?Parametro1};
faça
(
se InStr(listagem, ',')-1 = -1 então
novoId:= listagem
senão
novoId:= '<>' + Left(listagem, InStr(listagem, ',')-1);
se Length(filtro) = 0 então
filtro:= filtro + novoId
senão
filtro:= filtro + 'e {HistoricoPagos.Id}<>' + novoId;
se InStr(listagem, ",")-1 = -1 então
O problema é que a declaração deve ser validada como booleana, mas por ser uma string, está gerando um erro. Ao exibir a cadeia resultante, está correta; no entanto, se eu a digitar manualmente, funciona corretamente.
Em seguida, teste seu exemplo colocando os parênteses.
({HistoricoPago.id} <> 920) e ({HistoricoPago.id} <> 1200)
Se isso não funcionar, iremos revisar o erro apresentado no IN.
Obrigado Alejandro, mas também tentei desta forma.
{HistoricoPagos.id} em ({?Parametro1})
No entanto, ele exibe a mensagem "aqui é necessário um intervalo de números".
Pelo que vejo no teu exemplo, parece que estás faltando parênteses entre cada "and".
No entanto, acredito que isso pode ser resolvido de forma mais simples utilizando a função In.
{HistoricoPago.Id} IN (995,1200)
para mostrar apenas os 2 registros com esses IDs, ou como no teu exemplo que diz para serem diferentes, então utilize
{HistoricoPago.Id} NOT IN (995,1200)
Parece que dessa forma você não precisaria dessa função, pois já está enviando a lista separada por ","
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute