Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-11-2004
Avatar de vpepen
vpepen vpepen is offline
Miembro
 
Registrado: nov 2003
Ubicación: Higüey
Posts: 104
Poder: 21
vpepen Va por buen camino
Mostrar diferencia de dos cálculos !!!

Hola Foro:

Tengo el siguiente problemita y espero que me den una mano con esto.

Tengo dos tablas:

Tabla: Cuenta
Codigo
Nombre

Tabla: Movimientos
Fecha
Cod_Cta
Tipo_Mov // 'D' -> Débido, 'C' -> Crédito
Monto

He realizado una consulta para determinar los débidos de una cuenta:

Select Sum(Monto) From Movimientos Where Cod_Cta = '01' and Tipo_Mov = 'D'

Para el caso de los créditos:

Select Sum(Monto) From Movimientos Where Cod_Cta = '01' and Tipo_Mov = 'C'

Ahora bien, necesito determinar el balance de la cuenta, es decir, débidos menos créditos, pero la verdad es que no la pego en eso.

Las gracias anticipadas,

Víctor.-
Responder Con Cita
  #2  
Antiguo 07-11-2004
Tony_G Tony_G is offline
Miembro
 
Registrado: may 2003
Ubicación: Córdoba - España
Posts: 40
Poder: 0
Tony_G Va por buen camino
Hola Víctor.

En MySql la siguiente consulta te devolverá el dato que buscas.

Select Sum(If(Movimientos.Tipo_mov=’D’,Monto,-Monto)) From Movimientos Where Cod_Cta = '01';

Espero que te sirva.

Saludos, Tony.
__________________
TonyG
Responder Con Cita
  #3  
Antiguo 08-11-2004
Avatar de vpepen
vpepen vpepen is offline
Miembro
 
Registrado: nov 2003
Ubicación: Higüey
Posts: 104
Poder: 21
vpepen Va por buen camino
Gracias Tony por la aclaración del tipo de GBD usado. Estoy utilizando InterBase 6 versión 6.

Lamentablemente esa consulta no me funciona en interbase. me envía el siguiente error:

Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, char 11
If
Statement: Select Sum(If(Movimientos.Tipo_mov=’D’,Monto,-Monto)) From Movimientos Where Cod_Cta = '01'

Atte: Víctor.-
Responder Con Cita
  #4  
Antiguo 09-11-2004
Tony_G Tony_G is offline
Miembro
 
Registrado: may 2003
Ubicación: Córdoba - España
Posts: 40
Poder: 0
Tony_G Va por buen camino
Hola Víctor.

El error que te devuelve es (si no me equivoco) porque la versión 6 de Interbase no tiene la función IF(). No sé si en la versión 7 la han incorporado o alguna equivalente.

Como alternativa puedes hacer dos cosas:

a) Haces dos consultas, una para sumar los Débitos y otra para sumar los Créditos y luego restas.

b) Te creas un Procedimiento Almacenado (Stored Procedure) que reciba como parámetro la cuenta que quieres consultar y que devuelva el balance de la misma.

Si la consulta la haces desde distintos puntos del programa quizás sea más conveniente utilizar la opción b).

Espero que esto te sirva de ayuda.

Saludos, Tony.
__________________
TonyG
Responder Con Cita
  #5  
Antiguo 09-11-2004
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Wink

Hola, no sé si con esto se complicaría el tema, pero ¿ y si lo haces en una TADOQuery y añades un campo calculado con la diferencia entre debitos y creditos?, de ese modo tendrías linea a línea dicha diferencia.
Suerte, y espero haber apprtado algo.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
  #6  
Antiguo 09-11-2004
Avatar de vpepen
vpepen vpepen is offline
Miembro
 
Registrado: nov 2003
Ubicación: Higüey
Posts: 104
Poder: 21
vpepen Va por buen camino
Tony, creo que preferiré la opción 'b', ya que me interesa en estos momentos el manejo de la misma no a nivel de procedimientos almacenados.

Por otra parte, Cabanyaler, gracias por responder e interesarte en mí problemita, pero la verdad es que la consulta que estoy haciendo es desde el IBConsole que trae consigo InterBase 6, es decir, no es a nivel de programación.

Las gracias anticipadas,


Víctor.-
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:47:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi