Ir al contenido


Foto

Es correcto poner este IF THEN anidado asi


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

#1 edchar

edchar

    Member

  • Miembros
  • PipPip
  • 20 mensajes

Escrito 29 enero 2013 - 03:00

Hola amigos al ir pasando mi código a FireBird me he topado con el asunto de poner If THEN anidados
Por eso necesito sus comentarios O me indican si hay una forma mas apropiada para hacerlo pues he buscado en la red y poca información encontré.

Es correcta la forma de anidar varios IF THEN así


      if(old.detalleart != 'Varios') then
      begin
        if(old.codinv = 100) then
        begin
            if(new.cancelado = -1 and old.cancelado = 0) then
            begin
                insert into tbl_ventas (numfact,fachafact,cantidad,detalleart,nomcte,codart,codinv,mtoventa,
                                        orok,orogr,doctipo,mescontable,modart,mcaart,serart,origen,anulada,ganart)
                values(:maxnum, new.fachacancel, old.cantidad, old.detalleart, :nombre, 100, 100, old.valorart,
                old.orok, old.orogr, 'Oro', :txtmonth, 'Oro', 'Oro', 'Oro', 'Apartado', 0, old.ganart );
            end
            else
            begin
              /*Aqui iria el codigo del 3er If Then*/
            end
        end
        else
        begin
              /*Aqui iria el codigo del 2do If Then*/
        end
      end
      else
      begin
            /*Aqui iria el codigo del 1er If Then*/
      end
:


Muchas gracias por la ayuda, Saludos

  • 0

#2 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 29 enero 2013 - 05:04

Pues así lo he usado en mi caso edchar tanto en interbase como firebird, podrías intentar el CASE: http://www.firebirds...upd15-case.html

Saludos
  • 0

#3 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 29 enero 2013 - 05:27

Hola
Seguro no lo entiendo por que no le veo mucho sentido el repetir el if con la rutina que usas, me parece que asi es lo mismo pero mas sencillo:



delphi
  1. IF  OLD.detalleart = 'Varios'  AND  OLD.codinv = 100  AND  OLD.cancelado = 0  AND  NEW.cancelado = -1  THEN
  2.       BEGIN
  3.       INSERT INTO tbl_ventas (numfact,fachafact,cantidad,detalleart,nomcte,codart,codinv,mtoventa,
  4.                                     orok,orogr,doctipo,mescontable,modart,mcaart,serart,origen,anulada,ganart)
  5.                 VALUES(:maxnum, NEW.fachacancel, OLD.cantidad, OLD.detalleart, :nombre, 100, 100, OLD.valorart,
  6.                 OLD.orok, OLD.orogr, 'Oro', :txtmonth, 'Oro', 'Oro', 'Oro', 'Apartado', 0, OLD.ganart );
  7.         END
  8.         ELSE
  9.         BEGIN
  10.         /*Aqui iria el codigo del 3er If Then*/
  11.         END
  12.         END
  13.         ELSE
  14.         BEGIN
  15.         /*Aqui iria el codigo del 2do If Then*/
  16.         END
  17.         END
  18.         ELSE
  19.         BEGIN
  20.         /*Aqui iria el codigo del 1er If Then*/
  21.         END


Saludos
  • 0

#4 edchar

edchar

    Member

  • Miembros
  • PipPip
  • 20 mensajes

Escrito 29 enero 2013 - 09:06

Muchas gracias a ambos después de pensar en lo que me expresan entendí que no necesito anidar varios IF mas bien debo ponerlos como opciones en un mismo IF o que use un case de la misma forma.

Voy a probar y espero que todo salga bien.

Gracias y saludos
  • 0




IP.Board spam blocked by CleanTalk.