El problema es que la sentencia debe validarse como booleana, pero al ser un string me da error. Al mostrar la cadena resultante, es correcta; sin embargo, si la escribo manualmente, funciona correctamente.
Avalados por :
¡¡¡Hola!!!
Estoy intentando realizar el filtro (Suprimir) de una tabla mediante un parámetro, este parámetro contiene los ID de las filas que quiero mostrar. Inicialmente pasaba esto por parámetro:
{HistoricoPagos.Id}<> 995 y {HistoricoPagos.Id}<> 1200 (De esta manera solo mostraría dos líneas)
Pero me indicaba que el resultado de esta fórmula debe ser un valor booleano; después pensé en crear una fórmula en Crystal para que me creara la sentencia pero igualmente me da error.
El parámetro que paso en este caso es 995,1200.
Local stringvar listado;
Local stringvar nuevoId;
Local stringvar filtro;
filtro:= '{HistoricoPagos.Id}';
listado:= {?Parametro1};
do
(
if InStr(listado, ',')-1 = -1 then
nuevoId:= listado
else
nuevoId:= '<>' + Left(listado, InStr(listado, ',')-1);
if Length(filtro) = 0 then
filtro:= filtro + nuevoId
else
filtro:= filtro + 'y {HistoricoPagos.Id}<>' + nuevoId;
if InStr(listado, ",")-1 = -1 then
El problema es que la sentencia debe validarse como booleana, pero al ser un string me da error. Al mostrar la cadena resultante, es correcta; sin embargo, si la escribo manualmente, funciona correctamente.
Luego, prueba tu ejemplo colocando los paréntesis.
({HistoricoPago.id} <> 920) y ({HistoricoPago.id}<>1200)
Si esto no funciona, revisaremos el error presentado en el IN.
Gracias Alejandro, pero también he intentado de esta manera.
{HistoricoPagos.id} en ({?Parametro1})
Sin embargo, me muestra el mensaje "aquí se requiere un rango de números".
Por lo que veo en tu ejemplo, parece que te faltan paréntesis entre cada uno de los "and".
Sin embargo, creo que se puede resolver de forma más sencilla utilizando la función In.
{HistoricoPago.Id} IN (995,1200)
para mostrar solo los 2 registros con estos ID, o como en tu ejemplo que dice que sean diferentes, entonces utiliza
{HistoricoPago.Id} NOT IN (995,1200)
Me parece que de esta manera no necesitarías esa función porque ya estás enviando el listado separado por ","
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute