Fórum GENERATORS Quaise Perfeito(InterBase)....Ajuda #43019
11/03/2004
0
Estar quais perfeito .........O problema e Seguinte ....Estou no Código 10......Vou cadastra Novo Código “11&8221;
.....Caso eu desisto este código teria que volta para 10........(Problema) .... Mas não o código vai para 12 .....Tem como resolver isto.....??
Se alguém e Pode me manda um simples Programa de Exemplo com fonte de Auto-Incremento ...fico muito grato .......jairoliga@ig.com.br .................[ ]........Jairo
procedure TForm1.Button1Click(Sender: TObject);
begin
IBTransaction1.StartTransaction;
if not IBStoredProc1.Prepared then
IBStoredProc1.Prepare;
IBStoredProc1.ExecProc;
Edit1.Text := IntToStr(IBStoredProc1.ParamByName(´ATUAL´).AsInteger);
IBTransaction1.Commit;
end;
Jairo-go
Curtir tópico
+ 0Posts
11/03/2004
Afarias
|(Problema) .... Mas não o código vai para 12 .....Tem como resolver
|isto.....??
NÃO RESOLVE! Está PERFEITO para quem trabalha em rede com sistemas multi-usuário -- é exatamente assim q valores incrementais devem funcionar em SGBDs
Se vc voltar o número!! Um abraço:: Vai pintar erro na telinha! (a não ser q seu sistema não seja usado em rede por mais q uma pessoa simultâneamente)
T+
Gostei + 0
11/03/2004
Jairo-go
Gostei + 0
12/03/2004
Marbravo
execute o codigo quando for confirmar o cadastro
IBTransaction1.StartTransaction; if not IBStoredProc1.Prepared then IBStoredProc1.Prepare; IBStoredProc1.ExecProc; Edit1.Text := IntToStr(IBStoredProc1.ParamByName(´ATUAL´).AsInteger); IBTransaction1.Commit;
Caso queira exibir o numero do registro durante o cadastro execute esse codigo ao inserir:
TABLE.Last; VAR := TABLERegistro.asinteger; TABLE.Insert; TABLERegistro.Asinteger := VAR;
espero ter ajudado
Gostei + 0
12/03/2004
Afarias
Bom... mas o IB/FB são feitos para Rede!
De qualquer forma, se não for usar seu sistema em rede, tudo bem voltar o valor do generator, não vai ter problemas -- para ´voltar´ o código de um generator basta passar -1 no GEN_ID::
select gen_id(generator, -1) from rdb$database
ou em uma SP::
i = gen_id(generator, -1);
(simplesmente cancelar ou dar um Rollback não voltará o código)
No mais, vc devia seguir o conselho do MarBravo e ´criar´ o código apenas quando for confirmado a gravação, assim vc teria menos ´buracos´ de códigos, e seu sistema poderia funcionar em rede se fosse necessário no futuro!
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)