PDA

Ver la Versión Completa : Condicionar Columna en consulta


leantec
23-04-2007, 15:51:25
Hola amigos del foro, quisiera saber como puedo hacer para condicionar una columna de una consulta, uso Delphi 7 (InterBase)con Paradox 7, he intentado lo siguiente pero no acepta el operador:

Código SQL [-] (http://www.clubdelphi.com/foros/#)SELECT IIf(Importe>0,Importe,Null)AS Debe FROM CCempre


Esto es una tabla de cuenta corriente , con un campo IMPORTE, que si es positivo va en el Debe, y si es negativo va en el Haber, asi que necesito condicionar solo esta columna dentro de SELECT ya que el reporte se compone con otras columnas fijas, disculpen la falta de lenguaje tecnico, soy novato, mucha gracias....

marcoszorrilla
23-04-2007, 16:00:01
Si utilizas Paradox, no te va a funcionar lo que pretendes. Sin embargo es facil de resolver, como si tiene saldo el Debe en el mismo asiento para la misma Subcuenta, no lo puede tener el Haber, no tienes más que sumar ambos y presentarlos en un tercer campo:

Select Subcta, Contrapartida, concepto, debe+Haber As Saldo
From La_Tabla_Que_Sea

Un Saludo.

basti
23-04-2007, 16:03:25
Si quieres sustituir el IIf puedes hacer dos consultas dentro de una:

select Importe as Debe from CCEmpre where importe > 0
union
select Null as Debe from CCEmpre where importe <= 0

leantec
23-04-2007, 16:46:55
Gracias basti..pero.
Error: Invalid Keyword :Null

Sera muy basico el paradox?

marcoszorrilla: el problema es que estoy copiando un viejo programa en DOS (turbo pascal) y necesito que sea lo mas parecido posible,y tiene que tener (Debe,Haber,Saldo), muchas gracias...

marcoszorrilla
23-04-2007, 16:55:12
Si lo que quieres hacer es una consulta de una Tabla mediante SQL, no tienes más remedio que utilizarlo (el SQL).

Otra solución más a la antigua usanza puede ser generar un fichero de texto con los saldos, recorres la tabla y vas generando los saldos, esto te parece más a la moda OldPascal.

Un Saludo.

basti
23-04-2007, 20:34:17
Tienes razón, parece que el null no lo deja utilizar como valor. Como es un campo numérico, supongo que te valdrá usar el 0 en vez de null.