Trigger de auto numeração

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Helbert.A.S
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Dom, 15 Jun 2008 9:45 am
Localização: Guaiçara

Boa tarde teria alguém q poderia me dizer como eu faço para criar uma trigger pegando o código de uma tabela. Eu sei que no Delphi 7 é a sim que fazer.

Selecionar tudo

procedure Tfrm_Cad_cliente_f.IB_Cliente_FBeforeInsert(DataSet: TDataSet);
begin
    IB_Cliente_F.Last;
    aux:= IB_Cliente_F.fieldbyname('cod_cli').AsInteger;
end;

Selecionar tudo

procedure Tfrm_Cad_cliente_f.IB_Cliente_FAfterInsert(DataSet: TDataSet);
begin
   IB_Cliente_F.FieldByName('cod_cli').AsInteger:= aux + 1;
end;
como eu posso fazer em forms 6i

Obrigado...
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Você quer apenas NUMERAR as linhas do seu bloco?
Pode-se usar o

Selecionar tudo

Get_Block_Property('SEU_BLOCK', CURRENT_RECORD);
pra pegar qual é a linha que você está no seu bloco. Daí basta colocar no campo desejado. É isso? Se não for, explica melhor o que você quer fazer!
Helbert.A.S
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Dom, 15 Jun 2008 9:45 am
Localização: Guaiçara

vou tentar com este comanda...

Quando eu inserir um outro registro ele inseri automaticamente o número do ultimo registro?

Aguardo sua resposta...


Obrigado Helbert.A.S
[\b]
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Simulei a situação abaixo, criando um TRIGGER na tabela EMP, do Scott, para que você tenha como exemplo.
Eu criei uma SEQUENCE, que será incrementada dentro da TRIGGER da tua tabela e, com isso, você não precisa passar o valor do empno no teu INSERT, pois o TRIGGER irá fazer isso por você.

Selecionar tudo

-- 1) Criar sequence
CREATE SEQUENCE SEQ_EMP_EMPNO
START WITH 1
INCREMENT BY 1;

--2) Criar trigger na Tabela 
CREATE OR REPLACE TRIGGER TR_EMP_01
 BEFORE 
 INSERT
 ON EMP
 REFERENCING OLD AS OLD NEW AS NEW
 FOR EACH ROW 
DECLARE

 vSeq PLS_INTEGER;

BEGIN

  SELECT SEQ_EMP_EMPNO.NEXTVAL
    INTO vSeq
    FROM dual;
 
  :new.empno:= vSeq;

EXCEPTION
  WHEN OTHERS THEN
  RAISE_application_error(-20100,'Erro na Trigger Empno:'||SQLERRM);
END;
/
Nota importante: Supondo que na tua tabela, a numeração esteja em 1000, você deve, obrigatoriamente, iniciar sua SEQUENCE com 1001.


Qualquer coisa manda pra gente.
Helbert.A.S
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Dom, 15 Jun 2008 9:45 am
Localização: Guaiçara

Boa noite Trevisolli !!

Obrigado pela dica, eu vou tentar este exemplo..

beleza...

Ate mais...
Responder
  • Informação
  • Quem está online

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