Sql en una tabla con IIF()

667 views
Skip to first unread message

claudio luna

unread,
Dec 21, 2010, 12:30:24 PM12/21/10
to Comunidad de Visual Foxpro en Español
Hola, estimados.
Tengo la siguiente consulta:
SELECT IIF((DATE() - fvence) > 0,saldo,0) as atraso, ;
IIF((DATE() - fvence) > 0,0,saldo) as corriente, documento ;
FROM movctas ;
WHERE cliente = ncliente and saldo > 0
lo que intenta es obtener los saldo con atraso y corriente pa un
cliente 'ncliente' algo asi.
atraso corriente ncliente documento
155,00 0,00 15 2345
0,00 150,00 15 88
pero en el segundo caso en que la factura no esta vencida me aparece
esto:
0.00 * 15 88
Necesito resolverlo con urgencia,
Desde ya muchas gracias

Ing.Daniel Bojorge

unread,
Dec 21, 2010, 12:32:25 PM12/21/10
to publice...@googlegroups.com
SELECT IIF((DATE() - fvence) > 0,saldo,000000000.0000) as atraso, ;

      IIF((DATE() - fvence) > 0,0,saldo) as corriente, documento ;
     FROM movctas ;
     WHERE cliente = ncliente and  saldo > 0
lo que intenta es obtener los saldo con atraso y corriente pa un
cliente 'ncliente' algo asi.
atraso     corriente   ncliente  documento
155,00          0,00           15          2345
   0,00     150,00            15            88

Donde  000000000.0000  Sería la cantidad de dígitos que tenga tu tabla 

Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)

Yvan GMAIL

unread,
Dec 21, 2010, 12:34:31 PM12/21/10
to publice...@googlegroups.com
Creo que alguna vez me sucedió.. y cuando el if no cumplia en vez de ponerle
"0" creo que le ponía "00000"..

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de claudio luna
Enviado el: Martes, 21 de Diciembre de 2010 12:30 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Sql en una tabla con IIF()

claudio luna

unread,
Dec 21, 2010, 12:38:35 PM12/21/10
to Comunidad de Visual Foxpro en Español
Daniel
Impresionante la prontitud con que me respondiste, muchas gracias,
porque hay que poner 00000.000 cuando devuelve y no 0 ?
Gracias nuevamente


On 21 dic, 14:32, "Ing.Daniel Bojorge" <debs.fo...@gmail.com> wrote:
> SELECT IIF((DATE() - fvence) > 0,saldo,*000000000.0000*) as atraso, ;
>       IIF((DATE() - fvence) > 0,0,saldo) as corriente, documento ;
>      FROM movctas ;
>      WHERE cliente = ncliente and  saldo > 0
> lo que intenta es obtener los saldo con atraso y corriente pa un
> cliente 'ncliente' algo asi.
> atraso     corriente   ncliente  documento
> 155,00          0,00           15          2345
>    0,00     150,00            15            88
>
> Donde  *000000000.0000*  Sería la cantidad de dígitos que tenga tu tabla
>
> Dios L@s Bendiga
>
> Saludos,
>
> Daniel (Con 1 Estrella DCE de Microsoft)
> Nicaragua
>
> "Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas,
> pidan lo que quieran y se les dará.
> (Juan 15:7 DHH)
> Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
> (Jeremías 17:7 RV2000)
>

Ing.Daniel Bojorge

unread,
Dec 21, 2010, 12:43:53 PM12/21/10
to publice...@googlegroups.com
Es porque (según entiendo) el motor de VFP entiende que creará un cursor a partir de tu consulta y si le decís que cuando sea negativo poner 0 eso asume que será Numeric (1,0) y cuando en el cálculo ahí se graba un valor de más de dos dígitos (como 10), no alcanza en el espacio de N(1,0) y por eso pone *.


Estoy con mucho trabajo, pero para desestrezarme un poco estoy leyendo los correos del foro y pues por eso respondí rápido.

---------

Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)



Miguel Canchas

unread,
Dec 21, 2010, 12:59:43 PM12/21/10
to publice...@googlegroups.com

No, no es asi.

 

 

Si en tu primer registro de resultados te sale un valor de 102,00 todo lo demás datos de ese campo tendrán el mismo formato siempre y cuando no sobrepasen ese espacio, ahora que si tu primer valor es 1,20 y los otros valores son 100,20      1500,25       100, 00    1000,22  no los veras mas que con *, por que el espacio del registro que lo precede no tiene el mismo espacio.

 

MK

claudio luna

unread,
Dec 21, 2010, 12:58:34 PM12/21/10
to Comunidad de Visual Foxpro en Español
Daniel,
Nuevamene muchas gracias,
Espero que se te vaya el stress...
Saludos

On 21 dic, 14:43, "Ing.Daniel Bojorge" <debs.fo...@gmail.com> wrote:
> Es porque (según entiendo) el motor de VFP entiende que creará un cursor a
> partir de tu consulta y si le decís que cuando sea negativo poner 0 eso
> asume que será Numeric (1,0) y cuando en el cálculo ahí se graba un valor de
> más de dos dígitos (como 10), no alcanza en el espacio de N(1,0) y por eso
> pone *.
>
> Estoy con mucho trabajo, pero para desestrezarme un poco estoy leyendo los
> correos del foro y pues por eso respondí rápido.
>
> ---------
> Dios L@s Bendiga
>
> Saludos,
>
> Daniel (Con 1 Estrella DCE de Microsoft)
> Nicaragua
>
> "Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas,
> pidan lo que quieran y se les dará.
> (Juan 15:7 DHH)
> Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
> (Jeremías 17:7 RV2000)
>

claudio luna

unread,
Dec 21, 2010, 1:34:04 PM12/21/10
to Comunidad de Visual Foxpro en Español
Miguel,
Muchas gracias a ti también.
Lo que tu me estas diciendo me lo comento Daniel donde dice
"Donde *000000000.0000* Sería la cantidad de dígitos que tenga tu
tabla "
en el primer mensaje.
Para evitar lo que vos me estas aclarando.
Saludos

Luis Maria Guayan

unread,
Dec 21, 2010, 1:46:41 PM12/21/10
to publice...@googlegroups.com
A partir de VFP9 ya puedes utilizar CAST para darle el formato y tipo correcto del dato

SELECT IIF((DATE() - fvence) > 0,saldo,CAST(0 AS Numeric (10,2))) as atraso, ;
...


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

 

Claudio Luna

unread,
Dec 21, 2010, 3:34:34 PM12/21/10
to publice...@googlegroups.com
Luis María
Muchas gracias a ti tambien
Saludos
Reply all
Reply to author
Forward
0 new messages