IIF y Case

18/11/2003 - 15:59 por Raul Romero | Informe spam
Buenos dias a todos ...

Necesito realizar una consulta para ser ejecutada tanto en Access
como en SQL. Mi problema es que hasta ahora la sentencia IIF
solo me funciona en Access y el CASE solo en SQL Server 2000,
existe alguna manera de obtener los mismos resultados en estos 2
gestores, para sentencias donde sean necesarias las instrucciones
anteriormente citadas.

Muchas gracias por cualquier sugerencia,
Raúl

Preguntas similare

Leer las respuestas

#1 Fernando España
18/11/2003 - 16:46 | Informe spam
Creo que en tu interfaz de usuario, deberas colocar una sentencia que te
ejecute uno u otro query dependiendo de a donde se conecte.



Fernando España
Gerente Informatica
Alta Tecnologia en Informatica S.A.
www.atisa.com.gt
7a. calle 4-34 Zona 10
Guatemala Centro America
PBX: (502) 3620005

Email:

****************************************

"Raul Romero" escribió en el mensaje
news:
Buenos dias a todos ...

Necesito realizar una consulta para ser ejecutada tanto en Access
como en SQL. Mi problema es que hasta ahora la sentencia IIF
solo me funciona en Access y el CASE solo en SQL Server 2000,
existe alguna manera de obtener los mismos resultados en estos 2
gestores, para sentencias donde sean necesarias las instrucciones
anteriormente citadas.

Muchas gracias por cualquier sugerencia,
Raúl


Respuesta Responder a este mensaje
#2 dbuendiab
18/11/2003 - 20:58 | Informe spam
"Raul Romero" wrote in message news:...
Buenos dias a todos ...

Necesito realizar una consulta para ser ejecutada tanto en Access
como en SQL. Mi problema es que hasta ahora la sentencia IIF
solo me funciona en Access y el CASE solo en SQL Server 2000,
existe alguna manera de obtener los mismos resultados en estos 2
gestores, para sentencias donde sean necesarias las instrucciones
anteriormente citadas.

Muchas gracias por cualquier sugerencia,
Raúl



El problema es que CASE es mucho más potente que IIF(), de modo que no
se puede pretender trasladar código desde SQL a Access, en el sentido
opuesto se podría intentar:

IIF( expr, exprsi, exprno )

CASE WHEN expr THEN exprsi ELSE exprsno END

Podrías coger la expresión de Access y hacer algo parecido a:

Replace( sql, "IIF(", "CASE WHEN " )
Replace( sql, ",", " THEN " )
Replace( sql, ",", " ELSE " )
Replace( sql, ")", " END " )

pero es complicado, porque debes discriminar las comas, por ejemplo, y
si hay IIFs anidados debes usar un analizador sintáctico que trabaje
recursivamente...

Me parece más sencillo tener dos juegos de instrucciones distintas.

Saludos

Diego Buendia
Barcelona Spain
Respuesta Responder a este mensaje
#3 Raul Romero
18/11/2003 - 22:47 | Informe spam
Muchas gracias Fernando y Diego por sus apuntes.

Saludos,
Raul


"Diego Buendia" wrote in message
news:
"Raul Romero" wrote in message


news:...
> Buenos dias a todos ...
>
> Necesito realizar una consulta para ser ejecutada tanto en Access
> como en SQL. Mi problema es que hasta ahora la sentencia IIF
> solo me funciona en Access y el CASE solo en SQL Server 2000,
> existe alguna manera de obtener los mismos resultados en estos 2
> gestores, para sentencias donde sean necesarias las instrucciones
> anteriormente citadas.
>
> Muchas gracias por cualquier sugerencia,
> Raúl

El problema es que CASE es mucho más potente que IIF(), de modo que no
se puede pretender trasladar código desde SQL a Access, en el sentido
opuesto se podría intentar:

IIF( expr, exprsi, exprno )

CASE WHEN expr THEN exprsi ELSE exprsno END

Podrías coger la expresión de Access y hacer algo parecido a:

Replace( sql, "IIF(", "CASE WHEN " )
Replace( sql, ",", " THEN " )
Replace( sql, ",", " ELSE " )
Replace( sql, ")", " END " )

pero es complicado, porque debes discriminar las comas, por ejemplo, y
si hay IIFs anidados debes usar un analizador sintáctico que trabaje
recursivamente...

Me parece más sencillo tener dos juegos de instrucciones distintas.

Saludos

Diego Buendia
Barcelona Spain
Respuesta Responder a este mensaje
#4 Juan Carlos Leguizamón
18/11/2003 - 23:40 | Informe spam
Hola. No se si sea tu caso pero creo que podrias hacer una vista y con ello
te evitas andar preguntando por los motores en el "frontend". Cuando haces
la vista en Access la defines con el IIF y en SQL con el Case pero la
consulta desde la interfase de usuario la haces igual.

"Raul Romero" escribió en el mensaje
news:
Buenos dias a todos ...

Necesito realizar una consulta para ser ejecutada tanto en Access
como en SQL. Mi problema es que hasta ahora la sentencia IIF
solo me funciona en Access y el CASE solo en SQL Server 2000,
existe alguna manera de obtener los mismos resultados en estos 2
gestores, para sentencias donde sean necesarias las instrucciones
anteriormente citadas.

Muchas gracias por cualquier sugerencia,
Raúl


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida