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 09-05-2011
el-mono el-mono is offline
Miembro
 
Registrado: abr 2008
Ubicación: Lules
Posts: 176
Poder: 17
el-mono Va por buen camino
Ayuda con Update or Insert

Hola gente necesito de su ayuda.

Resulta estoy haciendo un sistema de liquidación de sueldos al momento de imputar la liquidación (básicamente pasar datos de unas tablas que obtengo de una consulta a mi tabla liquidación - tabla principal para la liquidacion de sueldos) necesito modificar los registros en la tabla liquidación de aquellos conceptos que ya existan o ingresarlos si no fueron cargados todavía y para ello cree un Procedimiento Almacenado que utiliza Update or Insert para este menester.

El problema es que solo me modifica un solo registro y no me inserta los que debe hacerlo.Por ej prepare el siguiente escenario para probar:

La consulta me devuelve 4 registros de los cuales ya tengo cargados dos en la tabla liquidación entonces el procedimiento debería ingresarme los dos registros que no están cargados todavía y modificarme los otros dos, pero solo modifica el ultimo registro que obtiene de la consulta. Algo estoy haciendo mal, pero no lo puedo ver.:cool

Algún iluminado que me ayuda por favor. :D

Aquí pego el código del procedimiento para que vean que estoy haciendo mal.

Begin
ind1 = 0;
ind2 = 0;
ind3 = 0;
ind4 = 0;
ind5 = 0;

for select n.legajo, n.concepto,c.clase, c.periodicidad, n.periodo, n.porcentaje, n.cantidad, n.importe, n.duracion, n.novedad , c.indicador, c.participa, c.tipo, c.acumulador, e.categoria, e.centro_costo from novedades n
left join conceptos c on n.concepto = c.codigo left join empleado e on n.legajo = e.legajo into
:legajo, :concepto, :clase, :periodicidad, :periodo, :porcen, :cantidad, :importe, :duracion, :novedad, :indicador, :participa, :tipo, :acumulador, :categoria, :ccosto
do
begin
if (:indicador = 1) then
ind1 = 1;
else
if (:indicador = 2) then
ind2 = 2;
else
if (:indicador = 3) then
ind3 = 3;
else
if (:indicador = 4) then
ind4 = 4;
else
if (:indicador = 5) then
begin
ind1 = 1;
ind2 = 2;
ind3 = 3;
ind4 = 4;
ind5 = 5;
end

UPDATE or INSERT INTO LIQUIDACION (LEGAJO, CODIGO, CANTIDAD, PORCENTAJE, IMPORTE_UNITARIO, PARTICIPA, DURACION,PERIODICIDAD,VECES, PERIODO_IMPUTADO, NOVEDAD, INDICADOR1, INDICADOR2, INDICADOR3, INDICADOR4, INDICADOR5, TIPO, ACUMULADOR, CENTRO_COSTO, NRO_CATEGORIA, CLASE)
VALUES (:legajo, :concepto, :cantidad, :porcen, :importe, :participa, :duracion, :periodicidad, 0, :periodo, :novedad, :ind1, :ind2, :ind3, :ind4, :ind5, :tipo, :acumulador, :ccosto, :categoria, :clase);
matching(legajo,codigo);
suspend;
end
Responder Con Cita
  #2  
Antiguo 09-05-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
¿ Has utilizado un depurador de Firebird ?.

IBExpert lleva un depurador de procedimientos almacenados, con él podrás seguir la ejecución y comprobar si el bucle genera todos los registros que esperas y asigna las variables tal y como debería.

http://ibexpert.net/ibe/index.php?n=Main.DownloadTrial

NOTA: Tendrás que instalar la Trial de x días, puesto que la versión gratuita de IB-Expert no incorpora este depurador.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 09-05-2011
el-mono el-mono is offline
Miembro
 
Registrado: abr 2008
Ubicación: Lules
Posts: 176
Poder: 17
el-mono Va por buen camino
Guillo muchas gracias no sabia eso, tengo la version completa asi que pruebo con eso.

Saludos
Mario
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
Insert or update dependiendo de pk Joe_Balda Firebird e Interbase 4 13-08-2010 16:04:12
funciones Update e Insert usando libmysql.dll Pook Conexión con bases de datos 3 14-12-2006 21:56:37
Trigger Before (Insert,update,delete)? estebanx MS SQL Server 2 25-05-2006 15:58:19
Problema con Insert y Update en ADOQuery Moises22 SQL 15 11-01-2006 07:57:13
problemas con el insert y el update tiagor64 SQL 5 16-02-2005 17:46:09


La franja horaria es GMT +2. Ahora son las 12:43:20.


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