Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-11-2004
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 22
mosorio Va por buen camino
Post Genrar registros a partir de una fecha y numero

Hola compañeros,
Después de tanto tiempo, vuelvo a consultar en el foro, estaba bastante alejado por otras obligaciones que me impedían llegar, pero aqui estamos.
Al grano.
Tengo una fecha ej: 01-10-03 y una cantidad ej: 10. Necesito generar una cantidad de registros = 10 con un campo de fecha a partir de la fecha dada, claro esta que debe ser independiente del dia, es decir el día puede varia a 15-10-03 ó 11-10-03.
He buscado en los otros registros del foro y no he encontrado algo similar que me permita dar un inicio.

Gracias de antemano.
Nota: hacerlo en la misma BD y no en código Delphi.

Gracias nuevamente.
Responder Con Cita
  #2  
Antiguo 04-11-2004
celades celades is offline
No confirmado
 
Registrado: may 2003
Ubicación: Torroella de Montgrí (Girona)
Posts: 42
Poder: 0
celades Va por buen camino
Hola

Lo que he entendido es esto

Código SQL [-]
cREATE PROCEDURE Inserta_dates (data date,n integer)
AS
declare variable i integer;
begin
i=0;
while (:i<:n) do
begin
insert into tabla_dates (data) values (:data+:i);
i=:i+1;
end
end

Saludos
Responder Con Cita
  #3  
Antiguo 05-11-2004
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 22
mosorio Va por buen camino
Lightbulb

Hola, Ya he logrado hacerlo, y por si a alguien le sirve, lo coloco aquí, creo que es importante para alguien que quiera hacer un programa donde se calcular el número de cuotas que se deben pagar en un crédito. Claro que la pega que tengo hasta ahora y que aún no he realizado es el calcular la cuota a partir de una formula dada, que sería lo optimo para el funcionamiento del mismo. Si alguien tiene una idea para completar el procedure que lo ponga aqui.
Ahí va:
Cita:
/* Procedure para generar el número de cuotas de un crédito
04/11/2004 : mosorio
Ver 1.0
*/

CREATE PROCEDURE GENERARCUOTAS (
IDOBLIGA INTEGER, INICIOPAGO DATE, CUOTAS INTEGER,
VALORCUOTA NUMERIC(12,2))
/* Retorna la última fecha de pago */
RETURNS ( FINALIZAPAGO TIMESTAMP)
AS
DECLARE VARIABLE INC INTEGER;
DECLARE VARIABLE DIA INTEGER;
DECLARE VARIABLE MES INTEGER;
DECLARE VARIABLE ANYO INTEGER;
DECLARE VARIABLE FECHACUOTA TIMESTAMP;
BEGIN
DIA = EXTRACT(DAY FROM :INICIOPAGO);
MES = EXTRACT(MONTH FROM :INICIOPAGO);
ANYO = EXTRACT(YEAR FROM :INICIOPAGO);
INC = 1;
FECHACUOTA = CAST(DIA||'/'||MES||'/'||ANYO AS TIMESTAMP);
WHILE (INC <= :CUOTAS) DO
BEGIN
INSERT INTO
DETALLEOBLIGACION (IDOBLIGACION, CUOTANUM, VALOR, FECHA, ESTADO)
VALUES
(:IDOBLIGA, :INC, :VALORCUOTA, :FECHACUOTA, 'PENDIENTE');

MES = MES + 1;
IF (MES = 13) THEN
BEGIN
ANYO = ANYO + 1;
MES = 1;
END
INC = INC + 1;
FECHACUOTA = CAST(DIA||'/'||MES||'/'||ANYO AS TIMESTAMP);
END
FINALIZAPAGO = :FECHACUOTA;
END
Habrán algunas cosas que no le serviran, pero la idea general es esta.
Lo he implementado en Firebird 1.5.1 y funciona correctamente.
El campo de VALORCUOTA, se puede asignar mediante una formula que la genere, esto es lo que aún no se como implementar, ya que como todos los comercios implementan operaciones distintas y porcentajes dif., no se como
hacerlo, es por tanto si alguien tiene aportaciones bienvenida sean.
También se le pueden adicionar cosas, para eso esta o mejorar, a ver que opinan los expertos en SQL, yo soy novato hago lo que puedo.

Saludos

Hago la anotación que he utilizado algún codigo de este mismo foro que me dio la idea y complementarlo.

Última edición por mosorio fecha: 05-11-2004 a las 09:43:19.
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 20:02:18.


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