Sentencia SQL con un CASE que no funciona

A quien me pueda echar una mano.
Tengo un Datagridview que relleno a través de un DataSet con los datos que obtengo de una base de datos access a través de una consulta SQL.
Uno de los campos es un boolean, que muestra si una factura de un cliente está pagada o no. El caso es que el DatagridView muestra "TRUE" o "FALSE", pero yo quiero, claro está, que muestre "SI" o "NO".
Para ello, en la consulta que realizo a la base de datos he metido un CASE y la he construido de la siguiente manera:
Dim sql As String = "SELECT facturaCliente.facturaId,facturaCliente.Numero,cliente.Nombre AS Cliente," &
        "facturaCliente.Fecha, facturaCliente.Importe," &
        "CASE WHEN facturaCliente.Pagada = 1 THEN 'Si' ELSE 'No' END,facturaCliente.FechaPago AS Fecha Cobro," &
        "facturaCliente.FechaDia AS Fecha Hoja " &
        "FROM cliente INNER JOIN facturaCliente ON cliente.clienteId=facturaCliente.Cliente " &
        "WHERE Year(facturaCliente.Fecha) =" & año &
        " ORDER BY facturaCliente.facturaId;"
Al ejecutar la consulta me sale una excepción:
Error de IErrorInfo.GetDescription con E_FAIL(0x80004005).
Pero he repasado la query un montón de veces y no encuentro el error.
Tengo que decir que si quito el CASE, la query funciona perfectamente.
Gracias de antemano.
JDavila

1 Respuesta

Respuesta
1
El CASE de T-SQL no funciona de esa manera en Access, entonces...
Reemplaza esto :
CASE WHEN facturaCliente.Pagada = 1 THEN 'Si' ELSE 'No' END
con esto otro:
IIF(facturaClientePagada=1,'Si','No')
Funciona perfectamente, la solución llega un poco tarde ya que la había encontrado por otros medios, pero puntúo igualmente porque es la que me funcionó en su día y la culpa es mía por no haber quitado la pregunta del tablón.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas