Fórum Auto Incremento uma vez #51228
04/06/2005
0
Create Generator nome_generator;
CREATE TRIGGER NOME_TRIGGER
ACTIVE BEFORE INSERT POSITION 0
AS
begin
if (new.codigo is null) then
new.codigo = gen_id(nome_generator, 1);
end
E nada acontece...tipo no IBExpert aparece lá que foi criado o generator e o trigger...aparentemente tudo lindo...mas qdo eu vou no programa vou clicar no Inserir novo registro e ele me passa um formulário ´limpo´ sem o número automático...
Obrigado....
Ramms
Curtir tópico
+ 0Posts
05/06/2005
Eduardo Cocite
begin
QryAux.sql.Clear;
QryAux.sql.add(´select´);
QryAux.sql.add(´ max (Codigoproduto) as Maior ´);
QryAux.sql.add(´from ´);
QryAux.sql.add(´ produto1´);
QryAux.open;
if QryAux.Eof then
QryProdutoCODIGOPRODUTO.Value := 1
else
QryProdutoCODIGOPRODUTO.Value := QryAux.fieldbyname(´Maior´).AsInteger + 1;
end;
inserir := DtsProduto.State in [dsinsert];
update := DtsProduto.State in [dsedit];
uma query para a tabela e outra para a geração automática do incremento, eu faço qdo o cara for salvar o registro.......
espero ter te ajudado......
Gostei + 0
06/06/2005
Ramms
Obrigado
Gostei + 0
07/06/2005
Rodolpho123
O auto-incremento só é ativado quando vc envia ao BD uma instrução SQL de INSERT.
Se vc quiser saber o número do seu generator, faça a seguinte qry:
select gen_id(seu_generator,0) from rdb$database
Gostei + 0
07/06/2005
Ramms
Como eu consegueria fazer isso?? Sou iniciante....
Vlw
Gostei + 0
08/06/2005
Rodolpho123
select gen_id(seu_generator,1) from rdb$database
Onde [b:f148c6a236]1[/b:f148c6a236] é o incremento que vc vai fazer no seu generator. Mas se vc não efetuar o cadastro, o número não é retornado ao seu estado inicial, ex:
Iniciar cadastro nº 1001 > Desiste do cadastro
Iniciar cadastro novamente > Irá mostra o nº 1002
Gostei + 0
08/06/2005
Ramms
select gen_id(seu_generator,1) from rdb$database
Command Text???
Kra eu to começando agora...ehaheuia...malz e vlwzz
Gostei + 0
11/06/2005
Wagsilvasilva
Gostei + 0
11/06/2005
Ramms
Gostei + 0
14/06/2005
Rodolpho123
Isso vc coloca em DataSet desses (TIBQuery, por exemplo) e quando vc abrir o seu DataSet, ele vai executar este código, gerando assim um número de auto-incremento. Para obter um novo número, feche e abra o DataSet.
Gostei + 0
14/06/2005
Ramms
Vlw
Gostei + 0
14/06/2005
Rodolpho123
Sim
E se vc quiser visualizar o seu código, vc pode fazer assim:
showmessage(´Código gerado: ´ + SeuClientDataSet.FieldByName(´gen_id´).AsString);
Gostei + 0
14/06/2005
Ramms
DBEdit1.Text =: SeuClientDataSet.FieldByName(´gen_id´).AsString
tipo no evento onactive ?? ou outro?
Gostei + 0
14/06/2005
Ramms
CommandText changes not allowed...uma parada assim...
alguem sabe o q pode estar errado??
Vlwzzz
Gostei + 0
16/06/2005
Rodolpho123
Eu não posso te dizer o porque isto está acontecendo, pois eu ainda não fiz testes. Prq vc não utiliza um componente Query? Se é só para atribuir um valor ao seu DBEDit......
Nota: Para atribuir valores nos DBEdit não faça desta maneira
DBEdit.Text := ´blablabla´;
Pois vc só está escrevendo o texto no edit e não no banco. Para atribuir um valor, faça
DBEdit.Field.Value := ´blablavla´;
Onde vc atribui o valor no banco e que o DBEdit vai exibir na tela.
Gostei + 0
16/06/2005
Ramms
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)