Ir al contenido



Foto

[RESUELTO] Case o IF paradox


  • Por favor identifícate para responder
5 respuestas en este tema

#1 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 408 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 17 diciembre 2010 - 11:59

hola compañeros, ¿como hago un IF o un case en una sentencia SQL de una tabla paradox?
saludos....
  • 0

#2 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 mensajes

Escrito 17 diciembre 2010 - 12:08

Hola,

Paradox sólo se puede acceder mediante el Borland Database Engine (BDE), que yo sepa, y el BDE utiliza para tablas planas lo que se llama SQL local, que tiene sus limitaciones, desde luego no hay IF ni CASE (Paradox no dispone de procedimientos almacenados).

Si quieres especificar una condición, ponla en la cláusula WHERE, y si lo que buscas es poder juntar registros que cumplan diferentes condiciones y que no puedas conseguir mediante un WHERE, trata de usar una union de consultas, juntando cada una con la siguiente mediante la cláusula UNION.

Habría que ver qué es exactamente lo que quieres obtener.

Saludos
  • 0

#3 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 408 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 17 diciembre 2010 - 12:16



sql
  1. SELECT NUM_REG,CLV_ART, TIPO_MOV,ALMACEN,
  2.                     CASE WHEN TIPO_MOV<51 THEN CANT
  3.                         WHEN TIPO_MOV>50 THEN CANT*-1
  4.                     END AS CANTES
  5.                     FROM MINV01


esta es mas o menos una sentencia que utilizo para el sql server, pero evidentemente no funciona con tablas paradox, quiero pasar esto a paradox.
saludos!
  • 0

#4 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 mensajes

Escrito 17 diciembre 2010 - 12:21

Aunque no lo he probado debería poderse hacer con un UNION, a ver si te sirve:



sql
  1. SELECT NUM_REG, CLV_ART, TIPO_MOV, ALMACEN, CANT
  2. FROM MINV01
  3. WHERE TIPO_MOV < 51
  4.  
  5. UNION
  6.  
  7. SELECT NUM_REG, CLV_ART, TIPO_MOV, ALMACEN, CANT * -1
  8. FROM MINV01
  9. WHERE TIPO_MOV > 50



Naturalmente, el resultado no es el mismo respecto al orden en que te aparecerá, ya que los que cumplan la segunda condición (TIPO_MOV > 50) aparecerán al final. Tampoco se puede esperar de Paradox lo mismo que de SQL Server ^o|
  • 0

#5 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 mensajes

Escrito 17 diciembre 2010 - 12:29

Naturalmente, el resultado no es el mismo respecto al orden en que te aparecerá, ya que los que cumplan la segunda condición (TIPO_MOV > 50) aparecerán al final. Tampoco se puede esperar de Paradox lo mismo que de SQL Server ^o|

Pues acabo de probarlo desde el Database Desktop y me los ha mezclado por orden alfabético, los de la primera con los de la segunda consulta, no me lo esperaba ... :|
  • 0

#6 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 408 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 17 diciembre 2010 - 01:41

hola , gracias por tu ayuda, ya lo solucione, queria migrar los formularios de sql server a paradox por un caso especial que se me dio, pero no ha sido necesario hacer eso, como sea....  gracias por la ayuda::.
saludos!
  • 0