Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-12-2011
guachalla guachalla is offline
Registrado
NULL
 
Registrado: dic 2011
Posts: 3
Poder: 0
guachalla Va por buen camino
Procedimientos Almacenados

Buenas noches...

Disculpen la molestia, soy nuevo en el foro, tengo una pregunta:

Tengo una tabla (solo para el control de los pagos, no de detalle de pagos que es otra tabla) donde se almacenan los datos de los pagos de los alumnos con los siquientes campos:
codigo, concepto, nro_cuota, monto_cuota, pagos_cuota, saldo_cuota, estado, cod_de_concepto
11....... PENSION .......1 ...........100 ...............0 ................100 ...........D ...........1
11....... PENSION .......2 ...........100 ...............0 ................100 ...........D ...........1
11....... PENSION .......3 ...........100 ...............0 ................100 ...........D ...........1
11....... PENSION .......4 ...........100 ...............0 ................100 ...........D ...........1
11....... PENSION .......5 ...........100 ...............0 ................100 ...........D ...........1
11....... PENSION .......n ...........100 ...............0 ................100 ...........D ...........1


Quisiera crear un procidimiento para que segun un monto(parametro) se actualice los datos supongamos que le envio 250 como parametro y en la tabla se deberia de actualizar de la siguiente manera

codigo, concepto, nro_cuota, monto_cuota, pagos_cuota, saldo_cuota, estado, cod_de_concepto
11....... PENSION .......1 ...........100 .............100 ................0 .............C ...........1
11....... PENSION .......2 ...........100 .............100 ................0 .............C ...........1
11....... PENSION .......3 ...........100 ..............50 ................50 ............P ...........1
11....... PENSION .......4 ...........100 ...............0 ................100 ...........D ...........1
11....... PENSION .......5 ...........100 ...............0 ................100 ...........D ...........1
11....... PENSION .......n ...........100 ...............0 ................100 ...........D ...........1

creo que se podria hacer con tres updates desde el cliente pero lo que quisiera es si se podria hacer un procedimiento almacenado donde solo envio el parametro del monto cobrado para que se procese en el servidor.

Gracias por sus comentarios y su ayuda.

Última edición por guachalla fecha: 31-12-2011 a las 01:32:16.
Responder Con Cita
  #2  
Antiguo 31-12-2011
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 18
Cañones Va por buen camino
En cuanto a usar un SP para esto me parece correcto ya que optimizas el uso de la red con el servidor.
Y el servidor es.....?
Saludos.
Responder Con Cita
  #3  
Antiguo 31-12-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.
Responder Con Cita
  #4  
Antiguo 31-12-2011
guachalla guachalla is offline
Registrado
NULL
 
Registrado: dic 2011
Posts: 3
Poder: 0
guachalla Va por buen camino
Gracias por sus comentarios, el servidor es Firebird 2.0, gracias
Responder Con Cita
  #5  
Antiguo 02-01-2012
guachalla guachalla is offline
Registrado
NULL
 
Registrado: dic 2011
Posts: 3
Poder: 0
guachalla Va por buen camino
Ya cree el SP siguiente:
Código SQL [-]
CREATE PROCEDURE ACT_COBRANZ(
  COD INTEGER,
  MONTO NUMERIC(12, 2),
  CODCON INTEGER)
AS
DECLARE VARIABLE MONTOX NUMERIC(12, 2);
DECLARE VARIABLE ESTADOX CHAR(1);
DECLARE VARIABLE CODX INTEGER;
DECLARE VARIABLE CODCONX INTEGER;
DECLARE VARIABLE NCUX SMALLINT;
DECLARE VARIABLE PRIMERPAGO SMALLINT;
DECLARE VARIABLE CUOTAX SMALLINT;
DECLARE VARIABLE DEUDOR CHAR(1);
DECLARE VARIABLE CUOTAACT SMALLINT;
DECLARE VARIABLE DEUDA_BSX NUMERIC(12, 2);
DECLARE VARIABLE DEUDA_ACT NUMERIC(12, 2);
BEGIN
  CODCONX = CODCON;
  CODX = COD;
  MONTOX = MONTO;
  CUOTAX = 0;
  DEUDOR = 'D';
  CUOTAACT = 0;

  WHILE (MONTOX>0)DO
      BEGIN
      FOR SELECT CNU,ESTADO,DEUDA_BS FROM COBRANZ 
      WHERE (COBRANZ.CODIGO=:CODX AND COBRANZ.OC =:CODCONX)
      INTO :CUOTAX,:ESTADOX,EUDA_BSX DO
      BEGIN
            IF (ESTADOX=DEUDOR) THEN
               CUOTAACT=CUOTAX;
               DEUDA_ACT=DEUDA_BSX;
            
            IF (MONTOX>=DEUDA_ACT) THEN
                BEGIN
                  UPDATE COBRANZ SET PAGO_BS =PAGO_BS+EUDA_ACT,DEUDA_BS=0,ESTADO='C' 
                  WHERE OC=:CODCONX AND CODIGO=:CODX AND CNU=:CUOTAX;
                  MONTOX = MONTOX - DEUDA_ACT;                         
                END
            else
            BEGIN
                UPDATE COBRANZ SET PAGO_BS =PAGO_BS+:MONTOX,DEUDA_BS=CARGO_BS-:MONTOX,ESTADO='D'
                 WHERE OC=:CODCONX AND CODIGO=:CODX AND CNU=:CUOTAX;
                 MONTOX = 0;
            END
      END
  END    
 
END;


sin embargo a veces sale un mensaje de conflicto de bloqueo en el primer UPDATE COBRANZ que estara mal? les agradezco su tiempo y ayuda
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
Procedimientos Almacenados ANALILIAHUJA SQL 2 17-12-2007 15:32:07
Procedimientos almacenados AS/400 Carlos A Ortega DB2 1 12-12-2006 00:32:39
procedimientos almacenados Gabriel2 SQL 1 13-01-2005 14:50:09
Procedimientos Almacenados tuto Conexión con bases de datos 0 08-11-2004 14:42:05
Procedimientos almacenados VS UDF rqc Firebird e Interbase 6 18-03-2004 01:29:46


La franja horaria es GMT +2. Ahora son las 09:03:34.


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