Fórum Auto Incremento uma vez #51228

04/06/2005

0

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....


Ramms

Ramms

Responder

Posts

05/06/2005

Eduardo Cocite

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......


Responder

Gostei + 0

06/06/2005

Ramms

Kra de boa vc poderia me expilcar detalhadamente, aonde eu coloco cada código...sou leigo ainda...

Obrigado


Responder

Gostei + 0

07/06/2005

Rodolpho123

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:
select gen_id(seu_generator,0) from rdb$database



Responder

Gostei + 0

07/06/2005

Ramms

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


Responder

Gostei + 0

08/06/2005

Rodolpho123

Vc pode fazer o seguinte:
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


Responder

Gostei + 0

08/06/2005

Ramms

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


Responder

Gostei + 0

11/06/2005

Wagsilvasilva

Ola Ramms. Se voce conseguir fazer autonumeracao por favor me avise. Eu procurei em tudo que é lugar mas ainda nao consegui faze-lo.


Responder

Gostei + 0

11/06/2005

Ramms

Po kra tah dificil até agora nada....


Responder

Gostei + 0

14/06/2005

Rodolpho123

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.


Responder

Gostei + 0

14/06/2005

Ramms

Eu uso SQLConnection, SqlDataset, e clientdataset no caso colocaria o código select gen_id(seu_generator,1) from rdb$database no clientdataset???
Vlw


Responder

Gostei + 0

14/06/2005

Rodolpho123

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);



Responder

Gostei + 0

14/06/2005

Ramms

Tipo eu qro colocar num edit....entaum ficaria assim??

DBEdit1.Text =: SeuClientDataSet.FieldByName(´gen_id´).AsString

tipo no evento onactive ?? ou outro?


Responder

Gostei + 0

14/06/2005

Ramms

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


Responder

Gostei + 0

16/06/2005

Rodolpho123

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.


Responder

Gostei + 0

16/06/2005

Ramms

Awe kra funcionou vlw....deu um probleminha aki com o botão insert mas acho que consigo resolver..qualquer coisa eu volto aki vlw...


Responder

Gostei + 0

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

Aceitar