Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Facturas a 30,45,60,90 y 120 dias. como hacerlo?

Hola compañeros, necesito que me den un empujoncito con algo al que no tengo idea de como entrarle, sucede que el cliente me ha pedido una especie de historico de facturas que estan en los 30, 45...dias, ejemplo:

Cita:
Factura ------30 dias------45 dias------60 dias------90 dias------120+

0311 ------3,000.00------------------------------------------------
0312 -------------------4,500.00-----------------------------------
0313 -------------------8,750.00-----------------------------------
0314 ------------------------------11,700.00-----------------------
las facturas ya estan registradas, no se si eso se hace con una consulta sql o alguna especie if anidados, de veras no se, si se hace partir de la fecha de la factura o se hace de otra manera, realmente no se como entrarle, espero que me puedan dar una idea un pequeño empujoncito.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #2  
Antiguo 16-10-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
En SQL Server harías algo como:
Código SQL [-]
Select F.Factura,
case when datediff(dd, F.FechaFactura, GetDate()) <30 then F.Monto else 0 end dias30,
case when datediff(dd, F.FechaFactura, getdate()) between 31 and 45 then F.Monto else 0 end dias45
case when datediff(dd, F.FechaFactura, getdate()) between 46 and 60 then F.Monto else 0 end dias60
...
...
From Facturas F
where ...
__________________


Última edición por ContraVeneno fecha: 16-10-2007 a las 01:13:16.
Responder Con Cita
  #3  
Antiguo 16-10-2007
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
En SQL Server harías algo como:
Código SQL [-]Select F.Factura,
case when datediff(dd, F.FechaFactura, GetDate()) <30 then F.Monto else 0 end 30dias,
case when datediff(dd, F.FechaFactura, getdate()) between 31 and 45 then F.Monto else 0 end 45dias
case when datediff(dd, F.FechaFactura, getdate()) between 46 and 60 then F.Monto else 0 end 60dias
...
...
From Facturas F
where ...
El problema es que lo que supongo que quiere hacer es ACUMULAR las facturas que caigan en este rango, para un analisis de cobranza. Con este query no se acumulan estas cantidades.
Responder Con Cita
  #4  
Antiguo 16-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola Contraveneno ese codigo me serviria con bases de datos en mysql? como lo tengo que implementarlo? por codigo o a traves de un Tquery normalmente?

Cita:
El problema es que lo que supongo que quiere hacer es ACUMULAR las facturas que caigan en este rango, para un analisis de cobranza. Con este query no se acumulan estas cantidades.
lo que quiero hacer es un reporte de las facturas que caigan en los rangos de dias mencionados mas arriba, como dices tu juanelo, para un analisis de cobranza y llevar un control del tiempo que tiene cada fatura desde la fecha facturada.

Saludos
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #5  
Antiguo 16-10-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
para MySQL me declaro ignorante en el tema...

la clave sería que pudieras utilizar algo como el CASE de SQL Server para definir el rango de días y obviamente, alguna función que te diga la diferencia de días, que es lo que hace la función "DateDiff" en SQL Server...

Pero yo desconozco que funciones te ayudarían a hacer esto en MySQL
__________________

Responder Con Cita
  #6  
Antiguo 16-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola ContraVeneno, hice una busqueda en google y encontre esto:

Cita:
DATEDIFF(). Esta función obtiene la diferencia, en días, entre dos fechas. Ejemplo : SELECT DATEDIFF(‘2005-4-1’,’2004-5-30’);
Este query produce 306, lo que significa que del 30/5/2004 al 1/4/2005 van 306 días.
y este ejemplo donde usan case y end:

Código SQL [-]
SELECT
             CASE DAYOFWEEK(CURDATE())
                  WHEN 1 THEN 'Domingo'
                  WHEN 2 THEN 'Lunes'
                  WHEN 3 THEN 'Martes'
                  WHEN 4 THEN  CONCAT('Mi',CHAR(130),'rcoles')
                  WHEN 5 THEN 'Jueves'
                  WHEN 6 THEN 'Viernes'
                  WHEN 7 THEN  CONCAT('S',CHAR(160),'bado')
             END AS Dia_de_la_Semana;

al parecer usan la mismas funciones, entonces eso indica que puedo usarlo con TQuery?

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #7  
Antiguo 16-10-2007
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Hola,
Lo que no terminas de explicar es que si tu intencion es obtener esta informacion mediante una sentencia SQL, ademas de esto hay un concepto bien importante que es el de fecha de vencimiento (o de corte para algunos) y que es desde donde se empieza a contar para los dias que han transcurrido y que no se ha efectuado el pago.

En mi caso yo he tenido la necesidad de elaborar un reporte de este tipo, y dada la definicion de la base de datos que ya existia (es un programa comercial de terceros) pues me di a la tarea de hacer y acumular los datos en un ClientDataSet, y me funciona de maravilla, eso si, hay que seleccionar todas las facturas de un periodo dado y recorrerlas a "mano" e ir acumulando como se requiera en un CDS con sus campos correspondientes a 30,60,90 ... etc dias de vencimiento (tomando como fecha de referencia la fecha de vencimiento de la factura).
Saludos
Responder Con Cita
  #8  
Antiguo 16-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Primer Problema: todas las facturas me caen en el rango de 30 dias sin importar que la factura tenga mas de 45 dias o 60 que existen en la base de datos:

Código SQL [-]
SELECT CASACOMERCIAL, FACTURA,
CASE WHEN datediff( FECHAFACTURA, CurDate( ) ) < 30
THEN VALOR
ELSE 0
END AS dias30,
CASE WHEN datediff( FECHAFACTURA, Curdate( ) )
BETWEEN 31
AND 45
THEN VALOR
ELSE 0
END AS dias45,
CASE WHEN datediff( FECHAFACTURA, Curdate( ) )
BETWEEN 46
AND 60
THEN VALOR
ELSE 0
END AS dias60,
CASE WHEN datediff( FECHAFACTURA, CurDate( ) )
BETWEEN 61
AND 90
THEN VALOR
ELSE 0
END AS dias90,
CASE WHEN datediff( FECHAFACTURA, CurDate( ) )
BETWEEN 91
AND 120
THEN VALOR
ELSE 0
END AS dias120,
CASE WHEN datediff( FECHAFACTURA, CurDate( ) )  > 120
THEN VALOR
ELSE 0
END AS mas120
FROM tabla2



Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #9  
Antiguo 16-10-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Agrega un campo que te diga cuantos días te devuelve la función datediff para que verifiques el cálculo. A mi me funciona perfectamente.

Código SQL [-]
SELECT CASACOMERCIAL, FACTURA, datediff(fechafactura, curdate()), 
case when....
.....
__________________

Responder Con Cita
  #10  
Antiguo 16-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
mira los resultados:

http://img524.imageshack.us/img524/2...nsulta3fp1.jpg

__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #11  
Antiguo 16-10-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
A pues muy sencillo...
en lugar de ser:
datediff (FechaFactura, CurDate())

debería ser:
datediff(CurDate(), FechaFactura)


Este pequeño detalle no se presenta en SQL Server por la forma en que calcula los días la función datediff, en donde no importa el orden en que pongas las fechas... pero según veo, en MySQL si importa el orden de las fechas.
__________________


Última edición por ContraVeneno fecha: 16-10-2007 a las 17:41:32.
Responder Con Cita
  #12  
Antiguo 16-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
AHORA SI!!!!, de nuevo muchas gracias!!!!.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tabla de Facturas vs Detalles de Facturas magnu9 Conexión con bases de datos 9 27-07-2007 17:27:37
como hacerlo?¿ tiagor64 Conexión con bases de datos 4 09-02-2005 15:55:04
Cómo hacerlo ... Jordy Conexión con bases de datos 2 19-08-2004 10:21:39
Campos calculados, facturas y detalles de facturas. Letty Conexión con bases de datos 7 07-11-2003 11:19:44
No se como hacerlo apolo18 Impresión 4 19-05-2003 23:13:27


La franja horaria es GMT +2. Ahora son las 13:43:48.


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