Auto Incremento uma vez
Seguinte fui no IBExpert no SQL Editor crei o generator e a trigger:
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....
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
Curtidas 0
Respostas
Eduardo Cocite
04/06/2005
if DtsProduto.State = dsInsertthen
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......
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
Ramms
04/06/2005
Kra de boa vc poderia me expilcar detalhadamente, aonde eu coloco cada código...sou leigo ainda...
Obrigado
Obrigado
GOSTEI 0
Rodolpho123
04/06/2005
Ramms,
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:
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
Ramms
04/06/2005
Opa Rodolpho....Bem o que eu qro eh que qdo eu clicar no botão inserir a tela seja ´limpada´ e que no edit código já venha o valor...o próximo número...eu deixaria o edit com o enabled false entendeu??
Como eu consegueria fazer isso?? Sou iniciante....
Vlw
Como eu consegueria fazer isso?? Sou iniciante....
Vlw
GOSTEI 0
Rodolpho123
04/06/2005
Vc pode fazer o seguinte:
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
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
Ramms
04/06/2005
Mas aonde coloco esse código ???
select gen_id(seu_generator,1) from rdb$database
Command Text???
Kra eu to começando agora...ehaheuia...malz e vlwzz
select gen_id(seu_generator,1) from rdb$database
Command Text???
Kra eu to começando agora...ehaheuia...malz e vlwzz
GOSTEI 0
Wagsilvasilva
04/06/2005
Ola Ramms. Se voce conseguir fazer autonumeracao por favor me avise. Eu procurei em tudo que é lugar mas ainda nao consegui faze-lo.
GOSTEI 0
Ramms
04/06/2005
Po kra tah dificil até agora nada....
GOSTEI 0
Rodolpho123
04/06/2005
Mas aonde coloco esse código ???
select gen_id(seu_generator,1) from rdb$database
Command Text???
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
Ramms
04/06/2005
Eu uso SQLConnection, SqlDataset, e clientdataset no caso colocaria o código select gen_id(seu_generator,1) from rdb$database no clientdataset???
Vlw
Vlw
GOSTEI 0
Rodolpho123
04/06/2005
Eu uso SQLConnection, SqlDataset, e clientdataset no caso colocaria o código select gen_id(seu_generator,1) from rdb$database no clientdataset???
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
Ramms
04/06/2005
Tipo eu qro colocar num edit....entaum ficaria assim??
DBEdit1.Text =: SeuClientDataSet.FieldByName(´gen_id´).AsString
tipo no evento onactive ?? ou outro?
DBEdit1.Text =: SeuClientDataSet.FieldByName(´gen_id´).AsString
tipo no evento onactive ?? ou outro?
GOSTEI 0
Ramms
04/06/2005
qdo eu coloco no commandtext do cds ele fala isso:
CommandText changes not allowed...uma parada assim...
alguem sabe o q pode estar errado??
Vlwzzz
CommandText changes not allowed...uma parada assim...
alguem sabe o q pode estar errado??
Vlwzzz
GOSTEI 0
Rodolpho123
04/06/2005
qdo eu coloco no commandtext do cds ele fala isso:
CommandText changes not allowed...uma parada assim...
alguem sabe o q pode estar errado??
Vlwzzz
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
Ramms
04/06/2005
Awe kra funcionou vlw....deu um probleminha aki com o botão insert mas acho que consigo resolver..qualquer coisa eu volto aki vlw...
GOSTEI 0