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
Responder
davidcastilholi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 47
Registrado em: Qui, 07 Abr 2011 3:54 pm
Localização: Jussara PR
David

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
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 47
Registrado em: Qui, 07 Abr 2011 3:54 pm
Localização: Jussara PR
David

ninguém ?
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

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

Acessem: www.gfkauer.com.br

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.
davidcastilholi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 47
Registrado em: Qui, 07 Abr 2011 3:54 pm
Localização: Jussara PR
David

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.
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

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

Acessem: www.gfkauer.com.br

Pergunta, porque você não automatiza a númeração do item? Ou o usuário poderá digitar

Selecionar tudo

Item 1
Item 2
Item 7
Item 10
Item 23451
davidcastilholi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 47
Registrado em: Qui, 07 Abr 2011 3:54 pm
Localização: Jussara PR
David

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?
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

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

Acessem: www.gfkauer.com.br

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.
davidcastilholi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 47
Registrado em: Qui, 07 Abr 2011 3:54 pm
Localização: Jussara PR
David

Obrigado cara vou fazer e testar...
davidcastilholi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 47
Registrado em: Qui, 07 Abr 2011 3:54 pm
Localização: Jussara PR
David

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:

Selecionar tudo

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 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]
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 15 visitantes