Conversión de claves de búsqueda numéricas en cadenas en las consultas
Se puede producir un error si el origen de datos no convierte los elementos de datos numéricos en cadenas. Una solicitud de búsqueda está asociada a una consulta que no se ejecuta cuando se representa la solicitud de búsqueda la primera vez. Al escribir una cadena de búsqueda se filtra la consulta y los resultados se muestran en un cuadro de lista. El servidor de informes no comprueba el tipo de datos del elemento de consulta filtrado porque la mayoría de los orígenes de datos convierten el elemento de datos en una cadena (varchar) y el filtro es válido. Sin embargo, algunos orígenes de datos, como Teradata, no realizan la conversión, lo que genera un error.
Puede utilizar el valor RSVP.PROMPT.CASTNUMERICSEARCHKEYTOSTRING para convertir los elementos de datos numéricos en formato de cadena (varchar). El valor predeterminado para el valor es Falso (sin conversión). Para habilitar la conversión, establézcalo en Verdadero.
El mensaje de error se produce cuando se ejecuta un informe de Report Studio o Query Studio:
RQP-DEF-0177 Se ha producido un error al realizar la operación 'sqlPrepareWithOptions' status='-69' UDA-SQL-0043 La base de datos subyacente ha detectado un error durante el procesamiento de la solicitud SQL.[NCR][Controlador Teradata ODBC][Base de datos Teradata] La cadena parcial coincidente necesita operandos de caracteres
Ejemplo de elemento de datos no convertido
[data item] starts with '20'
[data item] contains '123'
O una combinación booleana:
[data item] starts with '2' AND [data item] contains '009' OR [data item] contains '119'
Ejemplo de elemento de datos no convertido con función lower
Si la búsqueda no distingue entre mayúsculas y minúsculas, estas expresiones contendrán la función lower, que tiene más sentido al buscar en elementos de datos de cadena que en numéricos.
lower([data item]) starts with lower('20')
lower([data item]) contains ('123')lower
([data item]) starts with lower('2') AND lower([data item]) contains lower('009') OR lower([data item]) contains lower('119')
Ejemplo de elemento de datos convertido en cadena
cast([data item], varchar(128)) starts with '20'
cast([data item], varchar(128)) contains '123'
cast([data item], varchar(128)) starts with '2' AND cast([data item], varchar(128)) contains '009' OR cast([data item], varchar(128)) contains '119'