Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Ayuda con vista en ibexpert y reportbuilder enterprise (https://www.clubdelphi.com/foros/showthread.php?t=88977)

synapsevzla 07-09-2015 04:11:50

Ayuda con vista en ibexpert y reportbuilder enterprise
 
hola a todos amigos del club delphi, estoy tratando de adaptar una ap para el negocio de mi papa que esta realizada en delphi y firebird como motor de db el problema que tengo es el siguiente genere una vista en ibexpert que me arroja los siguientes resusltados.


DOCUMENTO TIPO_DOCUMENTO TOTAL_OPERACION
0000000001 FAC 180962,96,0000
0000000002 FAC 365094,44,0000
0000000003 FAC 180962,96,0000
0000000001 DEV 180962,96,0000
0000000004 FAC 180962,96,0000
0000000005 FAC 180962,96,0000
0000000006 FAC 180962,96,0000

Pero yo necesito que todo lo que aparesca en la fila con la descripcion 'DEV y N/C' en el reportbuilder se ponga en negativo para que se pueda restar.

Ejemplo:

DOCUMENTO TIPO_DOCUMENTO TOTAL_OPERACION
0000000001 FAC 180962,96,0000
0000000002 FAC 365094,44,0000
0000000003 FAC 180962,96,0000
0000000001 DEV -180962,96,0000
0000000004 FAC 180962,96,0000
0000000005 FAC 180962,96,0000
0000000006 FAC 180962,96,0000

Como puedo lograr esto?

Les agradeceria de todo corazon su ayuda.

Comparto tambien copia de la db con las vistas incluidas.

synapsevzla 07-09-2015 04:14:51

Corrijo la mustra de los datos asi se ve la vista

DOCUMENTO TIPO_DOCUMENTO TOTAL_OPERACION
0000000001 FAC 180962,96,0000
0000000002 FAC 365094,44,0000
0000000003 FAC 180962,96,0000
0000000001 DEV 180962,96,0000
0000000004 FAC 180962,96,0000
0000000005 FAC 180962,96,0000
0000000006 FAC 180962,96,0000

y me tendria que quedar asi

DOCUMENTO TIPO_DOCUMENTO TOTAL_OPERACION
0000000001 FAC 180962,96,0000
0000000002 FAC 365094,44,0000
0000000003 FAC 180962,96,0000
0000000001 DEV -180962,96,0000
0000000004 FAC 180962,96,0000
0000000005 FAC 180962,96,0000
0000000006 FAC 180962,96,0000

Casimiro Notevi 07-09-2015 09:38:14

Hola, primero de todo, ¿qué dato es esto?: 180962,96,0000
Se supone que es un número con decimales, pero dos comas ahí :confused:

En cuanto a lo que quieres hacer en el informe no es nada complicado, pero demasiado difícil de explicar por escrito, debes añadir una campo calculado sobre la columna que quieras, nada más.
Te aconsejo que mires la documentación o alguno de los montones de ejemplos que vienen con reportbuilder.

synapsevzla 07-09-2015 15:01:53

Hola casimiro gracias por la observacion si en realidad son dos decimales los 0000000 al final pertenecian a otra columna lo que pasa es que copie y pege mal lo siento e tratado de hacer lo siguiente en mi report builder anoche.

Código:

if (vista['Documento_Tipo'] = 'Dev') then

 Value := -(vista[monto])

else

 Value := vista[monto];

al darle compilar me aparece 0 error pero al tratar de ver el reporte me arroja el error variable0oncalc en un cuadro de mensaje.

pense que asi quisas podria cambiar los valores positivo que aparecieran con DEV en el reporte en negativo pero nada.

cloayza 07-09-2015 16:00:12

Estimado compañero, te sugiero que realices la transformación del valor en la misma vista...

Te propongo algo así:

Código SQL [-]
CREATE OR ALTER VIEW TU_VISTA(
    DOCUMENTO,
    TIPO_DOCUMENTO,
   TOTAL_OPERACION)
AS
   SELECT DOCUMENTO,
              TIPO_DOCUMENTO 
              IIF(TIPO_DOCUMENTO='DEV',-1*TOTAL_OPERACION,TOTAL_OPERACION) AS TOTAL_OPERACION
FROM TU_TABLA;

Saludos cordiales

synapsevzla 07-09-2015 16:52:26

osea que tendria que ser algo como esto?

Código SQL [-]
CREATE OR ALTER VIEW VIEW_LIBROVTAIVA2015(
    CORRELATIVO,
    CORRELATIVO_CODIGO,
    DOCUMENTO,
    TIPO_DOCUMENTO,
    CLIENTE_CODIGO,
    CLIENTE_NOMBRE,
    CLIENTE_RIF,
    FECHA_EMISION,
    HORA_EMISION,
    TOTAL_OPERACION,
    TOTAL_BASE_IMPONIBLE,
    TOTAL_IMPUESTO_FISCAL,
    TOTAL_EXENTO,
    CORRELATIVO_PRINCIPAL,
    TOTAL_NETO_01,
    TOTAL_IMPUESTO_01,
    PORC_IMPUESTO_01,
    IMPUESTO_IVA_CODIGO_01,
    CORRELATIVO_PRINCIPAL1,
    TOTAL_NETO_03,
    TOTAL_IMPUESTO_03,
    PORC_IMPUESTO_03,
    IMPUESTO_IVA_CODIGO_03,
    ORDEN_DE_COMPRA)
AS
select 
    ventas.correlativo,
    ventas.correlativo_codigo,
    ventas.documento,
    ventas.tipo_documento,
   if (ventas.tipo_documento='DEV', -1*ventas.total_operacion, ventas.total_operacion) as ventas.total_operacion,
    ventas.cliente_codigo,
    ventas.cliente_nombre,
    ventas.cliente_rif,
    ventas.fecha_emision,
    ventas.hora_emision,
    ventas.total_operacion,
    ventas.total_base_imponible,
    ventas.total_impuesto_fiscal,
    ventas.total_exento,
    view_compiladoiva01.correlativo_principal,
    view_compiladoiva01.total_neto_01,
    view_compiladoiva01.total_impuesto_01,
    view_compiladoiva01.porc_impuesto_01,
    view_compiladoiva01.impuesto_iva_codigo_01,
    view_compiladoiva03.correlativo_principal,
    view_compiladoiva03.total_neto_03,
    view_compiladoiva03.total_impuesto_03,
    view_compiladoiva03.porc_impuesto_03,
    view_compiladoiva03.impuesto_iva_codigo_03,
    ventas.orden_de_compra
from ventas
   inner join view_compiladoiva01 on (ventas.correlativo = view_compiladoiva01.correlativo_principal)
   inner join view_compiladoiva03 on (ventas.correlativo = view_compiladoiva03.correlativo_principal)

Si fuerabn mas valores que al conicidir con DEV tubiesen que cambiar a negativo como seria y si la condicion Fuese no solo DEV si no tambien NC o tra condicion como podria lograrlo?

Nota: trate de crearlo asi y no me manda error el ibexpert la linea que resalto en rojo me la muestra como error.

y los valores que tendrian que cambiar a negativo cuando aparesca la condicion DEV o NC serian los resaltados en azul

cloayza 07-09-2015 17:02:20

Si fueran mas valores podria ser así:


Código SQL [-]
--Opcion 1:
IIF(ventas.tipo_documento='DEV' OR ventas.tipo_documento='NC', -1*ventas.total_operacion, ventas.total_operacion) as ventas.total_operacion

--Opcion 2:
IIF(ventas.tipo_documento IN ('DEV','NC'), -1*ventas.total_operacion, ventas.total_operacion) as ventas.total_operacion

Saludos cordiales

synapsevzla 08-09-2015 16:51:53

hola amigos del foro de verdad estoy muy agradecido por la respuesta tan rapida que me han brindado espero a futuro poder colaborar con ustedes miesntras voy puliendo cada ves mas en el tema del desarrollo con respuesta a las suluciones que me am planteado.

me sigue dando error la vista al tratar de compilarla me dice lo siguiente

Código SQL [-]
IIF (ventas.tipo_documento='DEV',  -1*ventas.total_operacion, ventas.total_operacion) as ventas.total_operacion,

al darle compile a la vista me arroja este error.

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 32, column 96.
.

aun sigo sin saber que pasa, aunque agrego que cuando me da el error el cursor se pone en la linea de la sentencia del sql en el ultimo . de ventas.total_operacion

cloayza 08-09-2015 18:46:48

Amigo, creo que el problema es que estas dando un nombre de alias al campo calculado incluyendo el nombre de la tabla, intenta dejar la sentencia de esta forma:

Código SQL [-]
IIF (ventas.tipo_documento='DEV',  -1*ventas.total_operacion, ventas.total_operacion) as total_operacion

El alias total_operacion, es un nombre que se puede dar a las variables o cálculos que participa en una consulta, de esta manera yo puedo indicar cuales serán los nombres de estas variables, por defecto se asigna el nombre del campo correspondiente a la tabla, pero en este caso como es una expresión yo asigno un alias -total_operacion- que puede ser cualquiera, como:

Código SQL [-]
IIF (ventas.tipo_documento='DEV',  -1*ventas.total_operacion, ventas.total_operacion) as Resultado

Saludos cordiales


La franja horaria es GMT +2. Ahora son las 18:38:21.

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