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

 
 
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
 



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 07:00:54.


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