Ver Mensaje Individual
  #2  
Antiguo 11-06-2008
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 295
Reputación: 22
afxe Va por buen camino
Quizás peque de ignorante.

Quizás peque de ignorante, pero creo que un Select no devuelver un valor, ni se puede evaluar como un resultado. Yo lo haría así:


Código:
 
AS
   DECLARE VARIABLE Valor FLOAT;
begin   
  if (New.costounitario <> Old.costounitario) then   begin      
           Insert Into Historicocostos (codigo, codigoproducto, costoanterior, costonuevo, fechacambio, UsuarioCambio) 
              values (Coalesce((Select Max(Codigo) from HistoricoCostos 
              where codigoproducto = new.codigo), 0) + 1, new.codigo, Old.costounitario, New.costounitario, current_date, New.UsuarioModificado);      
    New.ultimocosto = Old.costounitario;      
    if (New.costopromedio <> 0) then      
       begin        
         select avg(costonuevo) from historicocostos           
            where codigoproducto = New.codigo          
            into :Valor;         
         New.CostoPromedio = Valor;      
       end      
     else      
       begin         
         New.costopromedio = New.costounitario;      
       end   
    endend
Saludos
Responder Con Cita