Fórum Como Chamar Trigger pelo Delphi 7 Para Fazer o Autoincrement? #383122
09/08/2010
0
Ricardo
Curtir tópico
+ 0Posts
09/08/2010
Marcos Iwazaki
Trigger dispara sozinho de acordo com a ação que vc escolheu, no caso "Before Insert" isso quer dizer antes de inserir. Mas isso significa antes de inserir no banco.
Outra coisa vc esta usando ClientDataSet, qdo vc faz um cds.Insert isso faz um insert no seu ClientDataSet e não no banco. Somente qdo vc fizer um applyupdates vai salvar no banco.
Vc pode deixar o seu campo vazio e salvar, dae qdo for para o banco a trigger vai disparar.
Se caso vc tiver problema pois o campo do codigo tem que estar preenchido, então preencha com "0" e na trigger verifique "if isnull or codigo=0"
Espero ter ajudado...
flw.
Gostei + 0
09/08/2010
Ricardo
Gostei + 0
10/08/2010
Ricardo
Gostei + 0
10/08/2010
Wilson Junior
NEW.CODIGO = GEN_ID (TRIG1, 1);
Deve ser criado um GENERATOR para efetuar o auto-incremento do campo código. Ex.: GEN_CLIENTE
NEW.CODIGO = GEN_ID (GEN_CLIENTE, 1);
Espero ter colaborado.
Gostei + 0
10/08/2010
Deivison Melo
Incrementa: Boolean): integer;
var
Qry: TSQLQuery;
begin
Qry := TSQLQuery.Create(nil);
try
Qry.SQLConnection := Connection;
if Incrementa then
Qry.SQL.Add(
'SELECT GEN_ID('+aName+', 1) FROM RDB$DATABASE')
else
Qry.SQL.Add(
'SELECT GEN_ID('+aName+', 0) FROM RDB$DATABASE');
Qry.Open;
Result := Qry.Fields[0].AsInteger;
finally
FreeAndNil(Qry);
end;
end; Qualquer coisa estou à disposição!!!
Gostei + 0
10/08/2010
Ricardo
NEW.CODIGO = GEN_ID (TRIG1, 1);
Deve ser criado um GENERATOR para efetuar o auto-incremento do campo código. Ex.: GEN_CLIENTE
NEW.CODIGO = GEN_ID (GEN_CLIENTE, 1);
Espero ter colaborado.
Mas lá no firebird ta certinho, tanto que tá incrementando o código sozinho quando faço a inserção por lá.
O problema tá no Delphi mesmo.
Me disseram que isso acontece porque o ClientDataSet requer que todos os campos sejam digitados.
E disseram que tem um jeito de o ClientDataSet não requerer o campo código, mas não souberam me explicar isso. Se alguém souber como se faz isso agradeçeria, porque é horrível criar um código para fazer auto increment sendo que o firebird faz isso de modo mais simples com generator e trigger.
Alguém saberia me explicar com detalhes como faz para o ClientDataSet não requerer o código?
Se alguém já passou por isso ou sabe do que eu estou falando, da uma ajudinha por favor?
Vlw aê a todos!!!
Gostei + 0
10/08/2010
Eriley Barbosa
Gostei + 0
10/08/2010
Ricardo
Gostei + 0
04/05/2013
Frederico Brigatte***
CREATE SEQUENCE GEN_FUNCIONARIOS_ID;
ALTER SEQUENCE GEN_FUNCIONARIOS_ID RESTART WITH 0;
Não estou sabendo utilizar no Delphi.
Gostei + 0
16/06/2013
Ricardo
CREATE SEQUENCE GEN_FUNCIONARIOS_ID;
ALTER SEQUENCE GEN_FUNCIONARIOS_ID RESTART WITH 0;
Não estou sabendo utilizar no Delphi.
Amigo, que componentes você utiliza para conectar o delphi no banco de dados?
Se for usando o IBDatabase, coloca um IBQuery e na propriedade "GeneratorField" do IBQuery, Clica nos (...) que tem lá e vai abrir uma janela pra configurar o auto increment. É só a sua chave primária no campo FIELD e dar ok.
Não esqueça de setar as propriedades do IBQuery "DataSource", "Transaction" e "UpdateObject" para seus respectivos componentes.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)