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
Lançar o mesmo item na transação corrente
-
- Rank: Programador Sênior
- Mensagens: 47
- Registrado em: Qui, 07 Abr 2011 3:54 pm
- Localização: Jussara PR
David
-
- Rank: Programador Sênior
- Mensagens: 47
- Registrado em: Qui, 07 Abr 2011 3:54 pm
- Localização: Jussara PR
David
ninguém ?
-
- 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
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.
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.
-
- 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.
sei que da para tratar pelas chaves primárias, mas quero tratar isso na saída do campo.
desde já agradeço.
-
- 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
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
Item 1
Item 2
Item 7
Item 10
Item 23451
-
- 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?
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?
-
- 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
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.
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.
-
- 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...
-
- 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:
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]
fiz o seguinte select:
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;
POST;
funcionou certinho.
e obrigado "Gfkauer" pela ajuda...[/b]
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 20 visitantes