GARANTIR DESCONTO

Fórum Gatilho de auto incremento #48109

17/11/2004

0

O que esta faltando para este gatilho funcionar? Ele não da menssagem de erro nenhuma, simplesmente ele não funciona.

CREATE TABLE ´MANEJO´
(
´MAN_CODINT´INTEGER NOT NULL,
´MAN_PROCUL´INTEGER NOT NULL,
´MAN_TIPMAN´VARCHAR(120) CHARACTER SET WIN1252,
´MAN_SALVO´CHAR(1) CHARACTER SET WIN1252,
PRIMARY KEY (´MAN_CODINT´)
);
SET TERM ^ ;


/* Triggers only will work for SQL triggers */

CREATE TRIGGER ´TR_MANEJO´ FOR ´MANEJO´
ACTIVE BEFORE INSERT POSITION 0
as
Begin
New.MAN_CODINT=Gen_id(MANEJO,1);
end
^

COMMIT WORK ^
SET TERM ;^

CREATE GENERATOR ´MANEJO´;


o que eu posso fazer?


Rs_ferreira

Rs_ferreira

Responder

Posts

17/11/2004

Gandalf.nho

Aparentemente não há erro nenhum. Ele chega a incrementar o generator ou nem isso? Como você cadastra registros no banco?


Responder

Gostei + 0

17/11/2004

Rs_ferreira

ela não chega a incrementar. E quando insiro dados via sql ou via data do ib console. E da uma mesagem de erro ´man_codint não pode ser nulo´


Responder

Gostei + 0

17/11/2004

Gandalf.nho

Pode ser que não tenha nada a ver, mas tente renomear seu generator para ter um novo nome ligeiramente diferente do da tabela associada.


Responder

Gostei + 0

17/11/2004

Afarias

A trigger não chega a executar pq o Delphi nem executa o comando INSERT.

A mensagem de erro q vc recebe é do Delphi (não tem nada a ver com o IB) e diz respeito o fato do seu TFIELD estar com REQUIRED=TRUE

Mude o valor dessa propriedade ou jogue qualquer valor nesse campo (-1 po exemplo) antes dar o POST


T+


Responder

Gostei + 0

17/11/2004

Rs_ferreira

Não estou utilizando o delphi ainda. Esto por enquanto so fazendo a nivel de bd , ou seja no ibconsole. E com relação aos fields no ibtable do delphi, esta required false.


Responder

Gostei + 0

17/11/2004

Afarias

Se vc estivesse usando um INSERT (no Interactive SQL) isso não estaria ocorrendo. Mas vc deve estar usando a página DATA e inserindo as informações pelo GRID -- o IBConsole é construído com IBX e segue a mesma regra do TField q mencionei, com a diferença q vc não pode mudar para Required=False ;-)

Neste caso a única solução é digitar algo no campo requerido (-1) -- só pra não receber este erro.


T+


Responder

Gostei + 0

17/11/2004

Rs_ferreira

funcionou colocando -1 :D . Agora vem outro problema , como farei com o dbgrid do delphi, se eu omitir o campo codint? Sendo que eu uso um datasouse e um ibtable?


Responder

Gostei + 0

17/11/2004

Afarias

|como farei com o dbgrid do delphi, se eu omitir o campo codint?

No evento OnNewRecord do seu DataSet coloque::

DataSet.FieldByName(´codint´).AsInteger := 0; {ou -1}


|Sendo que eu uso um datasouse e um ibtable?

Em programação C/S :: NUNCA USE TABLE

;)

Tanto faz o DataSet q vc usa (IBTable, IBQuery, IBDataSet) -- funciona igual. Mas dê preferência a usar IBDataSet ou IBQuery.

Qualquer coisa, veja o tópico::

http://delphiforum.icft.com.br/forum/viewtopic.php?t=30575


T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar