Ver Mensaje Individual
  #7  
Antiguo 07-01-2007
Avatar de Io
[Io] Io is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: San Fernando (Cádiz)
Posts: 259
Reputación: 19
Io Va por buen camino
Saludos a todos.
Efectivamente, el formatear el disco no es una solución. Pero era algo que tenía pendiente y aproveche el momento y encontré esa solución parcial.

En contestación a ArdiIIa, el código que utilizo es:

Código:
const

  SP_AE_CLI_NO_HAB =
  'CREATE PROCEDURE SP_AE_CLI_NO_HAB '+
         '(ALB CHAR(6),FAC CHAR(6),FECHAFAC DATE,COD2 CHAR(10)) AS '+
  '  DECLARE VARIABLE CODFAC CHAR(6); '+
  '  DECLARE VARIABLE CLI CHAR(6); '+
  '  DECLARE VARIABLE AGE CHAR(6); '+
  '  DECLARE VARIABLE ALM CHAR(6); '+
  '  DECLARE VARIABLE PU CHAR(6); '+
  '  DECLARE VARIABLE FPAGO DATE; '+
  '  DECLARE VARIABLE COB NUMERIC(16,2); '+
  '  DECLARE VARIABLE SAL NUMERIC(16,2); '+
  '  DECLARE VARIABLE BASI NUMERIC(16,2); '+
  '  DECLARE VARIABLE IV NUMERIC(16,2); '+
  '  DECLARE VARIABLE R NUMERIC(16,2); '+
  '  DECLARE VARIABLE TOT NUMERIC(16,2); '+
  '  DECLARE VARIABLE PA SMALLINT; '+
  '  DECLARE VARIABLE REI SMALLINT; '+
  '  DECLARE VARIABLE FECHAXX DATE; '+
  '  DECLARE VARIABLE AUX VARCHAR(60); '+
  'BEGIN '+

//   SE TOMA  ALBARÁN
  '  SELECT CODCLIENTE,CODAGENTE,CODALMACEN,PUESTO,FECHAPAGO,COBRADO,SALDO,BASEIMP,IVA,RE,TOTAL,PAGADO,'+
            'REGIMENIVA,CODFACTURA '+
  '  FROM '+NOMBRE_DOCUMENTOS+' ' +
  '  WHERE CODALBARAN = :ALB '+
  '  INTO :CLI,:AGE,:ALM,:PU,:FPAGO,:COB,:SAL,:BASI,:IV,:R,:TOT,:PA,:REI,:CODFAC; '+

  '  IF (:FAC <> :CODFAC) THEN '+
  '  BEGIN '+

//   SE ACTUALIZA FACTURA
  '    UPDATE '+NOMBRE_FACTURAS+' ' +
  '    SET ' +
  '    CODCLIENTE = :CLI, '+
  '    CODAGENTE = :AGE, '+
  '    CODALMACEN = :ALM, '+
  '    PUESTO = :PU, '+
  '    HORA = current_time, '+
  '    REGIMENIVA = :REI, '+
  '    IMPRIMIDO = 0 '+
  '    WHERE CODFACTURA = :FAC; '+

//   SE ACTUALIZA ALBARAN
  '    UPDATE '+NOMBRE_DOCUMENTOS+' ' +
  '    SET ' +
  '    CODFACTURA = :FAC, '+
  '    FECHAFAC = :FECHAFAC '+
  '    WHERE CODALBARAN = :ALB; '+

//   SE ACTUALIZA MOVIMIENTOS
  '    UPDATE '+NOMBRE_MOVIMIENTOS+' ' +
  '    SET ' +
  '    CODFACTURA = :FAC, '+
  '    FECHAFAC = :FECHAFAC '+
  '    WHERE CODALBARAN = :ALB; '+

//   SE ACTUALIZA CNH
  '    UPDATE '+NOMBRE_CNH_S+' ' +
  '    SET ' +
  '    CODFACTURA = :FAC '+
  '    WHERE CODALBARAN = :ALB; '+
  '  END '+

  '  FECHAXX = current_date; '+
  '  AUX = '+''''+'PAGO FAC. '+''''+'|| :FAC || '+''''+'/'+''''+' || EXTRACT( year from :FECHAFAC); '+

// SE ACTUALIZA FACTURA
  '  UPDATE '+NOMBRE_FACTURAS+' ' +
  '  SET ' +
  '  FECHAPAGO = :FECHAXX, '+
  '  COBRADO = :TOT, '+
  '  SALDO = 0, '+
  '  BASEIMP = :BASI, '+
  '  IVA = :IV, '+
  '  RE = :R, '+
  '  TOTAL = :TOT, '+
  '  PAGADO = 1 '+
  '  WHERE CODFACTURA = :FAC; '+

//  SE BORRA APUNTES COBROS EXISTENTE
  '  DELETE FROM '+NOMBRE_COBROS+' ' +
  '  WHERE CODIGO = :FAC '+
  '  AND CODIGO2 = :COD2 '+
  '  AND TIPO = 1; '+

//  SE INSERTA APUNTES COBROS
  '  INSERT INTO '+NOMBRE_COBROS+' '+
  ' (CODIGO,CODIGO2,EMISORCOB,TIPO,FECHA,CONCEPTO,IMPORTE,FILA,CODCONCEPT,FECHADOC,CODCLIENTE,CODAGENTE) '+
  '  VALUES (:FAC,:COD2,:COD2,1,:FECHAXX,:AUX,:TOT,1,'+''''+'000000'+''''+',:FECHAFAC,:CLI,:AGE); '+

//  SE ACTUALIZA CAJA
  ' EXECUTE PROCEDURE SP_ACTUALIZACAJA :FECHAXX; '+

  'END ';





procedure TForm2.Button3Click(Sender: TObject);
begin
  ibT1.StartTransaction;
  try
    ibQMovimientos.SQL.Clear;
   ibQMovimientos.SQL.Add(SP_AE_CLI_NO_HAB);
    application.ProcessMessages;

    ibQMovimientos.ExecSQL;

    ibt1.Commit;
    showmessage('Ok Crea');
  except
    if ibt1.InTransaction then
      ibt1.Rollback;
    showmessage('Error Crea');
  end;

end;
ibQMovimientos, es un componente TQuery, que ha sido conectado a la base de datos mediante un componte TibDatabase.

los identificadores como "NOMBRE_COBROS", son constantes que continen el nombre de la tabla.

Este código me genera el error que os he dicho, pero si lo ejecuto desde el ibExpert me funciona bien (lógicamente cambiando las constantes por los nombres de las tablas)

No utilizo el comando supend, ni tampoco utilizo el signo ^.

Saludos
Responder Con Cita