• Sábado 4 de Mayo de 2024, 05:03

Autor Tema:  Sql Server No Me Acpeta Iif  (Leído 3460 veces)

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Sql Server No Me Acpeta Iif
« en: Jueves 6 de Marzo de 2008, 18:16 »
0
Hola gente como estan, uno pasando por algo en lo que uno lleva rato dandole y no funciona por algo que uno no ha visto que pueda ser.

Una pregunta, ¿las bases de datos SQL Server? (SQL 2000) permite IIF en las sentencias SQL? porque si me ha servido en Access pero en SQL no me deja.

Esta SQL no me funciona en VB6, la probe en el Manager Adm, del SQL directo en la tabla, y en el Analizador de Consultas de las utilidades del SQL Server, es decir, las IIF en SQL son algo sencillo, no sé porque SQL considera que es error de sintaxis, con colocar IIF(campo=valor,'Algo','Nada') deberia de funcionar.

    strSQL = "Select R.id_reclamo AS 'ID', "
    'strSQL = strSQL & "IIF(R.tipo_cliente=1,'CONSULTOR','CLIENTE') AS 'Tipo Cliente', "
    strSQL = strSQL & "C.nombres AS 'Nombre', C.apellidos AS 'Apellido', "
    strSQL = strSQL & "R.fecha_creacion AS 'Fecha', R.resuelto AS 'Resuelto', "
    strSQL = strSQL & "R.status AS 'Status', R.nivel_prioridad AS 'Nivel' "
    strSQL = strSQL & "From REGISTRO_RECLAMO AS R, clientes AS C "
    strSQL = strSQL & "Where R.cedula=C.cedula "
    strSQL = strSQL & "Order by R.fecha_creacion"
    Set rsDatos = New Recordset
    rsDatos.Open strSQL, cnnConex, adOpenStatic, adLockOptimistic


Realmente no sé porque una validacion IIF de SQL no la acepta SQL Server, alguien sabe, o le ha pasaod algo como esto?

Saludos  :comp:
Si esto es Leído por accidente, induzca al vomito

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Sql Server No Me Acpeta Iif
« Respuesta #1 en: Viernes 7 de Marzo de 2008, 02:16 »
0
Que cosas interesantes aprende uno en el camino de la programación.

La función IIF muy bien valida y permitida en Access, no la acepta SQL Server, sino un equivalente de esta para SQL Server, el cual es CASE...WHEN...THEN...ELSE...END

SELECT campo1, (CASE campo2 WHEN 'X' THEN 'Y' ELSE 'Z' END) AS Campo2 FROM Tabla.

Entonces mi consulta anterior quedaria asi:

Select R.id_reclamo AS 'ID',
(CASE R.tipo_cliente WHEN 1 THEN 'CONSULTOR' ELSE 'CLIENTE' END) AS 'Tipo Cliente',
C.nombres AS 'Nombre', C.apellidos AS 'Apellido',
R.fecha_creacion AS 'Fecha',
(CASE R.resuelto WHEN 0 THEN 'NO' ELSE 'SI' END) AS 'Resuelto',
R.status AS 'Status', R.nivel_prioridad AS 'Nivel'
From REGISTRO_RECLAMO AS R, clientes AS C
Where R.cedula=C.cedula
Order by R.fecha_creacion

Mejor y me mato :D
Si esto es Leído por accidente, induzca al vomito