Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
junior_ehlke
Creator III
Creator III

Alterar campo de produto na seleção

Boa tarde, tenho uma situação que é a seguinte..

Possuo uma tabela chamada DEPARTAMENTOS onde tem o codigo do departamento e sua descrição

na segunda tabela chmada MOVIMENTO eu tenho os produtos movimentados no periodo onde consta o codigo do item, codigo do departamento e o codigo do lançamento.

minha duvida é a seguinte, tenho vários codigos de lançamentos para o mesmo produto, gostaria que quando o produto do departamento 01 tiver o codigo de lançamento 6000 ele mude seu departamento para 22 assim ao selecionar o departamento 22 um produto de outro departamento qualquer lançado no código 6000 vai aparecer..

pensei em usar o Mapping Inline porém não consigo pensar em algo lógico.

Consegui me expressar?

Labels (3)
1 Solution

Accepted Solutions
fernando_tonial
Partner - Specialist
Partner - Specialist

Olá,

É possível fazer sim com mapping,

E se eu consegui entender bem, veja exemplo:

MAP_DEPARA_DEPTO:

Mapping

LOAD * INLINE [

    COD_LANÇ, COD_DEPTO_PARA

    6000, 22

    6001, 23

    6002, 24

];

DEPTO:

LOAD * INLINE [

    COD_DEPTO, DPTO

    01, DEPTO 01

    02, DEPTO 02

    03, DEPTO 03

    22, DEPTO 22

    23, DEPTO 23

    24, DEPTO 24

];

LAÇAMENTO:

LOAD

  APPLYMAP('MAP_DEPARA_DEPTO',COD_LANÇ,COD_DEPTO) AS COD_DEPTO,

  COD_DEPTO AS COD_DEPTO_ORIGINAL,// APENAS UTILIZADO PARA VERIFICAÇÃO

  COD_LANÇ,

  COD_ITEM,

  VALOR

INLINE [

    COD_DEPTO, COD_LANÇ, COD_ITEM, VALOR

    01, 6000, 11, 100

    02, 6001, 12, 200

    03, 6002, 13, 300

    01, 5000, 11, 400

    02, 5001, 12, 500

    03, 5002, 13, 600

];

Dessa forma, será feita a alteração do campo do departamento conforme a tabela MAP_DEPARA_DEPTO, onde o qlikview busca o código do lançamento e altera para o código do departamento.

Esta operação é feita através do comando

APPLYMAP('MAP_DEPARA_DEPTO',COD_LANÇ,COD_DEPTO) AS COD_DEPTO,

Qlikfique-se

Tonial.

Don't Worry, be Qlik.

View solution in original post

4 Replies
fernando_tonial
Partner - Specialist
Partner - Specialist

Olá,

É possível fazer sim com mapping,

E se eu consegui entender bem, veja exemplo:

MAP_DEPARA_DEPTO:

Mapping

LOAD * INLINE [

    COD_LANÇ, COD_DEPTO_PARA

    6000, 22

    6001, 23

    6002, 24

];

DEPTO:

LOAD * INLINE [

    COD_DEPTO, DPTO

    01, DEPTO 01

    02, DEPTO 02

    03, DEPTO 03

    22, DEPTO 22

    23, DEPTO 23

    24, DEPTO 24

];

LAÇAMENTO:

LOAD

  APPLYMAP('MAP_DEPARA_DEPTO',COD_LANÇ,COD_DEPTO) AS COD_DEPTO,

  COD_DEPTO AS COD_DEPTO_ORIGINAL,// APENAS UTILIZADO PARA VERIFICAÇÃO

  COD_LANÇ,

  COD_ITEM,

  VALOR

INLINE [

    COD_DEPTO, COD_LANÇ, COD_ITEM, VALOR

    01, 6000, 11, 100

    02, 6001, 12, 200

    03, 6002, 13, 300

    01, 5000, 11, 400

    02, 5001, 12, 500

    03, 5002, 13, 600

];

Dessa forma, será feita a alteração do campo do departamento conforme a tabela MAP_DEPARA_DEPTO, onde o qlikview busca o código do lançamento e altera para o código do departamento.

Esta operação é feita através do comando

APPLYMAP('MAP_DEPARA_DEPTO',COD_LANÇ,COD_DEPTO) AS COD_DEPTO,

Qlikfique-se

Tonial.

Don't Worry, be Qlik.
junior_ehlke
Creator III
Creator III
Author

Bom dia Fernando, minha dificuldade com o mapping é que eu não sei se os campos podem ser fixos ou podem pegar de um banco de dados. No seu exemplo funcionou perfeitamente e eu poderia usar mas quero facilitar a programação no QV e evitar manutenções básicas no futuro, fiz o seguinte, o documento 6000 que eu digo que tem que mudar para o departamento 22 eu cadastrei no banco de dados, assim a gerencia pode incluir ou excluir os documentos a qualquer hora, acredito que seja uma boa ideia. Eu consigo fazer alguma cosia neste sentido?

  1. MAP_DEPARA_DEPTO: 
  2. Mapping 
  3. LOAD * INLINE [ 
  4.     COD_LANÇ, COD_DEPTO_PARA 
  5.     (select doc_codigo from tabela_aux, produtos where prod_codlanc = doc_codigo), (select doc_depto from tabela_aux, produtos where prod_codlanc = doc_codigo) ]

Caso isto nao seja possível, usarei seu exemplo pois condiz com o que preciso, porém gostaria de algo mais dinâmico. Obrigado pela ajuda.

fernando_tonial
Partner - Specialist
Partner - Specialist

Olá, você pode sim fazer uma tabela de mapeamento utilizando campos do banco de dados.

Lembrando que essa tabela necessita de apenas dois campos.

1 - Campo DE

2- Campo PARA

Com base em seu exemplo, ficaria algo assim:

MAP_TABELA:

Mapping

SQL Select doc_codigo, doc_depto

from tabela_aux, produtos

where prod_codlanc = doc_codigo;

Qlikfique-se

Tonial.

Don't Worry, be Qlik.
junior_ehlke
Creator III
Creator III
Author

Boa tarde Fernando, novamente quero agradecer, consegui adaptar o codigo para meu projeto. Realmente não sabia usar o Mapping com SQL e nem para campos diferentes. Obrigado pelo ajuda.