5 Replies Latest reply: Feb 4, 2013 10:46 AM by Jorge Redondo RSS

    Acumulación condicional durante la carga

    Jorge Redondo

      Hola!

       

      Estoy dando mis primeros pasos en QV y esta es mi primera consulta en esta gran comunidad.

       

      Estoy creando un script que carga una tabla de una BD de MsAccess que son los apuntes bancarios importados por un programa contable y cuyo origen son los típicos ficheros n43 que te descargas de los bancos.

       

      Como los ficheros n43 no proporcionan un campo 'SALDO' y en la tabla de MsAccess conviven varias cuentas de la misma empresa, y obviamente cada cuenta tiene un saldo distinto, necesito asociar un campo que vaya acumulando el saldo según qué cuenta esté leyendo en la sentencia LOAD.

       

      He probado varias formas pero todas acaban por darme algún error y por eso me he decidido a consultaros.

       

      Observareis que no tengo un estilo muy 'depurado' de programación, pero es lo que hay :-)

       

      Hasta ahora tengo algo así:

       

      ...

      // Establezco los slados iniciales de partida según las cuentas

       

      SET vsaldoBSA = 4598,54;

      SET vsaldoCAR = -17964,20;

       

       

      ODBC CONNECT TO [MS Access Database;DBQ=C:\Contasol\Datos\1002013.MDB];

       

      Movimientos_Actual:

       

      LOAD

       

          ENTOPE as Entidad,

          OFIOPE as Oficina,

          CUEOPE as CC,

          if (CUEOPE = '0001159020', 'BSA', 'CAR',) as MovBanco, //Lee el nº de cuenta y asigna el banco correspondiente (solo hay dos cuentas posibles)

          Day(FECOPE) as MovDia,

          Week(FECOPE) as MovSemana,

          Month(FECOPE) as MovMes,

          FECOPE as [Fecha Operación],

          ORDOPE as Orden,

          COOOPE as [Oficina Origen],

          FVAOPE as [Fecha Valor],

          CCOOPE as [Código Común],

          CPROPE as [Código Propio],

          if([D-HOPE]='D', IMPOPE* -1, IMPOPE) as MovImporte, //Cambia el signo del importe según sea D o H

       

          // Aquí debería incluir el código para acumular en la variable correspondiente el saldo

       

       

          trim(DOCOPE) as Documento,

          trim(RE1OPE) & '' & trim(RE2OPE) as Referencia,

          CO1OPE & ' ' & CO2OPE as Concepto,

          if(PUNOPE=1,'*','') as Punteado,

          IDEOPE as Identificación;

         

      SQL SELECT * FROM F_OPE;