GENERATORS Quaise Perfeito(InterBase)....Ajuda
Ai pessoal tudo bem?.........Eu peguei este exemplo no site de como auto-incrementa o código em Procedures...........Estar abaixo.....
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;
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
Curtidas 0
Respostas
Afarias
11/03/2004
|.....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.....??
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+
|(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
Jairo-go
11/03/2004
Farias tb? meu sistema não esta em Rede..............
GOSTEI 0
Marbravo
11/03/2004
Eu tinha esse problema no inicio.
execute o codigo quando for confirmar o cadastro
Caso queira exibir o numero do registro durante o cadastro execute esse codigo ao inserir:
espero ter ajudado
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
Afarias
11/03/2004
|Farias tb? meu sistema não esta em Rede..............
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+
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