Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Función CASE...WHEN...THEN...ELSE...END

28 views
Skip to first unread message

Eduardo Olaz

unread,
Jun 26, 2004, 6:46:31 PM6/26/04
to
La estructura Case la tienen tanto MS SQL Server como el estándar ANSI
Yo nunca la he usado con Access.
De hecho tras tu pregunta he intentado implementarla y no he conseguido que
reconozca siquiera al término Case.

De todas formas la puedes sustituir con la función
IIf(expresión, ValorSiCierto,ValorSiFalso)
Puedes encadenar la expresión para múltiples casos:
IIf(Expresión1, ValorSiCierto1,IIf(Expresión2,
ValorSiCierto2,IIf(Expresión3, ValorSiCierto3,IIf(Expresión4,
ValorSiCierto4,ValorSiFalso))))

Saludos desde la calle Estafeta de Pamplona:

Eduardo Olaz
Microsoft [MVP] Access

eduardoALGARROBAolaz.net
ALGARROBA = @

Emilio

unread,
Jun 27, 2004, 5:08:10 AM6/27/04
to
Hola Fer
Tal y como dice Eduardo no puedes usarla y debes usar IIF, pero ten presente
que no puedes encadenar más de 7 IIF en una sola instrucción, tal vez te
convenga crear una función VBA y llamarla desde la consulta, cosa que poca
gente suele hacer y puede ser muy util.

Saludos a tod@s
Emilio

"Eduardo Olaz" <eduardoALGARROBAolaz.net> escribió en el mensaje
news:un3F198...@tk2msftngp13.phx.gbl...

Chea

unread,
Jun 27, 2004, 9:14:58 AM6/27/04
to
Para sustituir a Case, quizás sea mejor la función Switch(). Copie el
ejemplo de la ayuda de Access:

Function MatchUp (NombreCiudad As String)
Matchup = Switch(NombreCiudad = "Londres", "Inglés", NombreCiudad _
= "Roma", "Italiano", NombreCiudad = "París", "Francés")
End Function
--
Saludos.

José Bengoechea Ibaceta [MS-MVP Access]
http://perso.wanadoo.es/j.bchea
"Emilio" <miliuco56 ARROBA Hotmail.com> escribió en el mensaje
news:u6mhFZCX...@tk2msftngp13.phx.gbl...

Flashman

unread,
Jun 28, 2004, 6:13:00 AM6/28/04
to
Hola Fer:

Además de lo que te dicen en este hilo, debes saber que CASE es una
estructura de control y no una función. Este concepto debe quedarte claro.

Por tanto no puedes usarla en una SELECT.

Las estructuras de control son para código VBA puro y duro.

En una SELECT sólo podrás usar funciones del tipo de las propuestas en
este hilo.

Un saludo,
Flashman

Eduardo Olaz

unread,
Jun 28, 2004, 6:45:51 AM6/28/04
to
Una cosa es la estructura Select .. Case ...Case else ... End Select
implementada en la mayor parte de los lenguajes de programación, y otra es
el operador Case con toda su estructura CASE...WHEN...THEN...ELSE...END que
devuelve un valor en función del valor de un campo y que firma parte de la
versión ANSI del SQL así como de otrs versiones como SyBase, SQL Server, y
el SQL de IBM.
Por ejemplo la cadena SQL:
Select idCliente, Provincia,
Case Locate('Madrid', Provincia)
when 0 then 'Fuera de Madrid'
else 'Provincia de Madrid'
end
from Clientes;
sería perfectamente válida en las versiones comentadas.
El ejemplo es un caso simple y puede que con errores ya que lo he escrito
directamente.
Por las pruebas que he hecho, parece ser que Access no lo soporta.

Saludos desde la calle Estafeta de Pamplona:

Eduardo Olaz
Microsoft [MVP] Access

eduardoALGARROBAolaz.net
ALGARROBA = @


"Flashman" <sm...@matgrupo.com> escribió en el mensaje
news:OS2s%23hPXE...@TK2MSFTNGP11.phx.gbl...

Victor Delgadillo

unread,
Jun 28, 2004, 6:56:03 AM6/28/04
to
Dos posibles soluciones:
Una es crearse una funcion en VBA donde incluyes el Select Case ... y que
regrese el valor necesario.
Otra es crear una tabla segun la muestra: Ciudad, Idioma y luego relacionar
con el campo ciudad que deberia existir en la tabla original.

--
Victor Delgadillo [MVP Access]
Miami, Florida

Consultas al grupo, asi todos nos beneficiamos.

"Flashman" <sm...@matgrupo.com> wrote in message
news:OS2s#hPXEH...@TK2MSFTNGP11.phx.gbl...

Flashman

unread,
Jun 28, 2004, 7:35:45 AM6/28/04
to
Hola Eduardo.

Tienes toda la razón. Desconocía este operador. Lo he comprobado en SQL
Server. Sin embargo el Transac de Access no debe soportarlo, al menos yo
no he sido capaz de implementarlo.

Gracias por la aclaración y un saludo,
Flashman.

Fer

unread,
Jun 28, 2004, 8:23:01 AM6/28/04
to
Hola a todos, recien comioenzo a trabajar. Y veo que me han ayudado y mucho, gracias a: Eduardo, Emilio, Chea, Flashman y Victor

Fernando Nuño desde Tucumán - Argentina

"Victor Delgadillo" escribió:

0 new messages