Lançar o mesmo item na transação corrente

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
  

Mensagemem Ter, 03 Mai 2011 2:42 pm

Boa tarde a todos, minha dúvida é: como faço o tratamento na hora de lançar os itens para não deixar lançar o mesmo item na transação ?

desde já agradeço
davidcastilholi
Localização: Jussara PR

David

Mensagemem Qui, 05 Mai 2011 3:09 pm

ninguém ?
davidcastilholi
Localização: Jussara PR

David

Mensagemem Qui, 05 Mai 2011 3:15 pm

Poderia ser um pouco mais especifico?

Pois se você se refere a inserir um registro duas vezes, isto pode-se controlar de N maneiras, a mais simples é com a criação de PKs. Mas não creio que compreendi sua nescessidade corretamente. Tente detalhar um pouco mais que eu tento lhe ajudar.
gfkauer
Localização: Sapiranga - RS

Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Mensagemem Qui, 05 Mai 2011 3:46 pm

quero tratar da seguinte forma, o cara vai fazer uma venda e lança o item 1, dai, se ele tentar lançar o item 1 novamente, quero que de uma mensagem de que o item já foi lançado, obrigando-o a inserir outro item.

sei que da para tratar pelas chaves primárias, mas quero tratar isso na saída do campo.

desde já agradeço.
davidcastilholi
Localização: Jussara PR

David

Mensagemem Qui, 05 Mai 2011 4:06 pm

Pergunta, porque você não automatiza a númeração do item? Ou o usuário poderá digitar
Item 1
Item 2
Item 7
Item 10
Item 23451?
gfkauer
Localização: Sapiranga - RS

Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Mensagemem Qui, 05 Mai 2011 4:29 pm

o usuário irá digitar o numero do item que nada mais é que o Cód. do produto que esta sendo inserido na venda.

Tenho as seguintes entidades:

Entidade - TB_PRODUTO
Campo - cd_produto PK

Entidade - TB_ITEMVENDA
Campo - cd_produto PfK
Campo - cd_venda pfk

Entidade - TB_VENDA
Campo - cd_venda PK

tenho que tratar para que o usuário não lance o mesmo item na mesma venda, ele até pode lançar dai teria que ir atualizando as quantidades.

tenho 2 idéias: mostrar a msg ao usuario dizendo que o item já foi lançado, ou atualizar a quantidade da venda

como faria isso?
davidcastilholi
Localização: Jussara PR

David

Mensagemem Qui, 05 Mai 2011 4:49 pm

bom, se você ainda não salvou os registros você teria que varrer todas as outras linhas já inseridas, mas isto nem sempre é possivel, já que você pode ter outras diversas informações a serem informadas obrigatóriamente.

O que eu faria?
Criaria uma GTT (global temporary table) com apenas uma coluna que receberia o número do produto/item. Para isto, dentro da trigger When-validate-item do campo do código eu faria um select na tabela global validando se já existe este código, caso não exista faria um insert na tabela global.

Quando fosse inserir uma segunda vez o mesmo item, meu select de validação já enxergaria este registro na GTT, ai sim você poderá emitir uma mensagem ao usuário.

Complicado, talvez, mas é a primeira solução que me vem em mente.
gfkauer
Localização: Sapiranga - RS

Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Mensagemem Qui, 05 Mai 2011 5:53 pm

Obrigado cara vou fazer e testar...
davidcastilholi
Localização: Jussara PR

David

Mensagemem Seg, 09 Mai 2011 9:40 pm

olá a todos, encontrei uma forma de validar para o usuário não lançar o mesmo item na transação, e gostaria de compartilhar com todos...

fiz o seguinte select:
Código: Selecionar todos
DECLARE
   V_REG NUMBER(10);
BEGIN
     SELECT COUNT(*)
            INTO V_REG
           FROM TB_ITEMPRODUTO
                WHERE CD_TRANSACAO = :TB_ITEMPRODUTO.CD_TRANSACAO
                  AND CD_PRODUTO   = :TB_ITEMPRODUTO.CD_PRODUTO;
    IF V_REG > 0 THEN
          MESSAGE('Item já lançado na transação');
          :TB_ITEMPRODUTO.CD_BARRA :=NULL;
          :TB_ITEMPRODUTO.DS_PRODUTO :=NULL;
          :TB_ITEMPRODUTO.TP_ESPECIE :=NULL;
          :TB_ITEMPRODUTO.VL_UNITARIO :=NULL;
          RAISE FORM_TRIGGER_FAILURE;
END IF;
END;


e na trigger WHEN-NEW-RECORD-INSTANCE do bloco TB_ITEMPRODUTO, fiz o comando
Código: Selecionar todos
POST;
para para fazer inserts e updates no banco das alterações feitas no FORMS, mas não dá o commit.

funcionou certinho.

e obrigado "Gfkauer" pela ajuda...[/b]
davidcastilholi
Localização: Jussara PR

David



Voltar para Forms

Quem está online

Usuários navegando neste fórum: Bing [Bot], Google [Bot] e 4 visitantes